Amazon S3 Glacierからの復元周りの通知受け取りを試してみた #reinvent

はじめに

こんにちは、福岡オフィス所属、IT推進室の井手です。

先日、Amazon GlacierがAmazon S3の一部となり、さらに機能追加がいくつが発表されました。
Amazon Glacier改めAmazon S3 Glacierがより利用しやすくなりました #reinvent
Glacierの取り出し中に復元速度を変更できるようになりました #reinvent

Glacierからの復元周りの通知受け取りを試してみたのでアップデート紹介も兼ねてご紹介いたします。

やってみた

概要

 既存機能のs3 Bucketでのイベント通知(オブジェクト作成、削除等)機能にGlacierの以下のイベントが追加されています。

  • Glacier からの復元の開始
  • Glacier からの復元の完了

 今回は、s3 -> SNSでメールを受信を試します。

SNSトピックの設定

 SNSトピックの作成については割愛しますが、以下のように作成しています。

※s3からのイベント通知ができるようにトピックのポリシーの編集をして下さい。例えばここでは検証の為「次のユーザーにこのトピックへのメッセージの発行を許可」で全員としています。

バケットの作成

 まずはバケットを作成します。

$ aws s3 mb s3://s3-glacier-notification-test-bucket
make_bucket: s3-glacier-notification-test-bucket

ファイルのアップロード

 次に適当なファイルをアップロードします。

$ aws s3api put-object \
--bucket s3-glacier-notification-test-bucket \
--key s3-glacier-notification.txt \
--body /Users/ide.daisuke/Desktop/s3-glacier-notification.txt \
--storage-class GLACIER

コンソールで作成が確認できました。

イベント通知の設定

 notification-configuration用のjsonファイルを作成します。

{
    "TopicConfigurations": [
        {
            "TopicArn": "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:test_s3_notification",
            "Events": [
                "s3:ObjectRestore:Post",
                "s3:ObjectRestore:Completed"
            ]
        }
    ]
}

上記を元にイベント通知を設定します。

$ aws s3api put-bucket-notification-configuration \
--bucket s3-glacier-notification-test-bucket \
--notification-configuration file://notification.json

こちらもコンソールで設定が確認できました。

復元する

 restore-request用のjsonファイルを作成します。通常だと検証には時間がかかりすぎるのでExpedited(迅速な取り出し)に設定しています。

 {
    "Days": 1,
    "GlacierJobParameters": {
        "Tier": "Expedited"
    }
}

 上記を元に復元開始します。

aws s3api restore-object \
--key s3-glacier-notification.txt \
--restore-request file://restore-request.json

確認

 まずコンソールで確認した所、復元ができました。

次に、メールを確認した所、開始と完了で通知が来ていました。

さいごに

 個人的にあまり馴染みのなかったGlacierですが今回のアップデートにより、復元開始 - 完了を監視しやすくなりよりGlacierをアプリケーションに組み込みやすくなったのではないかと思いました。どなたかの参考になれば幸いです。

参考にさせてもらった記事/ブログ