【新機能】S3 Event NotificationにDeleteイベントが追加されました

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

本日、S3の新機能「Event Notification for Delete Event」が発表されました!

re:Invent 2014の際に発表されたS3 Event Notificationは、S3オブジェクトの作成・更新をトリガーとして、

  • SNSへの通知
  • SQSへのメッセージ送信
  • LambdaのInvoke

のいずれかを実行することができるようになりましたが、これまでは削除時にイベントを発火させることができませんでした。

ですが、今日のアップデートでオブジェクト削除時の通知が可能になったようです。早速やってみましょう!

設定

S3のManagement Consoleを開き、バケット一覧の右側で「Events」の部分を開きます。

S3_Management_Console Deleteが選択できるようになっていますね。今回はSNSでメールを送ってみます。

SNSのトピックには私のメールアドレスを登録しておきました。ひとつ注意点として、SNSのTopicにはS3からのPublishを許可するポリシーを記述しておく必要があることに気をつけてください。以下のドキュメント・ブログを参考にポリシーを記載して下さい。

今回は、このバケットに存在するファイル全てに対して、削除された際にEventが発生する設定にしました。「NotifyMe」というのが、今回利用したSNS Topic Nameです。

全画面_2015_07_28_15_30 それでは、このバケットに試しに保存した「tmp.txt」を削除してみましょう。

Management Consoleから削除を実施した後、ブラウザのタブをGmailに切り替えているうちにメールが届いていました!早いですね。

Amazon_S3_Notification_-_mochizuki_masao_classmethod_jp_-_Classmethod_jp_Mail

このままでは見づらいので、整形して中身を確認してみます。

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventSource": "aws:s3",
      "awsRegion": "ap-northeast-1",
      "eventTime": "2015-07-28T22:34:03.345Z",
      "eventName": "ObjectRemoved:DeleteMarkerCreated",
      "userIdentity": {
        "principalId": "AWS:AIDAIP5ZN25QV3UXI2V24"
      },
      "requestParameters": {
        "sourceIPAddress": "166.164.37.254"
      },
      "responseElements": {
        "x-amz-request-id": "45288A3D022C0D79",
        "x-amz-id-2": "mr52A03unQUI5Bc54LLIM0HM0dH3srkUN7/i0nLSC6m2AtUo6B1EP62WNoyJ3RrB"
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "SampleSNSNotification",
        "bucket": {
          "name": "example-files",
          "ownerIdentity": {
            "principalId": "A34IXCL9G8ODYW"
          },
          "arn": "arn:aws:s3:::example-files"
        },
        "object": {
          "key": "tmp.txt",
          "versionId": "9l1ibEiMsMpCCoDkyqOUveAOT6Nfd6bM",
          "sequencer": "0055B8035B4FF99FB8"
        }
      }
    }
  ]
}

削除したファイルやバケット名、日次などが残っていることが確認できました!

まとめ

このupdateにより、SNSやLambda連携がより発展した形で行えるようになりました。Lambdaも先日GAになったので、Event Notificationを利用してどんどん面白いシステムを作っていきましょう!