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

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

使用 Step Functions 调用 EventBridge

Step Functions 可以控制某些Amazon服务直接从 Amazon 状态语言中提供。有关使用的更多信息,请参阅。Amazon Step Functions及其集成,请参阅以下内容:

有关在将 Step Functions 他Amazon服务,请参阅集成服务的 IAM 策略

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

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

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

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

有关更多信息,请参阅:

注意

在 Step Functions 中任务的最大输入或结果数据大小有一个配额。这将限制您在向另一个服务发送或接收其数据时,将数据作为 UTF-8 编码字符串的 262,144 字节。请参阅 与状态机执行相关的配额

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

错误处理

这些区域有:PutEventsAPI 接受一个条目数组作为输入,然后返回一个结果条目数组。只要PutEvents行动成功,PutEvents将返回 HTTP 200 响应,即使一个或多个条目失败。PutEvents返回FailedEntryCount字段。

Step Functions 检查FailedEntryCount大于零。如果它大于零,则 Step Functions 将导致状态失败并出现错误EventBridge.FailedEntry。这样,您就可以使用任务状态上的 Step Functions 的内置错误处理来捕获或重试失败的条目,而不需要使用其他状态来分析FailedEntryCount从响应中的。

注意

如果您已经实现幂等性,并且可以安全地重试所有条目,则可以使用步骤函数的重试逻辑。Step Functions 不会从PutEvents输入数组,然后再重试。相反,它会使用原始条目数组重试。