EventBridge を使用して、S3 イベント発生時にStep Functionsを実行してみた。
Amazon EventBridge とは?
EventBridge はサーバーレスのイベントバスサービスです。EventBridgeを使用して、アプリケーションをさまざまなソースからのデータに接続できます。EventBridge は、以前は Amazon CloudWatch Events と呼ばれていました。CloudWatch Events で作成したデフォルトのイベントバスとルールも EventBridge コンソールで見ることができます。
EventBridge ルール : ルールは、受信したイベントを処理のターゲットに送信します。イベントは複数のターゲットに送信できます。
この記事では、EventBridge を使用して、S3 イベント発生時にStep Functionsを実行してみました。ファイルがS3バケットに追加されると、EventBridgeルールがStep Functionsの実行を開始します。
やってみた
Step Functionsの作成
- Step Functions コンソールで、Create state machineをクリックしておきます。
- Write your workflow in codeを選択して、TypeでStandardを選択しておきます。
- 必要に応じてコードを変更して、ステートマシン名を入力して、[Create new role]を選択して、State Machineを作成しておきます。
S3バケットの作成
- S3コンソールで、Create bucketをクリックします。
- バケット名を入力して、バケットを作成しておきます。
AWS CloudTrailの作成
S3 の API イベントが Amazon EventBridge ルールを満たすために、CloudTrail でTrailを設定する必要があります。
- CloudTrailコンソールで、Create trailを選択しておきます。
- トレイル名を入力して、Storage locationでCreate new S3 bucketを選択しておきます。
- 暗号化を無効にした、Trailを作成しておきます。
EventBridgeルールの作成
- EventBridgeコンソールで、Create Ruleを選択しておきます。
- 次の設定でDefine patternを構成しておきます。
- Event patternを選択しておきます。
- Event matching pattern : Pre-defined pattern by service
- Service provider : AWS
- サービス名 : S3
- タイプ : Object-Level API Call via CloudTrail
- Operation : Specific - PutObject
- Bucket : 前の手順で作成したバケットの名前を入力します。
- ターゲットでStep Functions state machineを選択して、以前に作成したState Machineの名前を選択して、Create a new roleを選択しておきます。
- Choose log eventsでData eventsを選択しておきます。
- データイベントタイプでS3を選択して、[Log all events]を選択して、EventBridge Ruleを作成しておきます。
S3バケットにファイルを追加する
- 作成したS3バケットにファイルを追加しておきます。
- ファイルがS3バケットに追加されると、ルールがStep Functions の実行を呼び出します。Step FunctionsコンソールでState Machineの実行をみることができます。
まとめ
EventBridge Ruleを使用して、S3 イベント発生時にStep Functionsを実行してみました。この記事では、ファイルのアップロードイベント(PutObject)をしてみました。他のS3イベントでEventBridgeルールを作成することもできます。
CloudTrailを使わない方法もあります : CloudTrailを使わないで、S3イベント通知をEventBridgeと統合することもできます。