翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
イベントに応答して Step Functions ワークフローを開始する
AWS Step Functions ステートマシンは、Amazon EventBridge ルールによってターゲットとして Step Functions にルーティングされるイベントに応答して実行できます。
次のチュートリアルでは、Amazon EventBridge ルールのターゲットとしてステートマシンを設定する方法を示します。Amazon Simple Storage Service (Amazon S3) バケットにファイルを追加するたびに、EventBridge ルールはステートマシンを起動します。
このアプローチの実例には、バケットに追加されたイメージファイルに対して Amazon Rekognition 分析を実行してキーワードを分類して割り当てるステートマシンがあります。
このチュートリアルでは、Amazon S3 バケットにファイルをアップロードすることにより、Helloworld
ステートマシンの実行を開始します。次に、その実行の入力例を確認して、EventBridge に配信される Amazon S3 イベント通知からの入力に含まれる情報を確認します。
前提条件: ステートマシンを作成する
Amazon EventBridge ターゲットとしてステートマシンを構成する前に、ステートマシンを作成する必要があります。
-
基本的なステートマシンを作成する場合は、「Lambda 関数を使用するステートマシンの作成」のチュートリアルを使用してください。
-
既に
Helloworld
ステートマシンがある場合は、次のステップに進みます。
ステップ 1: Amazon S3 バケットを作成する
Helloworld
ステートマシンを作成したら、次に Amazon S3 バケットを作成する必要があります。このチュートリアルのステップ 3 で、バケットにファイルがアップロードされると、EventBridge によってステートマシンの実行をトリガーするようにルールを設定します。
-
Amazon S3 コンソール
に移動し、[バケットを作成] を選択してファイルを保存するバケットを作成し、Amazon S3 イベントルールをトリガーします。 -
[Bucket name] (バケット名) を入力します (例:
)。username
-sfn-tutorial注記
バケット名は、Amazon S3 のすべての AWS リージョンのすべての既存のバケット名で一意である必要があります。この名前を一意にするには、自分の
ユーザーネーム
を使用します。同じ AWS リージョンにすべてのリソースを作成する必要があります。 -
ページのデフォルトの選択をすべて維持して、[バケットを作成] を選択します。
ステップ 2: EventBridge で Amazon S3 イベント通知を有効にする
Amazon S3 バケットを作成したら、S3 バケットで特定のイベント (ファイルのアップロードなど) が発生したときにイベントを EventBridge に送信するように設定します。
-
Amazon S3 コンソール
に移動します。 -
[Buckets (バケット)] リストで、イベントを有効にするバケットの名前を選択します。
-
[プロパティ] を選択します。
-
ページを下にスクロールして [イベント通知] セクションを表示し、[Amazon EventBridge] サブセクションで [編集] を選択します。
-
[このバケット内のすべてのイベント用の Amazon EventBridge に通知を送信する] の下にある [On] を選択します。
-
[Save changes] (変更の保存) をクリックします。
注記
EventBridge を有効にすると、変更が適用されるまで約 5 分かかります。
ステップ 3: Amazon EventBridge ルールを作成する
ステートマシンの作成後に Amazon S3 バケットの追跡を作成したら、EventBridge ルールを作成します。
注記
EventBridge ルールは、Amazon S3 バケットと同じ AWS リージョンで設定する必要があります。
ルールを作成するには
-
Amazon EventBridge コンソール
に移動して、[Create rule] (ルールの作成) を選択します。 ヒント
または、EventBridge コンソールのナビゲーションペインで、[バス] の [ルール] を選択し、次に [ルールの作成] を選択します。
-
ルールの [名前] (例:
) を入力し、(オプション) ルールの [説明] を入力します。S3Step Functions
-
[イベントバス] と [ルールタイプ] は、デフォルト設定のままにします。
-
[Next (次へ)] を選択します。これにより、[イベントパターンを構築] ページが開きます。
-
[イベントパターン] セクションまでスクロールして、次の操作を行います。
-
[イベントソース] で、デフォルトの [AWS イベントまたは EventBridge パートナーイベント] を選択したままにします。
-
[AWS サービス] で、[Simple Storage Service (S3)] を選択します。
-
[イベントタイプ] には、[Amazon S3 イベント通知] を選択します。
-
[特定のイベント] を選択し、次に [オブジェクトの作成] を選択します。
-
[名前別の特定のバケット] を選択し、ステップ 1 で作成したファイルを保存するバケット名 (
) を入力します。username
-sfn-tutorial -
[Next (次へ)] を選択します。これにより、[ターゲットを選択] ページが開きます。
-
ターゲットを作成するには
-
[ターゲット 1] では、デフォルトの [AWS サービス] を選択したままにします。
-
[ターゲットを選択] ドロップダウンリストで、[Step Functions ステートマシン] を選択します。
-
[ステートマシン] リストで、以前に作成したステートマシン (例:
Helloworld
) を選択します。 -
ページのデフォルトの選択をすべて維持して、[次へ] を選択します。これにより、[タグを設定] ページが開きます。
-
[次へ] をもう一度選択します。これにより、[レビューして作成] ページが開きます。
-
ルールの詳細を確認し、ルールの作成 を選択します。
ルールが作成され、[Rules] (ルール) ページが表示されてすべての Amazon EventBridge ルールがリストされます。
ステップ 4 : ルールをテストする
すべて準備ができたので、Amazon S3 バケットへのファイルの追加をテストして、ステートマシンが実行された結果の入力を確認します。
-
Amazon S3 バケットにファイルを追加します。
Amazon S3 コンソール
に移動して、ファイルを保存するために作成したバケット (
) を選択し、[アップロード] を選択します。username
-sfn-tutorial -
ファイル (例:
) を追加し、次に [アップロード] を選択します。test.png
これによりステートマシンの実行が起動され、 AWS CloudTrail からの情報が入力として渡されます。
-
ステートマシンの実行をチェックします。
Step Functions コンソール
に移動して、Amazon EventBridge ルールで使用されているステートマシン ( Helloworld
) を選択します。 -
そのステートマシンの最新の実行を選択して、[実行の入力] セクションを展開します。
この入力には、バケット名やオブジェクト名などの情報が含まれています。実際のユースケースでは、この入力を使用してステートマシンがそのオブジェクトに対してアクションを実行できます。
実行入力の例
次の例では、ステートマシン実行への一般的な入力を示しています。
{ "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:::
" ], "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" } }
username
-sfn-tutorial