Step EventBridge Functions による呼び出し - AWS Step Functions

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

Step EventBridge Functions による呼び出し

Step Functions AWS は特定のサービスを Amazon ステートメント言語 (ASL) から直接制御できます。詳細については、「他の サービスでの使用」および「サービス API にパラメータを渡す」を参照してください。

EventBridge 最適化インテグレーションは EventBridge AWS SDK インテグレーションとどう違うのか
  • 実行 ARN とステートマシン ARN は、各 PutEventsRequestEntryResources フィールドに自動的に追加されます。

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

IAMStep Functions AWS 他のサービスと併用する場合の権限の設定方法については、を参照してください統合サービスの IAM ポリシー

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

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

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

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

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

注記

Step Functions のタスクには入力データまたは結果データの最大サイズにはクォータがあります。これにより、別のサービスとの間でデータを送受信するときに、UTF-8 でエンコードされた文字列として 256 KB のデータに制限されます。ステートマシンの実行に関連するクォータ を参照してください。

サポートされている 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 入力配列から成功したエントリを削除しません。代わりに、元のエントリの配列を使って再試行します。