使用 Step Functions 添加 EventBridge 事件 - AWS Step Functions

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

使用 Step Functions 添加 EventBridge 事件

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

要了解如何与集成 AWS Step Functions 中的服务,参见集成 服务和。在 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 中,任务的最大输入或结果数据大小有一个配额。这样,当您向其他服务发送数据或从其他服务接收数据时,您只能使用 256 KB 的数据作为 UTF -8 编码的字符串。请参阅 与状态机执行相关的配额

支持的 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

以下示例模板演示了如何操作 AWS 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/*" } ] }