使用 Step Functions 添加 EventBridge 事件 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Step Functions 添加 EventBridge 事件

Step Functions 提供了与亚马逊集成的服务集成API EventBridge。了解如何通过直接从 Step Functions 工作流程发送自定义事件,来构建事件驱动型应用程序。

要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务在 Step Functions API 中向服务传递参数

优化 EventBridge 集成的关键功能
  • 执行ARN和状态机ARN会自动附加到每个ResourcesPutEventsRequestEntry字段中。

  • 如果来自 PutEvents 的响应包含非零的 FailedEntryCount,则 Task 状态会失败,并出现错误 EventBridge.FailedEntry

要使用 PutEventsAPI,你需要在账户中创建一个与你要发送的事件的特定模式相匹配的 EventBridge 规则。例如,您可以:

  • 在您的账户中创建 Lambda 函数,用于接收和打印与规则匹配的事件。 EventBridge

  • 在您的账户中使用默认事件总线创建一条 EventBridge 规则,该规则与特定事件模式相匹配并以 Lambda 函数为目标。

有关更多信息,请参阅:

以下内容包含一个发送自定义事件的 Task

{ "Type": "Task", "Resource": "arn:aws:states:::events:putEvents", "Parameters": { "Entries": [ { "Detail": { "Message": "MyMessage" }, "DetailType": "MyDetailType", "EventBusName": "MyEventBus", "Source": "my.source" } ] }, "End": true }
注意

在 Step Functions 中,任务的最大输入或结果数据大小有一个配额。这会限制您在向其他服务发送数据或从其他服务接收数据时,以 -8 编码字符串形式存储 256 KiB 的数据。UTF请参阅 与状态机执行相关的配额

支持 EventBridge API

支持的 EventBridge API语法包括:

错误处理

PutEventsAPI接受一个条目数组作为输入,然后返回一个结果条目数组。只要PutEvents操作成功,即使一个或多个条目失败,PutEvents也会返回 HTTP 200 响应。 PutEvents返回该FailedEntryCount字段中失败的条目数。

Step Functions 会检查 FailedEntryCount 是否大于零。如果大于零,Step Functions 将以 EventBridge.FailedEntry 错误结束状态。这样,当出现失败条目时,就可以使用 Step Functions 在任务状态上的内置错误处理功能来捕捉或重试,而不需要使用额外的状态来分析响应中的 FailedEntryCount

注意

如果已实现幂等性并能安全地重试所有条目,则可以使用 Step Functions 的重试逻辑。Step Functions 不会在重试前删除 PutEvents 输入数组中的成功条目。相反,它会使用原始的条目数组进行重试。

IAM通话政策 EventBridge

以下示例模板显示了如何根据状态机定义中的资源 Amazon Step Functions 生成IAM策略。有关更多信息,请参阅Step Functions 如何为集成服务生成 IAM 策略探索 Step Functions 中的服务集成模式

PutEvents

静态资源

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "events:PutEvents" ], "Resource": [ "arn:aws:events:us-east-1:123456789012:event-bus/stepfunctions-sampleproject-eventbus" ], "Effect": "Allow" } ] }

动态资源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutEvents" ], "Resource": "arn:aws:events:*:*:event-bus/*" } ] }