[アップデート]S3 ライフサイクルの実行アクションをAmazon EventBridgeのトリガーにすることが出来るようになりました! #reinvent

Amazon EventBridgeのトリガーにS3 ライフサイクルの実行アクションを設定する
2021.12.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!
コンサルティング部の繁松(shigematsu)です!

今回は、こちらの恩塚さんの記事([アップデート]S3のオブジェクトレベルのイベント通知がAmazon EventBridgeとシームレスに統合されました! #reinvent)のライフサイクルイベントに絞った内容のアップデートとなります。

You can now build event-driven applications using Amazon S3 Event Notifications that trigger when objects are transitioned or expired (deleted) with S3 Lifecycle, or moved within the S3 Intelligent-Tiering storage class to its Archive Access or Deep Archive Access tiers. You can also trigger S3 Event Notifications for any changes to object tags or access control lists (ACLs). You can generate these new notifications for your entire bucket, or for a subset of your objects using prefixes or suffixes, and choose to deliver them to Amazon EventBridge, Amazon SNS, Amazon SQS, or an AWS Lambda function.

S3 Lifecycleでオブジェクトが移行または期限切れ(削除)されたとき、またはS3 Intelligent-Tieringストレージクラス内でArchive AccessまたはDeep Archive Access層に移動されたときにトリガーされるAmazon S3 Event Notificationsを使用して、イベントドリブンなアプリケーションを構築できるようになりました。
また、オブジェクトのタグやアクセスコントロールリスト(ACL)に変更があった場合にも、S3イベント通知をトリガーすることができます。
これらの新しい通知は、バケット全体、または接頭辞や接尾辞を使用したオブジェクトのサブセットに対して生成することができ、Amazon EventBridge、Amazon SNS、Amazon SQS、またはAWS Lambda関数に配信することを選択できます。

S3ライフサイクルによって、オブジェクトの移動、削除がされた場合に、Amazon EventBridgeに通知を送り
Amazon SNS、Amazon SQS、AWS Lambdaのトリガーにすることが出来るようになったみたいです!

やってみた

S3でEventBridgeの通知を有効にする

まずはS3でEventBridgeの通知を有効にします。
[対象のバケット]→[プロパティ]→[Amazon EventBridge]の編集を選択

[オン]にして変更の保存

ライフサイクルルールを作成

[対象のバケット]→[管理]→[ライフサイクルルールを作成する]

今回はストレージクラスの移動と削除をトリガーにしたいと思います。
検証なので、すべてのオブジェクトに適用します。

作成後の0日でストレージクラスの移動
1日で削除するように設定していきます。
※0日の場合、作成後の午前 0時 (UTC) に実行されます。

イベントルール作成

[Amazon EventBridge]→[ルールの作成]

イベントは[特定のイベント]→[Object Storage Class Changed]と[Object Deleted]を選択します。

今回は、SNSトピックをターゲットにします。

ファイルのアップロード

ファイルをアップロードし、オブジェクトのプロパティを確認したところ
2021/12/03 09:00:00 AM JSTに削除予定となっていることを確認しました。

ライフサイクルが実行されたので確認してみる

こちらは、明日以降のライフサイクル実行後に追記します!
2021/12/03 追記
ライフサイクル実行後にメールが届きました。
2021/12/02 09:00:00 AM JSTにストレージクラス移動の通知が届くかと思っていましたが、
2021/12/03 04:27 AM JST にメールが届きました ライフサイクルルールのアクションが完了するまでには遅延が生じる場合があるようです。

実際に届いたメール文です

{"version":"0","id":"922220b7-48db-9c1a-a5e5-33cd933372d7","detail-type":"Object Storage Class Changed","source":"aws.s3","account":"000000000000","time":"2021-12-02T19:27:09Z","region":"ap-northeast-1","resources":["arn:aws:s3:::s3-lifecycle-20211201"],"detail":{"version":"0","bucket":{"name":"s3-lifecycle-20211201"},"object":{"key":"test.pdf","size":709906,"etag":"37f004b98dacee4578009cbc3f69379c"},"request-id":"350C49477F039768","requester":"s3.amazonaws.com","destination-storage-class":"INTELLIGENT_TIERING"}}

さいごに

ライフサイクルの都合上消化の悪い記事となってしまいましたが、
2~3日後に結果を追記しますので、結果も見て頂けると嬉しいです!

以上、S3のアップデートの記事でした!