EventBridgeStep Functions 执行状态更改的(CloudWatch事件) - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

EventBridgeStep Functions 执行状态更改的(CloudWatch事件)

Amazon EventBridge 是一项使您能够响应Amazon资源状态变化的Amazon服务。例如,您可以EventBridge使用以下两种方式响应 Step Functions 标准工作流程的执行状态变化:

  • 您可以配置EventBridge规则以响应 Step Functions 状态机的执行状态发生变化时发出的事件。这使您能够监控您的工作流,而不必持续不断地使用 DescribeExecution API 进行轮询。根据状态机执行的变化,您可以使用EventBridge目标启动新的状态机执行、调用Amazon Lambda函数、向 Amazon 简单通知服务 (Amazon SNS) 主题发布消息等。

  • 您也可以在中将 Step Functions 状态机配置为目标EventBridge。这使您能够触发 Step Functions 工作流程的执行,以响应来自其他Amazon服务的事件。

    有关更多信息,请参阅亚马逊EventBridge用户指南

但是,Express Workflows 不会向发送事件。EventBridge要监控 Express 工作流程的执行情况,您可以使用 CloudWatch Logs。要执行此操作,请在状态机 “执行详细信息” 页面上,选择 “监视” 和 “记录” 选项卡。在监控选项卡上,您可以查看事件的CloudWatch指标,例如执行持续时间执行错误计费内存。在日志选项卡上,您可以查看最近的日志和日志配置。

提示

要向您部署 Express 工作流程示例Amazon Web Services 账户并学习如何监控 Express 工作流程,请参阅Amazon Step Functions研讨会的 “监控 Express 工作流程 模块。

EventBridge有效载荷

EventBridge事件的定义中可以包含输入属性。对于某些事件,EventBridge事件还可以在其定义中包含输出属性。

  • 如果发送到的转义输入和转义输出的组合EventBridge超过 248KB,则将排除该输入。同样,如果转义输出超过 248KB,则输出将被排除。这是EventBridge活动配额的结果。

  • 您可以使用inputDetailsoutputDetails属性确定负载是否已被截断。有关更多信息,请参阅CloudWatchEventsExecutionDataDetails数据类型

  • 对于标准工作流程,您可以使用查看完整的输入和输出DescribeExecution

  • DescribeExecution不适用于快速工作流程。如果你想查看完整的输入/输出,你可以用标准工作流程来封装你的 Express 工作流程。另一种选择是使用 Amazon S3 ARN。有关使用 ARN 的信息,请参阅使用 Amazon S3 ARN 代替传递大型有效负载

步骤函数事件示例

以下是步骤函数向其发送事件的示例EventBridge:

在每种情况下,事件数据中的 detail 部分都提供与 DescribeExecution API 相同的信息。status 字段指明发送事件时执行的状态,根据发送的事件,状态可以是:RUNNINGSUCCEEDEDFAILEDTIMED_OUTABORTED

执行已开始

{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws::states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "RUNNING", "startDate": 1551225271984, "stopDate": null, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }

执行成功

{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "SUCCEEDED", "startDate": 1547148840101, "stopDate": 1547148840122, "input": "{}", "inputDetails": { "included": true }, "output": "\"Hello World!\"", "outputDetails": { "included": true } } }

执行失败

{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "FAILED", "startDate": 1551225146847, "stopDate": 1551225151881, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }

执行超时

{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "TIMED_OUT", "startDate": 1551224926156, "stopDate": 1551224927157, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }

执行已中止

{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "ABORTED", "startDate": 1551225014968, "stopDate": 1551225017576, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }

EventBridge在控制台中将 Step Functions 事件路由到EventBridge控制台

使用以下说明学习每当特定的 Step Functions 状态机成功完成运行时如何触发 Step Functions 状态机的执行。您可以使用 Amazon EventBridge 控制台指定要触发其执行的状态机。

  1. 在状态机的详细信息页面上,选择操作,然后选择创建EventBridge(CloudWatch事件)规则

    
            创建EventBridge事件规则

    或者,通过 https://console.aws.amazon.com/events/ 打开EventBridge控制台。在导航窗格中,选择 “总线” 下的 “规则”。

  2. 选择 Create rule(创建规则)。这将打开定义规则详细信息页面。

  3. 为您的规则输入名称(例如StepFunctionsEventRule),也可以输入规则的描述

  4. 对于事件总线规则类型,保留默认选项。

  5. 选择下一步。这将打开 “生成事件模式” 页面。

  6. 在 “事件来源” 下,保留Amazon事件或EventBridge合作伙伴活动的默认选择。

  7. 保留 “示例事件” 和 “创建方法” 部分的默认选项。

  8. 在 “事件模式” 下,执行以下操作:

    1. 事件源下拉列表中,保留默认的Amazon服务选项。

    2. Amazon服务下拉列表中,选择 Step Functions

    3. 事件类型下拉列表中,选择步骤函数执行状态更改

    4. (可选)配置特定状态、状态机 Amazon 资源名称 (ARN) 或执行 ARN。在此过程中,选择 “特定状态”,然后从下拉列表中选择 “成功”。

  9. 选择下一步。这将打开 “选择目标” 页面。

  10. 在 “目标类型” 下,保留默认的Amazon服务选项。

  11. 从 “选择目标” 下拉列表中,选择一项Amazon服务。例如,您可以启动 Lambda 函数,或者运行 Step Functions 状态机。对于此过程,选择 Step Functions 状态机

  12. 状态机下拉列表中,选择一台状态机。

  13. 在 “执行角色” 下,保留 “为该特定资源创建新角色” 的默认选择。

  14. 选择下一步。这将打开 “配置标签” 页面。

  15. 再次选择 “下一步”。这将打开 “查看并创建” 页面。

  16. 查看规则详细信息并选择 Create rule(创建规则)。

    规则已创建并显示 “规则” 页面,其中列出了您的所有亚马逊EventBridge规则。