首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StepFunction:如何在状态机的并行状态上添加日期运行条件

StepFunction:如何在状态机的并行状态上添加日期运行条件
EN

Stack Overflow用户
提问于 2022-01-03 19:18:51
回答 1查看 779关注 0票数 0

我有一个状态机,它有很多任务和并行状态。我的状态机计划每天运行,但我希望我的并行状态只在每个月的22日运行。在所有其他日子里,并行状态应该被跳过。

有什么想法/建议,我可以如何实现这个状态机日期运行条件?

代码语言:javascript
复制
{
  "StartAt": "Choice State Name?",
  "States": {
    "Choice State Name?": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.StateName",
          "IsPresent": false,
          "Next": "Daily_Job_1"
        },
        {
          "Variable": "$.StateName",
          "StringEquals": "Daily_Job_1",
          "Next": "Daily_Job_1"
        },
        {
          "Variable": "$.StateName",
          "StringEquals": "Parallel_Chain",
          "Next": "Parallel_Chain"
        },
        {
          "Variable": "$.StateName",
          "StringEquals": "Daily_Job_3",
          "Next": "Daily_Job_3"
        }
      ],
      "Default": "Job Failed"
    },
    "Job Failed": {
      "Type": "Fail"
    },
    "Daily_Job_1": {
      "Next": "Parallel_Chain",
      "Type": "Task",
      "ResultPath": null,
      "Resource": "arn:aws:states:::batch:submitJob.sync",
      "Parameters": {
        "JobDefinition": "arn:aws:batch:us-west-2:XXXXX:job-definition/dataservices-batch-job-definition-poc:1",
        "JobName": "Daily_Job_1",
        "JobQueue": "arn:aws:batch:us-west-2:XXXXX:job-queue/getting-started-job-queue-batch-poc",
        "ContainerOverrides": {}
      }
    },
    "Parallel_Chain": {
      "Type": "Parallel",
      "ResultPath": null,
      "Next": "Daily_Job_3",
      "Branches": [
        {
          "StartAt": "Daily_Job_2a",
          "States": {
            "Daily_Job_2a": {
              "Next": "Daily_Job_2b",
              // ... rest like Daily_Job_1
            },
            "Daily_Job_2b": {
              "End": true,
              // ... rest like Daily_Job_1
            }
          }
        },
        {
          "StartAt": "Daily_Job_2c",
          "States": {
            "Daily_Job_2c": {
              "Next": "Daily_Job_2d",
              // ... rest like Daily_Job_1
            },
            "Daily_Job_2d": {
              "Next": "Daily_Job_2e",
              // ... rest like Daily_Job_1
            },
            "Daily_Job_2e": {
              "End": true,
              // ... rest like Daily_Job_1
            }
          }
        }
      ]
    },
    "Daily_Job_3": {
      "End": true,
      // ... rest like Daily_Job_1
  },
  "TimeoutSeconds": 7200
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-03 21:36:10

TL;博士在决定是否运行ParallelState之前查找当前日期

ParallelState之前放置Lambda任务和双分支选择状态.Lambda根据当前日期将布尔值(javascript:(new Date).getDay() === 22)输出到$.shouldRunParallel。Lambda之后的一个新的选择状态继续到Parallel_Chain状态,如果$.shouldRunParalleltrue,则跳过它,如果是false

  1. "Parallel_Chain“和day === 22:lambda任务,选择任务true分支,Parallel_StateDaily_Job_3
  2. "Parallel_Chain”和day !== 22:lambda任务,选择任务false分支,Daily_Job_3
  3. "Daily_Job_1“第一次运行Daily_Job_1,然后继续Parallel_Chain
  4. "Daily_Job_3”运行Daily_Job_3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70570428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档