​Amazon S3 イベント発生時にステートマシンの実行をスタートする - AWS Step Functions

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

​Amazon S3 イベント発生時にステートマシンの実行をスタートする

AWS Step Functionsステートマシンは、Amazon EventBridge ルールに従って、またはスケジュールに従って実行できます。

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

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

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

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

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

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

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

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

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

    注記

    バケット名は必ず、Amazon S3 のすべての AWS リージョン内の既存バケット名の中で一意になるようにします。この名前を一意にするには、自分のユーザーネームを使用します。すべてのリソースは同じ AWS リージョン内に作成する必要があります。

  3. ページ上のデフォルトの選択をすべてそのままにして、[Create bucket] を選択します。

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

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

  1. [Amazon S3 console] (Amazon S3 のコンソール) に移動します。

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

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

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

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

  6. [変更の保存] を選択します。

    注記

    有効にすると EventBridge、変更が適用されるまで約 5 分かかります。

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

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

注記

EventBridge ルールは、Amazon S3 バケットと同じAWSリージョンに設定する必要があります。

ルールを作成するには

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

  2. ルールの名前 (例:S3StepFunctions) を入力し、オプションでルールの説明を入力します

  3. ページのデフォルト選択をすべてそのままにして、[次へ] を選択します。

  4. イベントパターンの作成」ページで、「イベントパターン」セクションまでスクロールし、次の操作を行います。

    1. イベントソースについては、デフォルトの選択のままにします。

    2. AWSサービスについては、[Simple Storage Service (S3)] を選択します。

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

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

    5. [Specific bucket (s) by name] を選択し、ステップ 1 (username-sfn-tutorial) で作成したバケット名を入力して、ファイルを保存します。

    6. [Next] (次へ) を選択します。

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

  1. Target 1 で、AWSサービスが選択されていることを確認します

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

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

  4. ページのデフォルト選択をすべてそのままにして、[次へ] を選択します。

  5. もう一度 [次へ] を選択し、[確認と作成] ページでルールの詳細を確認します

  6. [ルールの作成] を選択します。

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

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

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

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

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

  2. たとえば、ファイルを追加してtest.png、[アップロード] を選択します。

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

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

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

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

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

実行入力の例

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

{ "version": "0", "id": "6c540ad4-0671-9974-6511-756fbd7771c3", "detail-type": "Object Created", "source": "aws.s3", "account": "123456789012", "time": "2022-02-19T01:36:58Z", "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" } }