LoginSignup
15
14

More than 5 years have passed since last update.

Amazon S3 Event Notificationsを設定してみる

Last updated at Posted at 2014-11-14

Event Notifications

現在ラスベガスで開催されているAWS re:InventにてS3の新機能が発表されました。

S3にオブジェクトがアップロードされたり上書きした際に、通知を送ることができます。
通知は、Amazon SNS/ Amazon SQS/ AWS Lambdaの3つの方法で実行することができます。
(AWS Lambdaはまだプレビュー版で、使うにはManagementConsoleからリクエストを送る必要があります。)

既にいろんな人が試していると思いますが、SNSでの設定してみました。
ざっくりと3ステップで設定できます。ただ、僕はSNSのポリシー設定でハマりました・・・。
とにかく、やってみましょう。

S3のバケットを作る

Tokyoリージョンで作ります。
S3とSNSのリージョンは同じである必要があります。

S3_Management_Console.png

SNSのトピックを作る

Tokyoリージョンを選択します。

S3_Management_Console.png

SNS_Management_Console.png

Subscriptionを作成します。
EndpointにはSNSを受け取るメールアドレスを入力します。
通常のメール形式でも受け取れますが、今回はEMailJSONという形式を選択してみます。

SNS_Management_Console.png

Subscriptionを作成すると、以下のような画面が表示されます。
設定したメールアドレスに認証用メールが届いているはずです。
SubscribeURLのリンクへアクセスして認証を完了します。

SNS_Management_Console.png

TopicActionボタンより、「View/Edit Topic policy」を選択します。

SNS_Management_Console.png

SNS_Management_Console.png

Condition以下を下記のように書き換えます。

"Condition": {
    "ArnLike": {
      "aws:SourceArn": "arn:aws:s3:*:*:s3-event-test"
    }

S3のEvents設定をする

Eventには ObjectCreated(ALL),Put,Post,Copy,ComputeMultiPatUploadの4種類選べます。
今回は全てのイベント(ALL)を選択しました。

S3_Management_Console.png

S3_Management_Console.png

正常に保存できれば以下の様な感じになります。
エラーになる場合は、ポリシー設定周りを確認するのがいいかと思います。

S3_Management_Console.png

動作確認

あとはS3に適当なファイルをアップロードしています。
アップロード完了後、登録したアドレスにメールが届いていたら成功です。

こんな感じのJSONが届いています。

{
  "Type" : "Notification",
  "MessageId" : "5230ec36-054e-5b4a-9be2-a0e9c65627ab",
  "TopicArn" : "arn:aws:sns:ap-northeast-1~:s3-event-topic",
  "Subject" : "Amazon S3 Notification",
  "Message" : "{\"Records\":[{\"eventVersion\":\"2.0\",\"eventSource\":\"aws:s3\",\"awsRegion\":\"ap-northeast-1\",\"eventTime\":\"2014-11-14T08:44:08.186Z\",\"eventName\":\"ObjectCreated:Put\",\"userIdentity\":{\"principalId\":\"ACXAST529TQXX\"},\"requestParameters\":{\"sourceIPAddress\":\"10.115.144.24\"},\"responseElements\":{\"x-amz-request-id\":\"90BC3EA8CFE5595C\",\"x-amz-id-2\":\"UFr7b4eZQmPVauENR6Zb7zB40GrxhxMVUHLqhzq6sX3fNybfo/DV23yCNE0xEuQw\"},\"s3\":{\"s3SchemaVersion\":\"1.0\",\"configurationId\":\"upload-event\",\"bucket\":{\"name\":\"s3-event-test\",\"ownerIdentity\":{\"principalId\":\"ACXAST529TQXX\"},\"arn\":\"arn:aws:s3:::s3-event-test\"},\"object\":{\"key\":\"car.txt\",\"size\":120,\"eTag\":\"782a329be052f76a716f238ef7c69b52\"}}}]}",

  (省略)
}

以上。
Lambda Functionの実行も早く試してみたいですねー

15
14
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
15
14