による Step Functions イベント配信の自動化 EventBridge - AWS Step Functions

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

による Step Functions イベント配信の自動化 EventBridge

を使用すると EventBridge、Step Functions 標準ワークフローからイベントを選択して、追加の処理のために他の サービスに送信できます。この手法は、コンポーネントをゆるやかに接続し、リソースをモニタリングする柔軟な方法を提供します。

Amazon EventBridge は、アプリケーションコンポーネントを接続してスケーラブルなイベント駆動型アプリケーションを構築するサーバーレスサービスです。イベント駆動型アーキテクチャとは、イベントの発信と応答によって連携する、疎結合のソフトウェアシステムを構築するスタイルです。イベントは、状態の変化、または更新を表します。

EventBridge を使用して Step Functions イベントを他の サービスに配信することで、 を継続的に呼び出しDescribeExecutionAPIてステータスを取得することなく、標準ワークフローをモニタリングできます。ステートマシン実行のステータスの変更は自動的に に送信されます EventBridge 。これらのイベントを使用してサービスをターゲットにできます。例えば、イベントは AWS Lambda 関数を呼び出したり、Amazon Simple Notification Service (Amazon SNS) トピックにメッセージを発行したり、別のSFNワークフローを実行したりできます。

イベント配信の仕組み

Step Functions はイベントを生成し、すべての AWS アカウントで自動的にプロビジョニングされるデフォルトの EventBridge イベントバスに送信します。イベントバスは、イベントを受信するルーターであり、ゼロ個以上の送信先やターゲットに配信します。ターゲットは他の AWS サービスです。イベントをルールのイベントパターンと比較するイベントバスのルールを指定できます。イベントがパターンと一致する場合、イベントバスはそのイベントを指定されたターゲットに送信します。以下の図はこのプロセスを示しています。

AWS サービスは、ルール EventBridge がイベントと一致する にイベントを送信し、ターゲットに送信します。
Standard ワークフローと Express ワークフロー

標準ワークフローのみがイベントを出力します EventBridge。Express ワークフローの実行をモニタリングするには、 CloudWatch ログを使用できます。「 CloudWatch ログへのログイン」を参照してください。

Step Functions イベント

Step Functions は、次のイベントをデフォルトの EventBridge イベントバスに自動的に送信します。ルールのイベントパターンに一致するイベントは、ベストエフォートベースで指定されたターゲットに配信されます。イベントは順不同で配信される可能性があります。

詳細については、「Amazon ユーザーガイド」のEventBridge 「 イベント」を参照してください。 EventBridge

イベントの詳細のタイプ 説明

実行ステータスの変更

ステートマシン実行のステータスの変化を表します。

を使用した Step Functions イベントの配信 EventBridge

EventBridge デフォルトのイベントバスで Step Functions イベントをターゲットに送信するには、ルールを作成する必要があります。各ルールには、イベントバスで受信した各イベント EventBridge と一致するイベントパターンが含まれています。イベントデータが指定されたイベントパターンと一致する場合、 はそのイベントをルールのターゲット (複数可) に EventBridge 配信します。

イベントバスルールの詳細な作成方法については、「EventBridge ユーザーガイド」の「イベントに反応する Amazon EventBridge ルールの作成」を参照してください。

Step Functions コンソールから特定のステートマシンのイベントバスルールを作成することもできます。

  • ステートマシンの詳細ページで、アクションを選択し、EventBridgeルールの作成を選択します。

    EventBridge コンソールがルールの作成ページに開き、ステートマシンがルールのイベントソースとして選択されます。

  • EventBridge 「 ユーザーガイド」の「イベントに反応するルールの作成」で説明されている手順に従います。

Step Functions イベントに一致するイベントパターンの作成

各イベントパターンは、以下を含むJSONオブジェクトです。

  • イベントを送信するサービスを識別する source 属性。Step Functions イベントの場合、ソースは aws.states です。

  • (オプション): 照合するイベントタイプの配列を含む detail-type 属性。

  • (オプション): 照合対象となるその他のイベントデータを含む detail 属性。

例えば、以下のイベントパターンは、Step Functions のすべての実行ステータスの変更イベントと一致します。

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"] }

次の例は、実行が失敗またはタイムアウトした場合、特定のステートマシンに関連付けられた特定の実行と照合されます。

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"], "detail": { "status": ["FAILED", "TIMED_OUT"], "stateMachineArn": ["arn:aws:states:us-east-1:123456789012:stateMachine:state-machine"], "executionArn": ["arn:aws:states:us-east-1:123456789012:execution:state-machine-name:execution-name"] } }

詳細については、「EventBridge ユーザーガイド」の「Amazon EventBridge のイベントパターン」を参照してください。

イベントを使用した Step Functions ステートマシンのトリガー

Step Functions ステートマシンを EventBridge イベントバスルールのターゲットとして指定することもできます。これにより、別の AWS サービスからのイベントに応答して Step Functions ワークフローの実行をトリガーできます。

詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon ターゲット」を参照してください。 EventBridge

Step Functions イベントの詳細リファレンス

AWS サービスからのすべてのイベントには、イベントのソースである AWS サービス、イベントが生成された時刻、イベントが発生したアカウントとリージョンなど、イベントに関するメタデータを含む共通のフィールドセットがあります。これらの一般的なフィールドの定義については、「Amazon EventBridge ユーザーガイド」の「イベント構造のリファレンス」を参照してください。

さらに、各イベントには、その特定のイベントに固有のデータを含む detail フィールドがあります。

EventBridge を使用して Step Functions イベントを選択および管理する場合、次の点に留意すると便利です。

  • すべてのイベントの source フィールドは、aws.states に設定されています。

  • detail-type フィールドはイベントタイプを指定します。

    例えば、Step Functions Execution Status Change と指定します。

  • detail フィールドには、その特定のイベントに固有のデータが含まれます。

ルールが Step Functions イベントと一致するようにするイベントパターンの作成については、「Amazon EventBridge ユーザーガイド」の「イベントパターン」を参照してください。

イベントとその EventBridge 処理方法の詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon イベント」を参照してください。 EventBridge

実行ステータスの変更

ステートマシン実行のステータスの変化を表します。

sourcedetail-type のフィールドがあるのは、Step Functions イベントに特定の値が含まれているためです。すべてのイベントに含まれる他のメタデータフィールドの定義については、「Amazon EventBridge ユーザーガイド」の「イベント構造のリファレンス」を参照してください。

イベントの構造

{ . . ., "detail-type": "Step Functions Execution Status Change", "source"": "aws.states", . . ., "detail"": { "executionArn"" : "string", "input" : "string", "inputDetails" : { "included" : "boolean" }, "name" : "string", "output" : "string", "outputDetails" : { "included" : "boolean" }, "startDate" : "integer", "stateMachineArn" : "string", "stopDate" : "integer", "status" : "RUNNING | SUCCEEDED | FAILED | TIMED_OUT | ABORTED | PENDING_REDRIVE" } }

解説

実行ステータスの変更イベントには、定義に入力プロパティを含めることができます。イベントによっては、実行ステータスの変更イベントの定義に出力プロパティを含めることもできます。

  • に送信されたエスケープ入力とエスケープ出力の組み合わせが 248 KiB EventBridge を超える場合、入力は除外されます。同様に、エスケープされた出力が 248 KiB を超える場合、出力は除外されます。これは、イベントクォータの結果です。

  • inputDetailsoutputDetails プロパティでペイロードが切り捨てられているかどうかを判断できます。詳細については、CloudWatchEventsExecutionDataDetails データを参照してください。

  • 標準ワークフローでは、 DescribeExecution を使用して入力と出力全体を表示します。

    DescribeExecution は、Express ワークフローでは使用できません。フル入出力を表示したいのであれば、次を実行できます。

例 実行ステータスの変更: 実行が開始されました
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws::states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "RUNNING", "startDate": 1551225271984, "stopDate": null, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
例 実行ステータスの変更: 実行は成功しました
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "SUCCEEDED", "startDate": 1547148840101, "stopDate": 1547148840122, "input": "{}", "inputDetails": { "included": true }, "output": "\"Hello World!\"", "outputDetails": { "included": true } } }
例 実行ステータスの変更: 実行に失敗しました
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "FAILED", "startDate": 1551225146847, "stopDate": 1551225151881, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
例 実行ステータスの変更: タイムアウト
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "TIMED_OUT", "startDate": 1551224926156, "stopDate": 1551224927157, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null
例 実行ステータスの変更: 中止
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "ABORTED", "startDate": 1551225014968, "stopDate": 1551225017576, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }