Simple Strage Service S3について
こんにちわ。
技術部のA.Oです。
今回は僕の大好きなAWSリソースである、
オブジェクトストレージS3について軽くお話ししようと思います。
S3って?
AWSが提供する、”オブジェクトストレージサービス”であり、
俗にいう魔法のバケツです。
Simple
Strage
Service
の頭文字をとって S3 なわけです。
何ができるの?
本当に色々できます。
例えば!
バックアップデータを保存しておいたり、
分析や検知するためにAWSリソースのログを吐いたり
静的ウェブサイトホスティングとしてWebサーバのように使ったり…
また、バージョニング機能を有効にすることでうっかり消してしまっても復旧できるようにしたり、
今回はそんなバージョニングについてご紹介します。
3つの状態
無効 Unversioned(デフォルト)
有効 Versioning-enabled
停止 Versioning-suspended
無効 Unversioned(デフォルト)
なにも設定していないとこの状態になります。
バージョン IDは null になります。(現行バージョン)
・バージョニングが無いため、削除後はオブジェクトを復旧できない
・削除する際の[テキスト入力フィールド]には、完全に削除と入力する。※オブジェクトを削除する際の違いと注意
有効 Versioning-enabled
この状態になってから、アップロードされたオブジェクトは
自動的にバージョンIDがnullではなく、文字列のようなものが割り振られる。
・この状態で削除されるオブジェクトは、S3からも、AWSコマンドでも消えているような挙動になります。
実際は、バージョンの表示を有効にすると、
消されたオブジェクト自体、それに加えて同じ名前で [タイプ] が削除マーカー※後述
というものが新たにできており、復旧ができる状態です。
同じ名前(かつ同じ拡張子)のものをアップロードした場合、最新のものが表示されます。
このオブジェクトを削除しても上記と同様になるが、削除マーカーに紐づく実態が2つになっているだけで、扱いは同じ
2つあった場合、ひとつ前のオブジェクトを最新にしたければ、新しいオブジェクトを削除する。
※この場合、どちらを消す場合も必然的に[完全に削除する]以外は選択できず、この動作の復旧は不可能になります。
停止
一度有効になった後、停止するとこの状態に移行します。
バケット内で同じオブジェクトの新しいバージョンが生成されないようにするときに使用します。
すでにバージョン IDがnullではないものはそのまま変わらず、
新たにPUTされたオブジェクトのバージョン IDは nullになります。
バージョニング設定
ここからは、バージョニングの設定方法を掲載します。
設定したいバケットを選択し、プロパティを開く。
[編集]を選択し、有効に設定するのみ。
オブジェクトを削除する際の違いと注意
オブジェクトの削除時にバージョニングが有効であり、
かつ削除した後も削除マーカーがつき復旧できる状態にある場合
テキスト入力フィールドには[削除]と入力するように求められます。
オブジェクトの削除時にバージョニングが無効、
または、バージョニング有効でも、削除した後二度と復旧できない場合
テキスト入力フィールドには[完全に削除]と入力するように求められます。
また、バージョニング有効であり、削除後も復旧できるオブジェクトのはずでも、
バージョンの表示を有効にしていると、[完全に削除にする]しかできないので注意
削除マーカー
※前提として、バージョニングが 有効 もしくは 停止 になっているが、
バージョン IDがnull(現行バージョン)ではないオブジェクト でのみ、削除時に発生します。
オブジェクトが削除された際、GETをしても404を返し、コンソールからも消えるが、実は消えていません。
バージョンIDが削除マーカーという状態になり、実態は残ります。
消したオブジェクトのあるバケットもしくはフォルダに移動し、
[プレフィックスでオブジェクトを検索]という検索窓の横のバージョンの表示を有効にすると、
タイプが「削除マーカー」という種類のオブジェクトが出てきます。
画像ではバージョニング有効のバケット内のtest2.txtを削除した後、バージョンの表示を有効にしたところです。
削除マーカー は バージョニング有効の時削除されたオブジェクトの代わりに先頭に出現します
削除されたオブジェクトの復旧
バージョンの表示を有効にし、復旧したいオブジェクトが削除マーカーに紐づいて表示されている事を確認する。
上の画像を例にすると、復旧したいオブジェクトは削除されたtext2.txtとします。
test2.txtという、タイプがtxtのオブジェクト と
test2.txtというタイプが「削除マーカー」 という 2つがあります。
復旧したい場合は、test2.txtというタイプが「削除マーカー」の方を削除すると、復旧し、
※テキスト入力フィールドに[完全に削除]と入力する事になるが、問題はないです。
だが逆を削除すると、削除マーカーのみが残り、オブジェクトの本体が消失します。
いかがでしたでしょうか?
みなさんもS3へ大事なデータを入れる時は、ぜひ設定してみてください!