翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon S3 イベント発生時にステートマシンの実行をスタートする
Amazon EventBridge ルールに対応する AWS Step Functions ステートマシンを実行できます。
このチュートリアルでは、Amazon EventBridge ルールのターゲットとして、ステートマシンを設定する方法を説明します。このルールは、Amazon Simple Storage Service (Amazon S3) バケットにファイルが追加されたときに、ステートマシンの実行を開始します。
実際のアプリケーションでは、バケットに追加したファイルに対してオペレーションを時刻するステートマシンを起動できます。イメージやビデオファイルに対するサムネイルの作成や 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 console]
(Amazon S3 のコンソール) に移動します。 -
[Buckets (バケット)] リストで、イベントを有効にするバケットの名前を選択します。
-
[プロパティ] を選択します。
-
ページを下にスクロールして [イベント通知] セクションを表示し、[Amazon EventBridge] サブセクションで [編集] を選択します。
-
[このバケット内のすべてのイベント用の Amazon EventBridge に通知を送信する] の下にある [On] を選択します。
-
[Save changes] (変更の保存) をクリックします。
注記
EventBridge を有効にすると、変更が適用されるまで約 5 分かかります。
ステップ 3: Amazon EventBridge ルールを作成する
ステートマシンの作成後に Amazon S3 バケットの追跡を作成したら、EventBridge ルールを作成します。
注記
Amazon S3 バケットと同じ AWS リージョンで EventBridge ルールを設定する必要があります。
ルールを作成するには
-
Amazon EventBridge コンソール
に移動して、[Create rule] (ルールの作成) を選択します。 ヒント
または、EventBridge コンソールのナビゲーションペインで、[バス] の [ルール] を選択し、次に [ルールの作成] を選択します。
-
ルールの [名前] (例:
) を入力し、(オプション) ルールの [説明] を入力します。S3Step Functions
-
[イベントバス] と [ルールタイプ] は、デフォルト設定のままにします。
-
[次へ] をクリックします。これにより、[イベントパターンを構築] ページが開きます。
-
[イベントパターン] セクションまでスクロールして、次の操作を行います。
-
[イベントソース] で、デフォルトの [AWS イベントまたは EventBridge パートナーイベント] を選択したままにします。
-
[AWS サービス] で、[Simple Storage Service (S3)] を選択します。
-
[イベントタイプ] には、[Amazon S3 イベント通知] を選択します。
-
[特定のイベント] を選択し、次に [オブジェクトの作成] を選択します。
-
[名前別の特定のバケット] を選択し、ステップ 1 で作成したファイルを保存するバケット名 (
) を入力します。username
-sfn-tutorial -
[次へ] をクリックします。これにより、[ターゲットを選択] ページが開きます。
-
ターゲットを作成するには
-
[ターゲット 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