Step Functions で EventBridge を呼び出す - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions で EventBridge を呼び出す

Step Functions は、Amazon States Language から、AWS の特定のサービスを直接制御することができます。AWS Step Functions との協働および統合の詳細については、以下を参照してください。

最適化された EventBridge 統合が EventBridge AWS SDK 統合との違い
  • 実行 ARN とステートマシン ARN は、各 PutEventsRequestEntryResources フィールドに自動的に追加されます。

  • PutEvents からのレスポンスにゼロ以外の FailedEntryCount が含まれるのであれば、Task 状態はエラー EventBridge.FailedEntry で失敗します。

他の AWS のサービスで Step Functions を使用して IAM を設定する方法については、統合サービスの IAM ポリシー を参照してください。

Step Functions は、Amazon EventBridge と統合するため、サービス統合 API を提供します。これにより、Step Functions ワークフローから直接カスタムイベントを送信して、イベント駆動型アプリケーションを構築できます。

PutEvents API を使用する場合、送信するイベントの特定のパターンに一致する EventBridge ルールをアカウント内に作成する必要があります。例えば、次のことができます。

  • EventBridge ルールに一致するイベントを受信して印刷する Lambda 関数をアカウントに作成します。

  • 特定のイベントパターンに一致し、Lambda 関数をターゲットとする、デフォルトのイベントバスで EventBridge ルールをアカウントで作成します。

詳細については、以下を参照してください。

注記

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 }

エラー処理

PutEvents API はエントリの配列を入力として受け取り、結果エントリの配列を返します。PutEvents アクションが成功する限り、PutEvents は、1 つ以上のエントリが失敗した場合でも、HTTP 200 レスポンスを返します。PutEventsFailedEntryCount フィールドの失敗したエントリの数を返します。

Step Functions、FailedEntryCount がゼロより大きいかどうかをチェックします。0 より大きい場合、Step Functions はエラー EventBridge.FailedEntry を使って状態を失敗させます。こうして、エントリに失敗した場合、キャッチまたは再試行のため、タスクの状態で Step Functions の組み込みエラー処理を使用できます。レスポンスから FailedEntryCount を分析する追加状態を使う必要はありません。

注記

べき等を実装し、すべてのエントリで安全に再試行できる場合は、Step Functions の再試行ロジックを使用できます。Step Functions は、再試行する前に、PutEvents 入力配列から成功したエントリを削除しません。代わりに、元のエントリの配列を使って再試行します。