Step Functions のイベントに応答してステートマシンを起動する - AWS Step Functions

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

Step Functions のイベントに応答してステートマシンを起動する

を実行できます。 AWS Step Functions Amazon EventBridge ルールに応答して ステートマシン。

このチュートリアルでは、ステートマシンを Amazon EventBridge ルールのターゲットとして設定する方法を示します。このルールは、Amazon Simple Storage Service (Amazon S3) バケットにファイルが追加されたときに、ステートマシンの実行を開始します。

実際のアプリケーションでは、バケットに追加したファイルに対してオペレーションを時刻するステートマシンを起動できます。イメージやビデオファイルに対するサムネイルの作成や Amazon Rekognition 分析の実行などです。

このチュートリアルでは、​Amazon S3 バケットにファイルをアップロードすることにより、Helloworld ステートマシンの実行を開始します。次に、その実行の入力例を確認して、 に配信される Amazon S3 イベント通知からの入力に含まれる情報を特定します EventBridge。

前提条件: ステートマシンを作成する

ステートマシンを Amazon EventBridge ターゲットとして設定する前に、ステートマシンを作成する必要があります。

ステップ 1: Amazon S3 バケットを作成する

Helloworld ステートマシンを作成したら、次に Amazon S3​ バケットを作成する必要があります。このチュートリアルのステップ 3 では、ファイルがこのバケットにアップロードされると、ステートマシンの実行が EventBridge トリガーされるようにルールを設定します。

  1. Amazon S3 コンソールに移動し、[バケットを作成] を選択してファイルを保存するバケットを作成し、Amazon S3 イベントルールをトリガーします。

  2. [Bucket name] (バケット名) を入力します (例: username-sfn-tutorial)。

    注記

    バケット名は、すべての の既存のすべてのバケット名で一意である必要があります AWS Amazon S3 のリージョン。独自の を使用する username この名前を一意にするには、 を使用します。同じ にすべてのリソースを作成する必要があります AWS リージョン。

  3. ページのデフォルトの選択をすべて維持して、[バケットを作成] を選択します。

ステップ 2: で Amazon S3 イベント通知を有効にする EventBridge

Amazon S3 バケットを作成したら、ファイルのアップロードなど、S3 バケットで特定のイベントが発生する EventBridge たびに にイベントを送信するように設定します。

  1. Amazon S3 コンソールに移動します。

  2. [Buckets (バケット)] リストで、イベントを有効にするバケットの名前を選択します。

  3. [プロパティ] を選択します。

  4. ページを下にスクロールしてイベント通知セクションを表示し、Amazon サブセクションの「編集」を選択します。 EventBridge

  5. このバケット内のすべてのイベント EventBridge について Amazon に通知を送信する でを選択します。

  6. [Save changes] (変更の保存) をクリックします。

    注記

    を有効にすると EventBridge、変更が有効になるまでに約 5 分かかります。

ステップ 3: Amazon EventBridge ルールを作成する

ステートマシンがあり、Amazon S3 バケットを作成し、 にイベント通知を送信するように設定したら EventBridge、 EventBridge ルールを作成します。

注記

同じ で EventBridge ルールを設定する必要があります AWS Amazon S3 バケットとしてのリージョン。

ルールを作成するには

  1. Amazon EventBridge コンソール に移動し、ルールの作成 を選択します。

    ヒント

    または、 EventBridge コンソールのナビゲーションペインで、バスルール を選択し、ルール の作成 を選択します。

  2. ルールの [名前] (例: S3Step Functions) を入力し、(オプション) ルールの [説明] を入力します。

  3. [イベントバス][ルールタイプ] は、デフォルト設定のままにします。

  4. [Next (次へ)] を選択します。これにより、[イベントパターンを構築] ページが開きます。

  5. [イベントパターン] セクションまでスクロールして、次の操作を行います。

    1. イベントソース の場合、 のデフォルト選択のままにします。 AWS イベントまたは EventBridge パートナーイベント

    2. 用AWS サービス でSimple Storage Service (S3) を選択します。

    3. [イベントタイプ] には、[Amazon S3 イベント通知] を選択します。

    4. [特定のイベント] を選択し、次に [オブジェクトの作成] を選択します。

    5. [名前別の特定のバケット] を選択し、ステップ 1 で作成したファイルを保存するバケット名 (username-sfn-tutorial) を入力します。

    6. [Next (次へ)] を選択します。これにより、[ターゲットを選択] ページが開きます。

ターゲットを作成するには

  1. ターゲット 1 では、 のデフォルト選択のままにします。 AWS サービス

  2. [ターゲットを選択] ドロップダウンリストで、[Step Functions ステートマシン] を選択します。

  3. [ステートマシン] リストで、以前に作成したステートマシン (例: Helloworld) を選択します。

  4. ページのデフォルトの選択をすべて維持して、[次へ] を選択します。これにより、[タグを設定] ページが開きます。

  5. [次へ] をもう一度選択します。これにより、[レビューして作成] ページが開きます。

  6. ルールの詳細を確認し、ルールの作成 を選択します。

    ルールが作成され、ルールページが表示され、すべての Amazon EventBridge ルールが一覧表示されます。

ステップ 4 : ルールをテストする

すべて準備ができたので、Amazon S3 バケットへのファイルの追加をテストして、ステートマシンが実行された結果の入力を確認します。

  1. Amazon S3 バケットにファイルを追加します。

    Amazon S3 コンソールに移動して、ファイルを保存するために作成したバケット (username-sfn-tutorial) を選択し、[アップロード] を選択します。

  2. ファイル (例: test.png) を追加し、次に [アップロード] を選択します。

    これにより、ステートマシンの実行が起動し、 から情報を渡します。 AWS CloudTrail を入力として指定します。

  3. ステートマシンの実行をチェックします。

    Step Functions コンソールに移動し、Amazon EventBridge ルール (Helloworld) で使用されるステートマシンを選択します

  4. そのステートマシンの最新の実行を選択して、[実行の入力] セクションを展開します。

    この入力には、バケット名やオブジェクト名などの情報が含まれています。実際のユースケースでは、この入力を使用してステートマシンがそのオブジェクトに対してアクションを実行できます。

実行入力の例

次の例では、ステートマシン実行への一般的な入力を示しています。

{ "version": "0", "id": "6c540ad4-0671-9974-6511-756fbd7771c3", "detail-type": "Object Created", "source": "aws.s3", "account": "123456789012", "time": "2023-06-23T23:45:48Z", "region": "us-east-2", "resources": [ "arn:aws:s3:::username-sfn-tutorial" ], "detail": { "version": "0", "bucket": { "name": "username-sfn-tutorial" }, "object": { "key": "test.png", "size": 800704, "etag": "f31d8546bb67845b4d3048cde533b937", "sequencer": "00621049BA9A8C712B" }, "request-id": "79104EXAMPLEB723", "requester": "123456789012", "source-ip-address": "200.0.100.11", "reason": "PutObject" } }