3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon S3 イベント通知を試してみた

Posted at

背景・目的

今まで、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バケットの設定

  1. バケットを作成します。
    image.png

  2. 該当するS3バケットのプロパティ>イベント通知のEventBridgeサブセクションの「編集」をクリックします。
    image.png

  3. このバケット内の全てのイベントについて Amazon EventBridgeに通知を送信するを「オン」に変更し、「変更の保存」をクリックします。
    image.png

SNSの設定

  1. 下記を入力し、トピックを作成します。
    image.png
  2. サブスクリプションの作成をクリックします。
    image.png
  3. 下記を入力し、サブスクリプションの作成をクリックします。
    • トピックには、作成したトピックを指定
    • プロトコルには、Eメール
    • エンドポイントは、メールアドレスを指定
      image.png
  4. しばらくするとメールが送られてくるので、メール本文のConfirm Subscriptionをクリックすると、SNSのステータスが「確認済み」に変わります。
    image.png

イベントルールの設定

イベントパターンの特定のバケットを指定する場合、S3パス(s3://XXX)や、ARNではなく、バケット名だけ指定します。

  1. EventBridgeのナビゲーションペインで、「ルール」>「ルールを作成」をクリックします。
    image.png

  2. 下記を入力し、「次へ」をクリックします。

    • 名前
    • イベントバスはDefault
    • ルールタイプは、イベントパターンを持つルールを選択
      image.png
  3. 下記を入力し、「次へ」をクリックします。

    • AWS イベントまたは EventBridge パートナーイベント
    • 作成のメソッドは、「パターンフォームを使用する」
    • イベントパターン
      • イベントソースは、AWSサービス
      • AWSのサービスは、S3
      • イベントタイプは、S3イベント通知
      • 特定のイベントは、Object Created
      • 特定のバケット(名前別)は、作成したS3バケット名
        image.png
        image.png
  4. 下記を入力し、「次へ」をクリックします。

    • ターゲットタイプは、「AWSのサービスはのサービス」
    • ターゲットを選択は、「SNSトピック」
    • トピックは、作成したトピック名
      image.png
  5. タグの設定、確認画面を経て「作成」をクリックします。

単一ファイルをPutしたときの確認

  1. S3バケットにファイルをアップロードします。
    image.png

  2. 下記のようなメールが届きます。

    • バケット名とオブジェクト名、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したときの確認

  1. S3バケットにファイルを複数アップロードします。
    image.png

  2.  やはり下記のように、複数の通知(メール)が届きました。
    image.png

考察

今回はメールで通知としましたがLambdaやSQS/SNSと連携することで色々と可能性は広がりそうです。

参考

3
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?