みなさんこんにちは。
最近、運動不足がたたって体重が増加気味のマネージドサービス2課塩野です。
Amazon S3なら論理的な保管場所の容量を気にすることがなくデータを保存できるのに、体重が増えるとお腹周りにあるお肉の保管場所が・・・(><)
ということで、今回はAmazon S3のバージョニングについて試してみました。
Amazon S3のバージョニングとは
ファイルを更新した際に複数のバージョンを保持してくれて、保存されているすべてのバージョンのファイルを取得したり、復元することができる機能です。
バージョニングのポイントとして、以下のとおりです。
- バケットレベルで有効化
- バケット内の一部ではなくすべてのオブジェクトに適用
- 一度有効化すると無効化できないが、停止することはできる
- どうしても誤削除したくなかったら、MFAを有効にするのだ
上記以外の詳細に関しては、公式ドキュメントをご確認ください。
docs.aws.amazon.com
やってみた
※今回はAWS マネジメントコンソール内の作業のみを想定しています。
バージョニングを有効化したバケットの作成
まずはファイルを保存するためのテスト用のバケットを作成します。マネジメントコンソール内のみで完結する検証のため、バケット名とバージョニング設定以外はすべてデフォルトで設定します。


なお、作成できるバケット名には制限があり、パーティショングループ(標準リージョン、中国リージョン、AWS GovCloud(米国))内において、全AWSリージョンの全AWSアカウント内で一意である必要があります。詳細についてはこちらの記事をご確認ください。
バージョニングが有効になっていると、バケットのプロパティで「バケットのバージョニング」の項目が「有効」と表示されるため、有効化されているかどうかはこちらでも確認することができます。

マネジメントコンソールからファイルのアップロード
では実際にファイルを保存してみましょう。オブジェクトタブのアップロードボタンをクリックしてアップロード画面を開きます。画面にボタンは2つありますが、どちらからも同じ画面に遷移します。

アップロードしたいファイルを直接ドラッグアンドドロップするか、「ファイルを追加」のボタンからアップロードするファイルを指定します。

画面下にあるアップロードのボタンをクリックすることでアップロードが完了します。

アップロードされたファイルの確認
ファイルがアップロードされていることはオブジェクトの画面でも確認ができます。

ファイルのリンクをクリックして、開くを押すとファイルの中身を確認することができます。そしてかわいいネコのイラストが表示されました。

保存されたファイルの更新
次に、同じファイル名で別の画像をアップロードします。手順は上記と同じです。実際の画面ではファイルサイズ以外の差は見つけられませんでした。

アップロード後の画面がこちらです。ぱっと見た感じファイルを更新したかどうか最終更新日時やファイルサイズ以外で分からない状態です。

ファイルを開くとこちらかわいいイラストが表示されます。

バージョニングされたファイルの表示
さて、ここからが本題の話になります。標準ではこの画面内にある「バージョンの表示」がOFFになっていますので、これをクリックしてONにします。

「バージョンの表示」をONにするとこのような画面が表示され、ファイルのバージョン情報が表示されます。最初にアップロードしたものは下に表示され、新しいものにぶら下がっているのがよくわかります。

さらにファイルをアップロードするとこのような表示になります。そしてここからそれぞれのファイルを開いたり、ダウンロードしたりすることができます。
バージョニングされたファイルの削除
では、これらのファイルを削除するとどうなるのでしょうか。 バージョン表示をOFFにして対象ファイルを選択し、削除ボタンをクリックします。
さよなら・・・・かわいいネコちゃん画像たちよw


バージョニングされていたファイルたちはキレイさっぱり・・・・

消えているというのは、まぼろしぃ~~~
実は、バージョニングを有効にすると、削除マーカーという削除フラグのようなファイルが追加されて、バージョン表示を有効にしないと見えない状態になります。

そのため、削除マーカーを削除すると、アップロードされていたファイルが見えるようになります。


削除マーカーを消すと・・・

ファイルが見えるようになりました。

バージョニングが有効なバケットでの注意点
バージョニングが有効になっている状態で見た目のファイルだけ消してしまうと、バケットを消すときにぱっと見ファイルがないのに「このバケットは空ではありません」と怒られてしまいます。そんな時は「バージョンの表示」の設定を思い出してみてください。
バージョニングを有効化してると、削除ボタンを押しても間違ってファイル消しちゃうこともないし安心だぜっ!!と、バケットを選択して「空にする」ボタンをクリックすると、こちらはバージョニング設定に関係なく本当に中身を全部消してしまいますのでご注意ください。


総括
ここまでバケットのバージョニングの挙動について試してみましたが、個別ファイルの削除についてはバージョニングを有効化することによってある程度のオペレーションミスを回避することができます。しかしながらマネジメントコンソールからバケットを選択して「空にする」ボタンをクリックすると、全ファイル削除できてしまうようなオペレーションができてしまうため、よりセキュリティを強固にする場合はMFAの削除設定を有効にすることや、IAMポリシーなどでより厳密なアクセス権設定をおこなうことでこうしたリスクを回避することができます。
どなたかの参考になれば幸いです。
お知らせ
弊社はAWSパートナーネットワーク(APN)の最上位の「プレミアコンサルティングパートナー」に継続して認定されております。社内にAWSに知見がなく運用まで手が回らないなどでお困りの場合は、弊社サービスのAWSの運用代行サービスもありますのでお気軽にご相談ください。
◆ 塩野 正人
◆ マネージドサービス部 所属
◆ X(Twitter):@shioccii
◆ 過去記事はこちら
前職ではオンプレミスで仮想化基盤の構築や運用に従事。現在は運用部隊でNew Relicを使ってサービス改善に奮闘中。New Relic User Group運営。