Amazon S3のイベント通知機能を使用し、SQSキューに送ってみた。

2021.09.27

こんにちは、イムチェジョンです。
今回のブログではイベント通知(Event Notifications)する方法をまとめたいと思います。

アジェンダ

  1. Amazon S3のイベント通知とは?
  2. Amazon S3のイベント通知作成方法
  3. まとめ

1. Amazon S3のイベント通知とは?

イベント通知

Amazon S3イベント通知機能を使用すると、S3バケットで特定のイベントが発生した時にお知らせを受けることができます。
通知を有効化するには、まずAmazon S3が掲示するイベントとAmazon S3が通知を送る対象を識別する通知構成を追加してください。

イベント通知の種類

  • オブジェクトの作成イベント
  • オブジェクト削除イベント
  • オブジェクト復元イベント
  • 低冗長化ストレージ (RRS) オブジェクト消失イベント
  • レプリケーションイベント

イベントの発行先

  • Amazon Simple Notification Service (Amazon SNS)
    • 柔軟な完全管理型プッシュメッセージングサービス
    • モバイルデバイスまたは分散サービスでメッセージを伝送可能
  • Amazon Simple Queue Service (Amazon SQS) キュー
    • 拡張可能な完全管理型メッセージ待ち受けサービス
    • 他のサービスを常に可用状態に保たなくても全てのデータボリュームを伝送可能
  • AWS Lambda
    • 手軽に新しい情報に迅速に応答するアプリケーションを構築できるコンピューティングサービス
    • イメージのアップロード、アプリでの作業、ウェブサイトのクリック、または接続されたデバイスの出力などのイベントに対する回答で、ユーザが作成したコードを実行

2. Amazon S3のイベント通知作成方法

S3バケットの作成

S3バケットを作成します。
バケット名:lim-notifications-202108

SQSキューの作成

event-notificationsと繋ぐSQSキューを作成します。

SQSキューの名前だけ入力して作成をします。

作成されたSQSキューのアクセスポリシーを編集しましょう。

下のポリシーでリソースだけ自分のリソースで切り替えて編集します。

{
  "Id": "Policy1629952770055",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1629952768930",
      "Action": [
        "sqs:SendMessage"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:sqs:ap-northeast-2:************:s3-notifications",
      "Principal": "*"
    }
  ]
}

これでSQSキューが作成されました。

event-notifications作成

バケットの[プロパティ]に[イベント通知(event notifications)]で新しいイベント通知を作成できます。

イベント名:SQSEvent

ファイルが作成された時、SQSキューにイベントを伝送したいので、イベントタイプはすべてのオブジェクト作成イベントを選択

送信先:SQS キューを選択
SQS キュー を特定:SQS キュー から選択する / 上で作成したSQSキューを選択

これでevent-notificationsの作成できました。

テスト

event-notificationsの作成ができたので、ファイルをアップロードした時、とうなるか確認してみましょう。
ファイルをアップロードします。

SQSキューのページで[メッセージを送受信]クリックします。

すると、利用可能なメッセージが二つあるのを確認できます。

[メッセージをポーリング]をクリックすると、メッセージが表示されます。

内容を確認してみると、一つはテストを行うメッセージです。

もう一個のメッセージは上でアップロードしたファイルの内容が送信されています。

これでよく伝送されたのを確認しました。

3. まとめ

今回はAmazon S3のイベント通知機能を使い、SQSキュー伝送して確認することまでまとめました。