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

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

使用 Step Functions 调用 EventBridge

Step Functions 可以直接从 Amazon States Language (ASL) 控制某些 Amazon 服务。有关使用 Amazon Step Functions 及其集成的更多信息,请参阅以下内容:

优化的 EventBridge 集成与 EventBridge Amazon 开发工具包集成有何不同
  • 执行 ARN 和状态机 ARN 会自动附加到每个 PutEventsRequestEntryResources 字段。

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

有关在将 Step Functions 与其他 Amazon 服务一起使用时如何配置 IAM 权限的信息,请参阅集成服务的 IAM 策略

Step Functions 提供了与 Amazon EventBridge 集成的服务集成 API。这样,您就可以通过直接从 Step Functions 工作流发送自定义事件来构建事件驱动型应用程序。

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

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

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

有关更多信息,请参阅:

注意

在 Step Functions 中,任务的最大输入或结果数据大小有一个配额。在向另一个服务发送数据或从另一个服务接收数据时,数据大小不得超过 256 KB(UTF-8 编码字符串)。请参阅与状态机执行相关的配额

支持的 EventBridge API

支持的 EventBridge API 和语法包括:

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

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

错误处理

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

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

注意

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