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

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

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

Amazon使えよEventBridge実行するにはAWS Step Functionsステートマシン (イベント発生時またはスケジュールに従って)。

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

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

このチュートリアルでは、単純な実行を開始します。HelloworldAmazon S3 バケットにファイルを追加することで、ステートマシン。次に、その実行のサンプル入力を確認して、に配信された Amazon S3 イベント通知からの入力にどのような情報が含まれているかを確認します。EventBridge。

前提条件: ステートマシンの作成

Amazon を設定する前にEventBridgetarget では、ステートマシンを作成する必要があります。

  • 基本的なステートマシンを作成するには、入門チュートリアルを使用します。

  • 既に Helloworld ステートマシンがある場合は、次のステップに進みます。

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

今、あなたにHelloworldステートマシン、まずファイルを保存する Amazon S3 バケットを作成する必要があります。このチュートリアルのステップ 3 で、バケットにファイルが追加されると EventBridge​ によってステートマシンの実行がトリガーされるようにルールを設定します。

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

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

    注記

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

  3. [バケットの作成] を選択します。

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

Amazon S3 バケットを作成したら、にイベントを送信するように設定します。EventBridgeS3 バケットに特定のイベント (ファイルのアップロードなど) が発生するたびに。ステップ 3 では、EventBridgeStep Functions ステートマシンなど、ターゲットにイベントをルーティングするルール。

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

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

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

  4. に移動します。イベント通知セクションを開き、アマゾンEventBridgeサブセクション。次に、[編集] を選択します。

  5. []Amazon に通知を送信するEventBridgeこのバケット内のすべてのイベントで、On

    注記

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

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

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

注記

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

ルールを作成するには

  1. に移動します。アマゾンEventBridgeコンソールで、ルールの作成

  2. 「」と入力します。名前ルールについて(たとえば、S3StepFunctions) を選択し、オプションで a を入力します。説明ルールのために。

  3. [Define pattern] (パターンの定義) で、[Event pattern] (イベントパターン)を選択します。

  4. [Event matching pattern] (イベント照合パターン) で、[Pre-defined pattern by service] (サービスごとの事前定義パターン) を選択します。

  5. [Service provide] (サービスプロバイダー) で、AWS を選択します。

  6. [Service name] (サービス名) で、[Simple Storage Service (S3)] を選択します。

  7. を使用する場合イベントタイプで、Amazon S3 イベント通知

  8. 選択特定のオペレーション[] を選択してから、[オブジェクトの作成

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

  10. でデフォルトの選択を保持するイベントバスを選択します。

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

  1. 選択Step Functions ステートマシンターゲットドロップダウンリスト、およびステートマシンリストで、ステップ 1 からステートマシンを選択します (Helloworld).

  2. アマゾンEventBridgeは、イベントの実行に必要な IAM ロールを作成できます。

    • 自動的に IAM ロールを作成するには、[この特定のリソースに対して新しいロールを作成する] を選択します。

    • 以前に作成した IAM ロールを使用するには、[Use existing role] (既存のロールの使用) を選択します。

  3. [Create] (作成) を選択します。

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

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

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

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

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

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

    これによりステートマシンの実行が起動され、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": "2022-02-19T01:36:58Z", "region": "us-east-1", "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": "203.0.113.34", "reason": "PutObject" } }