スキップしてコンテンツを表示

Amazon EventBridge ルールを使用して、S3 へのアップロード時に AWS Step Function ステートマシンをトリガーする方法を教えてください。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) バケットへのファイルの追加時に、AWS Step Function ステートマシンをアクティブにしたいです。

簡単な説明

Amazon EventBridge ルールを使用すると、オブジェクトが Amazon S3 バケットにアップロードされたときに Step Function のステートマシンをアクティブにすることができます。開始するには、次のリソースが必要です。

  • オブジェクトのアップロード対象となる S3 バケット
  • 実行するステートマシン
  • オブジェクトが S3 バケットにアップロードされたときにステートマシンを呼び出す EventBridge ルール
  • 必要なタスク用の Step Function

解決策

Amazon S3 にバケットを作成する

次の手順を実行します。

  1. Amazon S3 コンソールを開き、[バケットの作成] を選択します。
  2. [バケット名] に名前を入力します。
  3. [バケットを作成] を選択します。

EventBridge で Amazon S3 Event Notification を有効にする

次の手順を実行します。

  1. Amazon S3 コンソールを開き、[バケット] を選択します。。
  2. イベントをアクティブにするバケットを選択し、[プロパティ] を選択します。
  3. [Amazon EventBridge] セクションで [編集] を選択します。
  4. [このバケットのすべてのイベントに関する通知を Amazon EventBridge に送信する] セクションで [On] を選択します。
  5. [変更を保存] を選択します。

ステートマシンを設定する

Steps Function コンソールを開き、手順に従ってステートマシンを作成します。

EventBridge ルールを作成する

次の手順を実行します。

  1. EventBridge コンソールを開き、[ルールを作成] を選択します。
  2. [名前] に、ルールの名前を入力します。
  3. [ルールタイプ][イベントパターンを含むルール] を選択し、[次へ] を選択します。
  4. [イベントパターンの作成] ページの [イベントパターン] セクションで、次のように選択します。
    [イベントソース][AWS サービス] を選択します。
    [AWS サービス][Simple Storage Service (S3)] を選択します。
    [イベントタイプ][Amazon S3 Event Notification] を選択します。
    [イベントタイプ仕様 1][特定のイベント] を選択します。
    [特定のイベント] ドロップダウンリストを選択し、
    [オブジェクトの作成時]
    を選択します。
    [イベントタイプ仕様 2][名前別の特定のバケット] を選択します。
    [名前別の特定のバケット] に以前に作成したバケットの名前を入力し、[次へ] を選択します。
  5. [ターゲットの選択] ** ページで、次の用に選択します。
    [ターゲット 1][AWS サービス] を選択します。
    [ターゲットを選択] ドロップダウンリストを選択し、
    [Step Functions ステートマシン]** を選択します。
    [ステートマシン] ドロップダウンリストを選択し、以前に作成したステートマシンを選択します。
    [次へ] を選択します。
  6. [タグの設定 (オプション)]ページで、[次へ] を選択します。
  7. [確認と作成] ページで、[ルールを作成] を選択します。

(オプション) S3 バケットのサブフォルダのイベントを監視する

プレフィックスマッチングを使用するようにイベントパターンを変更し、特定の S3 バケットのサブフォルダでイベント通知が発生したときに EventBridge ルールをトリガーします。

次のイベントパターンの例では、example-folder という名前のサブフォルダに S3 オブジェクトが作成されたときに、EventBridge ルールがトリガーされます。

{
  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "Object Created"
  ],
  "detail": {
    "bucket": {
      "name": [
        "bucket-name"
      ]
    },
    "object": {
      "key": [
        {
          "prefix": "example-folder"
        }
      ]
    }
  }
}

注:

  • EventBridge で S3 Event Notifications を有効にするために行った変更は、完了に約 5 分かかります。したがって、ルールを有効化した後すぐには、S3 イベントの発生時にトリガーされません。
  • ルールがトリガーされない場合は、S3 バケットとイベントルールが同じ AWS リージョンにあることを確認してください。
AWS公式更新しました 1年前
コメントはありません