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

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

EventBridge 使用 Step Functions 调用

Step Functions 可以直接从 Amazon States Language (ASL) 控制某些 Amazon 服务。要了解更多信息,请参阅使用其他服务将参数传递给服务 API

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

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

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

Step Functions 提供了一个用于与亚马逊集成的服务集成 API EventBridge。这样,您就可以通过直接从 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 输入数组中的成功条目。相反,它会使用原始的条目数组进行重试。