

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

# イベントに応答して Step Functions ワークフローを開始する
<a name="tutorial-cloudwatch-events-s3"></a>

Amazon EventBridge ルールによってターゲットとして Step Functions にルーティングされたイベントに応答して、 AWS Step Functions ステートマシンを実行できます。

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

このアプローチの実例としては、バケットに追加された画像ファイルに対して Amazon Rekognition による分析を実行し、カテゴリ分けやキーワード割り当てを行うステートマシンが挙げられます。

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

## 前提条件: ステートマシンを作成する
<a name="tutorial-cloudwatch-events-s3-prereqs"></a>

Amazon EventBridge ターゲットとしてステートマシンを構成する前に、ステートマシンを作成する必要があります。
+ 基本的なステートマシンを作成する場合は、「[Lambda 関数を使用するステートマシンの作成](tutorial-creating-lambda-state-machine.md)」のチュートリアルを使用してください。
+ 既に `Helloworld` ステートマシンがある場合は、次のステップに進みます。

## ステップ 1: Amazon S3 バケットを作成する
<a name="tutorial-cloudwatch-events-s3-bucket"></a>

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

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)に移動し、**[バケットを作成]** を選択してファイルを保存するバケットを作成し、Amazon S3 イベントルールをトリガーします。

1. **[Bucket name]** (バケット名) を入力します (例: `username-sfn-tutorial`)。
**注記**  
バケット名は、Amazon S3 のすべての AWS リージョンのすべての既存のバケット名で一意である必要があります。この名前を一意にするには、自分の*ユーザーネーム*を使用します。同じ AWS リージョンにすべてのリソースを作成する必要があります。

1. ページのデフォルトの選択をすべて維持して、**[バケットを作成]** を選択します。

## ステップ 2: EventBridge で Amazon S3 イベント通知を有効にする
<a name="tutorial-cloudwatch-events-s3-eb-notification"></a>

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

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)に移動します。

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

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

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

1. **[このバケット内のすべてのイベント用の Amazon EventBridge に通知を送信する]** の下にある **[On]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。
**注記**  
EventBridge を有効にすると、変更が適用されるまで約 5 分かかります。

## ステップ 3: Amazon EventBridge ルールを作成する
<a name="tutorial-cloudwatch-events-s3-cwe"></a>

ステートマシンの作成後に Amazon S3 バケットの追跡を作成したら、EventBridge ルールを作成します。

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

### ルールを作成するには
<a name="tutorial-cloudwatch-events-s3-create-rule"></a>

1. [Amazon EventBridge コンソール](https://console.aws.amazon.com/events/)に移動して、**[Create rule]** (ルールの作成) を選択します。
**ヒント**  
または、EventBridge コンソールのナビゲーションペインで、**[バス]** の **[ルール]** を選択し、次に **[ルールの作成]** を選択します。

1. ルールの **[名前]** (例: `S3Step Functions`) を入力し、(オプション) ルールの **[説明]** を入力します。

1. **[イベントバス]** と **[ルールタイプ]** は、デフォルト設定のままにします。

1. [**次へ**] を選択します。これにより、**[イベントパターンを構築]** ページが開きます。

1. **[イベントパターン]** セクションまでスクロールして、次の操作を行います。

   1. **[イベントソース]** で、デフォルトの **[AWS イベントまたは EventBridge パートナーイベント]** を選択したままにします。

   1. **[AWS サービス]** で、**[Simple Storage Service (S3)]** を選択します。

   1. **[イベントタイプ]** には、**[Amazon S3 イベント通知]** を選択します。

   1. **[特定のイベント]** を選択し、次に **[オブジェクトの作成]** を選択します。

   1. **[名前別の特定のバケット]** を選択し、[ステップ 1](#tutorial-cloudwatch-events-s3-bucket) で作成したファイルを保存するバケット名 (`username-sfn-tutorial`) を入力します。

   1. [**次へ**] を選択します。これにより、**[ターゲットを選択]** ページが開きます。

### ターゲットを作成するには
<a name="tutorial-cloudwatch-events-s3-create-rule2"></a>

1. **[ターゲット 1]** では、デフォルトの **[AWS サービス]** を選択したままにします。

1. **[ターゲットを選択]** ドロップダウンリストで、**[Step Functions ステートマシン]** を選択します。

1. **[ステートマシン]** リストで、[以前に作成した](#tutorial-cloudwatch-events-s3-prereqs)ステートマシン (例: `Helloworld`) を選択します。

1. ページのデフォルトの選択をすべて維持して、**[次へ]** を選択します。これにより、**[タグを設定]** ページが開きます。

1. **[次へ]** をもう一度選択します。これにより、**[レビューして作成]** ページが開きます。

1. ルールの詳細を確認し、**ルールの作成** を選択します。

   ルールが作成され、**[Rules]** (ルール) ページが表示されてすべての Amazon EventBridge ルールがリストされます。

## ステップ 4 : ルールをテストする
<a name="tutorial-cloudwatch-events-test-rule"></a>

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

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

   [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)に移動して、ファイルを保存するために作成したバケット (`username-sfn-tutorial`) を選択し、**[アップロード]** を選択します。

1. ファイル (例: `test.png`) を追加し、次に **[アップロード]** を選択します。

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

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

   [Step Functions コンソール](https://console.aws.amazon.com/states/)に移動して、Amazon EventBridge ルールで使用されているステートマシン (`Helloworld`) を選択します。

1. そのステートマシンの最新の実行を選択して、**[実行の入力]** セクションを展開します。

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

## 実行入力の例
<a name="tutorial-cloudwatch-events-example"></a>

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

```
{
    "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:::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"
    }
  }
```