使用 Step Functions 新增 EventBridge 事件 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Step Functions 新增 EventBridge 事件

Step Functions 提供了與 Amazon 集成API的服務集成 EventBridge。瞭解如何透過直接從 Step Functions 工作流程傳送自訂事件來建置事件導向的應用程式。

若要瞭解如何整合 AWS 服務在 Step Functions 中,請參閱整合 服務和。將參數傳遞給 Step Functions 數API中的服務

最佳化 EventBridge 整合的主要功能
  • 執行ARN和狀態機ARN會自動附加到每個機器的Resources欄位中PutEventsRequestEntry

  • 如果來自的響應PutEvents包含非零,FailedEntryCountTask狀態失敗並顯示錯誤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 的內建錯誤處理,在發生失敗的項目時 catch 取或重試,而不需要使用其他狀態FailedEntryCount來分析回應。

注意

如果您已經實現了冪等性並且可以安全地重試所有條目,則可以使用步驟函數的重試邏輯。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/*" } ] }