【问题标题】:How to send the notification on every task execution in a state machine on AW step functions?如何在 AWS step 函数的状态机中发送每个任务执行的通知?
【发布时间】:2020-04-21 22:04:06
【问题描述】:

我正在开发 Amazon Step 函数,以利用多个批处理作业的工作流程。要求是批处理作业应按顺序执行,并且每当作业从一个作业转换到另一个作业时,然后将带有任务执行状态的通知发送到 SNS 主题。 我需要发送任务成功和失败的通知。

我已尝试使用 Cloudwatch 事件规则执行执行事件,但执行事件仅提供有关状态机执行的信息,而不是有关任务执行的信息。

【问题讨论】:

    标签: amazon-web-services amazon-sns aws-step-functions


    【解决方案1】:

    由于您发现 Cloudwatch 事件中没有状态,因此需要将此作为单独的步骤添加,因此无法解决此问题,请有一个执行 lambda 或 sync 到 SNS 的通知步骤。

    还有另一种方法可以做到这一点,因为您可以组合阶跃函数的阶跃函数。所以你有你的父阶梯函数和你的子阶梯函数。您的子步进函数可能是批处理作业本身,然后您可以在 batch-job-step-function 步进函数上使用 Cloudwatch 事件:

    "BatchJob" : {
          "Comment": "This snippet is in the parent step function. It will kick off another step function, called: batch-job-step-function",
          "Type": "Task",
          "Resource": "arn:aws:states:::states:startExecution.sync",
          "Parameters": {
            "StateMachineArn": "arn:aws:states:us-east-1:TODO:stateMachine:batch-job-step-function",
            "Input": {
              "batchJobInput.$": "$$.Execution.Input.batchJobInput"
            }
          },
          "End": true | "Next" : "TODO"
        }
    

    现在您可以将 Cloudwatch 事件规则针对:arn:aws:states:us-east-1:TODO:stateMachine:batch-job-step-function

    【讨论】:

    • 根据亚马逊州语言指南,您不能在同一个任务中同时使用“End”和“Next”,这就是为什么我无法在同一个任务中使用它。
    • 这只是一个示例,如果您的批处理作业是您的最后一个任务,请使用End,否则使用Next 转到您的步骤函数中的下一个任务。
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多