背景・目的
今まで、S3のイベント通知を使用したことがなかったので整理してみました。
また、今回、EventBridgeに通知を行いメールで受信するまで試してみました。
まとめ
S3から、SNS、SQS、Lambda、EventBridgeに対して通知ができます。
概要
Amazon S3 イベント通知とは
- S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることが可能。
- 通知を有効にするには、S3 から発行するイベントを識別する通知設定を追加する。
現在、S3は下記の通知が可能とのことです。
- New object created events
- Object removal events
- Restore object events
- Reduced Redundancy Storage (RRS) object lost events
- Replication events
- S3 Lifecycle expiration events
- S3 Lifecycle transition events
- S3 Intelligent-Tiering automatic archival events
- Object tagging events
- Object ACL PUT events
イベント通知のタイプおよび送信先
サポートされているイベントの送信先
- 下記の宛先にイベントの通知メッセージを送信可能とのことです。
- Amazon Simple Notification Service (Amazon SNS) のトピック
- Amazon Simple Queue Service (Amazon SQS) キュー
- AWS Lambda
- Amazon EventBridge
実践
S3バケットの設定
SNSの設定
- 下記を入力し、トピックを作成します。
- サブスクリプションの作成をクリックします。
- 下記を入力し、サブスクリプションの作成をクリックします。
- しばらくするとメールが送られてくるので、メール本文のConfirm Subscriptionをクリックすると、SNSのステータスが「確認済み」に変わります。
イベントルールの設定
イベントパターンの特定のバケットを指定する場合、S3パス(s3://XXX)や、ARNではなく、バケット名だけ指定します。
-
下記を入力し、「次へ」をクリックします。
-
下記を入力し、「次へ」をクリックします。
-
下記を入力し、「次へ」をクリックします。
-
タグの設定、確認画面を経て「作成」をクリックします。
単一ファイルをPutしたときの確認
-
下記のようなメールが届きます。
- バケット名とオブジェクト名、PutObjectであることがわかります。
{"version":"0","id":"XXXXXXXX","detail-type":"Object Created","source":"aws.s3","account":"XXXXXX","time":"2023-03-17T14:30:08Z","region":"ap-northeast-1","resources":["arn:aws:s3:::XXXXXX"],"detail":{"version":"0","bucket":{"name":"XXXXX"},"object":{"key":"noticetest4.txt","size":14,"etag":"XXXXXX","sequencer":"XXXXXX"},"request-id":"XXXXXXX","requester":"XXXXXXX","source-ip-address":"XXXXXX","reason":"PutObject"}}
複数のファイルをPutしたときの確認
考察
今回はメールで通知としましたがLambdaやSQS/SNSと連携することで色々と可能性は広がりそうです。
参考