この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
本日、S3の新機能「Event Notification for Delete Event」が発表されました!
re:Invent 2014の際に発表されたS3 Event Notificationは、S3オブジェクトの作成・更新をトリガーとして、
- SNSへの通知
- SQSへのメッセージ送信
- LambdaのInvoke
のいずれかを実行することができるようになりましたが、これまでは削除時にイベントを発火させることができませんでした。
ですが、今日のアップデートでオブジェクト削除時の通知が可能になったようです。早速やってみましょう!
設定
S3のManagement Consoleを開き、バケット一覧の右側で「Events」の部分を開きます。
Deleteが選択できるようになっていますね。今回はSNSでメールを送ってみます。
SNSのトピックには私のメールアドレスを登録しておきました。ひとつ注意点として、SNSのTopicにはS3からのPublishを許可するポリシーを記述しておく必要があることに気をつけてください。以下のドキュメント・ブログを参考にポリシーを記載して下さい。
- Configuring Amazon S3 Event Notifications - Amazon Simple Storage Service
- [AWS新機能] Amazon S3 Event Notificationsを使ってみた #reinvent | Developers.IO
今回は、このバケットに存在するファイル全てに対して、削除された際にEventが発生する設定にしました。「NotifyMe」というのが、今回利用したSNS Topic Nameです。
それでは、このバケットに試しに保存した「tmp.txt」を削除してみましょう。
Management Consoleから削除を実施した後、ブラウザのタブをGmailに切り替えているうちにメールが届いていました!早いですね。
このままでは見づらいので、整形して中身を確認してみます。
{
"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を利用してどんどん面白いシステムを作っていきましょう!