1
1

【AWS】EventBridgeによるS3ファイルアップロードイベント起動の設定方法【EventBridge】

Last updated at Posted at 2023-11-19

はじめに

別のシステムが出力したファイルを使ってAWS環境で構築したシステムを実行する際に、そのファイルが連携されたことを検知してAWSサービスを実行したい要件があります。
今回の記事ではEventBridgeを使用したその要件の実現方法を記載しました。

使うAWSサービス

・Amazon EventBridge
・Amazon S3
・AWS StepFunctions

アーキテクチャ図

構成図.png

アーキテクチャ説明

1.S3バケットの通知設定

①S3バケットのタブメニューから「プロパティ」を選択
通知1.PNG
②「Amazon EventBridge」の「編集」ボタンを押下
通知2.PNG
③設定画面での通知を「オン」に設定する
通知5.PNG

2.EventBridgeの設定

①EventBridgeルールを作成
EB1.PNG

②S3からの通知をイベントパターンとしてターゲットを実行するように設定
※今回はObjectCreated(オブジェクトのアップロード)を検知する
EB2.PNG
※上記の設定だとバケット内のすべてのプレフィックスへのオブジェクトのアップロードが検知されてしまうため、必要に応じて「パターンを編集」ボタンから以下のような設定で検知範囲を絞ることも有効

sample
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["test-bucket"]
    }, 
    "object": {  
      "key": [{  
        "prefix": "csv/"
        CSVというフォルダにファイルがアップロードされた時だけイベントを検知する
      }]  
    } 
  }
}

③特定のバケットからの通知を拾うときはバケット名を設定する
EB3.PNG
④イベントを検知した後に実行するターゲットを設定する
EB5.PNG

3.動作確認

①S3バケットにファイルをアップロード
S3.PNG

②StepFunctionsステートマシンが起動したことを確認
StepFunctions1.PNG

さいごに

EventBridgeは定時実行で深夜のバッチ実行によく使用される。しかし定時実行の場合、連携元のシステムが正常に稼働せず、ファイルの連携が遅れた場合に古いファイルのまま実行されてしまうことになります。
これを防ぐために、S3にファイルがアップロードされたことを検知して実行するようにすることで連携元のシステムのファイル連携が遅れても確実に新しいファイルでバッチ処理を実行することができます。

※次の記事で複数ファイルが全てアップロードされてからステートマシンを実行する実装例を記載しました

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1