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

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

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

Amazon EventBridge を使用して、AWS Step Functionsステートマシンは、イベント発生時またはスケジュールに従って。

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

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

このチュートリアルでは、シンプルなHelloworldステートマシンを使用するには、Amazon Simple Storage Service (Amazon S3) バケットにファイルを追加する必要があります。次に、その実行のサンプル入力を確認して、AWS CloudTrail​ からの入力にどのような情報が含まれているかを確認します。

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

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

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

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

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

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

  1. に移動します。Amazon S3 コンソール[] を選択してから、[バケットを作成する

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

    注記

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

  3. [Create] を選択します。

ステップ 2: 証跡の作成AWS CloudTrail

Amazon S3 バケットを作成したら、CloudTrail に証跡を作成します。

Amazon S3 の API イベントが Amazon EventBridge ルールを満たすには、それらのイベントを受信するように CloudTrail で証跡を設定する必要があります。

  1. AWS CloudTrail コンソールを開きます。

  2. [Trails (証跡)] を選択し、[Create trail (証跡の作成)] を選択します。

  3. [証跡名] に、S3Event と入力します。

  4. 選択既存の S3 バケットを使用する

  5. を使用する場合トレイルログバケット名[] に、作成しておいた Amazon S3 バケットの名前を入力します。username-sfn-tutorial(ステップ 1: Amazon S3 にバケットを作成する).

  6. Select[Enabled (有効)]ログファイルの SSE-KMS 暗号化暗号化を無効にするには、次の手順に従います。

    注記

    オプションで、暗号化を有効にすることもできます。ログファイルの SSE-KMS 暗号化をクリックし、任意の名前をAWS KMSaliasキーを作成するには、を使用します。

  7. 選択,,証跡の作成

ステップ 3: Amazon EventBridge ルールの作成

ステートマシンが用意され、Amazon S3 バケットとAWS CloudTrailで、Amazon EventBridge ルールを作成します。

注記

Amazon EventBridge は、同じAWSAmazon S3 バケットとしてのリージョン。

ルールを作成するには

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

  2. Eclipseパターンを定義する] で、[イベントパターン

  3. Eclipseイベントマッチングパターン] で、[サービスによる定義済みパターン

  4. Eclipseサービスプロバイダー] で、[AWS

  5. Eclipseサービス名] で、[Simple Storage Service (S3)

  6. [イベントタイプ] で、[Object Level Operations (オブジェクトレベルのオペレーション)] を選択します。

  7. [特定のオペレーション] を選択したら、[PutObject] を選択します。

    注記

    オブジェクトのサイズが PutObject オペレーションで使用されているマルチパートしきい値より大きい場合、ログに記録される AWS CloudTrail API は PutObject ではなく CompleteMultipartUpload になります。参照,マルチパートアップロードの概要()AWS CloudTrailユーザーガイド

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

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

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

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

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

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

  3. [Create] を選択します。

  4. 「」と入力します。名前(たとえば、S3StepFunctions) で、[Enabled (有効)]for州/地域[] を選択してから、[ルールの作成

    [ルールの詳細を設定する] セクションは次のようになります。

    
                            ルールの詳細の設定

    ルールが作成され、ルールページが表示されてすべての 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": "8d6f9246-b781-44f8-a026-f1c1ab2c61f0", "detail-type": "AWS API Call via CloudTrail", "source": "aws.s3", "account": "123456789012", "time": "2018-09-12T00:25:10Z", "region": "us-east-2", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/username", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "username", "sessionContext": { "attributes": { "creationDate": "2018-09-11T20:10:38Z", "mfaAuthenticated": "true" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2018-09-12T00:25:10Z", "eventSource": "s3.amazonaws.com", "eventName": "PutObject", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.34", "userAgent": "signin.amazonaws.com", "requestParameters": { "X-Amz-Date": "20180912T002509Z", "bucketName": "username-sfn-tutorial", "X-Amz-Algorithm": "AWS4-HMAC-SHA256", "x-amz-acl": "private", "X-Amz-SignedHeaders": "content-type;host;x-amz-acl;x-amz-storage-class", "X-Amz-Expires": "300", "key": "test.png", "x-amz-storage-class": "STANDARD" }, "responseElements": null, "additionalEventData": { "x-amz-id-2": "IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km" }, "requestID": "79104EXAMPLEB723", "eventID": "cdc4b7ed-e171-4cef-975a-ad829d4123e8", "readOnly": false, "resources": [ { "type": "AWS::S3::Object", "ARN": "arn:aws:s3:::username-sfn-tutorial-2/test.png" }, { "accountId": "123456789012", "type": "AWS::S3::Bucket", "ARN": "arn:aws:s3:::username-sfn-tutorial" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } }