本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Step Functions 新增 EventBridge 事件
Step Functions 提供與 API Amazon 整合的服務整合 EventBridge。了解如何直接從 Step Functions 工作流程傳送自訂事件,以建置事件驅動的應用程式。
若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務和 將參數傳遞至 Step Functions API中的服務。
Optimized EventBridge 整合的主要功能
-
執行ARN和狀態機器ARN會自動附加到每個
Resources
的欄位PutEventsRequestEntry
。 -
如果 的回應
PutEvents
包含非零,FailedEntryCount
則Task
狀態會失敗,並顯示錯誤EventBridge.FailedEntry
。
若要使用 PutEvents
API,您需要在帳戶中建立符合您將傳送之事件特定模式的 EventBridge 規則。例如,您可以:
-
在您的帳戶中建立 Lambda 函數,該函數會接收並列印符合 EventBridge 規則的事件。
-
在預設事件匯流排上在您的 帳戶中建立規則,該 EventBridge 匯流排符合特定事件模式並鎖定 Lambda 函數。
如需詳細資訊,請參閱:
-
使用 EventBridge 使用者指南中的 來新增 Amazon EventBridge 事件 PutEvents。
-
使用任務權杖等待回呼 服務整合模式。
下列包含傳送自訂事件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 KiB 的資料做為 UTF-8 編碼字串。請參閱 狀態機器執行的相關配額。
支援的 EventBridge API
支援的 EventBridge API 和 語法包括:
錯誤處理
PutEvents
API 接受項目陣列做為輸入,然後傳回結果項目陣列。只要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/*"
}
]
}