【AWS発表】Amazon S3 でバージョン管理されたオブジェクトもLifecycle管理が可能に
今日は、2つの既存のAWSサービスをブリッジし、2つの既存の機能をはるかに有用なものにする、強力な新しいAWSの機能をご紹介したいと思います! それでは簡単な復習から始めましょう。
S3のVersioned Objects
もちろんAmazon S3のことは皆さんご存知でしょう。 2006年にサービスを開始し、現在では秒間100万以上のリクエストを処理し、数兆にもおよぶドキュメント、画像、バックアップといったデータ全てが高い可用性とイレブンナイン(99.999999999%)の耐久性のもと、格納されています。 サービス開始当初から、多くの機能と利用できるロケーションを追加し、繰り返し、ストレージの料金の値下げも続けてまいりました。 注目すべき、人気のS3の機能の一つに、オブジェクトのバージョン管理があります。 S3バケットのバージョン管理機能を有効にした後に、特定のオブジェクトをS3にアップロードまたはPUTすると、上書きや削除からの保護を目的として、異なる名前、個々にアクセスできるバージョンを作成します。 バージョン管理が有効になっているS3バケット内の全てのバージョンの全てのオブジェクトを保存、取得、復元することができます。
人的またはプログラムのエラーから回復するために以前のバージョンのオブジェクトを取得することができます。
Glacier & Lifecycle Rules
Amazon Glacierについても、皆さんよくご存知でしょう。 GlacierはS3同様、イレブンナインの耐久性を持っています。S3と異なるところは、データの取得をリクエストしてから実際に取得できるようになるまでに、3〜5時間要する代わりに、1ギガバイト、1ヶ月あたりの料金がより安価になっているところです。 Glacierは重要だけれども、数分または数秒以内にアクセスする必要がないデータを長期間保存するのに最適です。
S3のLifecycle ManagementはS3とGlacierを統合し、各オブジェクトのStorage Classを介して、詳細を見ることができます。 Storage ClassがStandard か RRS (Reduced Redundancy Storage)のオブジェクトはS3に保存されています。 Storage ClassがGlacierの場合は、データがGlacierに保存されています。 Storage Classが何であるかに関わらず、オブジェクトはS3 APIおよび他のS3のツールを使ってアクセスすることができます。 Lifecycle Managementを使うと、Transition(Storage ClassをGlacierに変更)とExpiration(オブジェクトの削除)を引き起こす時間ベースのルールを定義することができます。 Expirationのルールを使うと、特定の世代より古くなったオブジェクトを削除することができます。 これらのルールを利用することで、お好みのロールバックウィンドウよりも古くなったオブジェクトを削除を自動的に削除し、ストレージコストを減らしつつ、それまではデータを利用可能にし続けることができます。
S3 & Glacier & Versioned Objects & Lifecycle Rules
これでようやく本日のニュースについてお話する準備が整いました! 本日より、バージョン管理を有効にしたS3バケットに、Lifecycleルールを適用することができるようになりました。 この一見単純な変更により、S3、Glacierおよび、バージョン管理がより有益で便利なものになります。 例えば、最新バージョンのオブジェクトをS3に保持しつつ、古いバージョンはGlacierに移行するといったことをすることができます。 (必要とする可能性が最も高いだろう)最新バージョンはすぐに取得することができますし、古いバージョンも3〜5時間以内に確実にアクセスすることができます。 お客様のユースケースによりますが、最新のバージョンも含めて、全てのバージョンをGlacierに移行したいかもしれません。 オブジェクトを作成してから数日後に各バージョンを期限切れにしたいかもしれません。 この新機能を利用すれば、これらのユースケースに全て柔軟に対応することができます。 この新機能を使用することで、コストの安いGlacierのストレージと、S3のバージョン管理の柔軟性を組み合わせて、全体的なストレージコストの削減に貢献します。
S3バケットにLifecyleルールを作成し、適用することで、この新機能を利用することができます。 Lifecycleルールの作成は、S3 API、AWS SDK、AWSマネージメントコンソールから行えます。
コンソールからのLifecycle Managementの設定
AWSマネージメントコンソールを使って、簡単なLifecycleルールを設定していきましょう。 まず、いくつかのバックアップを保存するために新しいバケットは作成します。:
この例では、バックアップ用のアプリケーションは非常にシンプルなもので、毎回同じファイルに出力されるものとします。 このバケットに対して、バージョン管理を有効にします。これにより、上書きや削除に対する保護を含んだバージョン管理を活用しながら、ファイルを移動したりリネームすることなしに新しいバックアップをアップロードすることができるようになります。 さらに、以前のバージョンのファイルをGlacierにアーカイブすることもできます。以下にバージョン管理を有効にする手順を紹介します。:
まず、適切なTransitionとExpirationのルールを設定する必要があります。:
コンソールにはこのプロセスを簡単に行えるウィザードが追加されています! 最初のステップで、バケット内の全てのオブジェクトを対象とするルールを作成するか、バケット内の特定のプレフィックスを持つオブジェクトを対象とするルールを作成するかを選択することができます。
ルールによって対象とするオブジェクトを選択したら、オブジェクトの最新バージョンとそれ以前のバージョンのTransitionとExpirationを指定します。ここでは、最新バージョンのバックアップは1週間後にGlacierに移行し、以前のバージョンについては、上書きされてから2日後に移行するようにしてみましょう。さらに、以前のバージョンについては、最新でなくなった後、100日が経過したら完全に削除するようにしてみます。 その設定内容は次のとおりです。(See an Exampleをクリックすれば、Lifecycleルールについてより深く理解することができます。):
コンソールは設定内容を確認したあと、ルールを作成し、アクティブにします:
ルールが確立されると、TransitionとExpirationが自動的に行われます。コンソールから、オブジェクトの各バージョンの現在の状態を見ることができます。:
重要な注意: バックアップファイルのバージョンを確認するためには、Showボタンをクリックします。
さらに詳しく
上記の例は良い出発点ではありますが、実際の舞台裏はもう少し複雑ですので、使い始める前に、この機能についてもう少し勉強する時間をとる必要があるかもしれません。実際には、テスト用のバケットを作成して、考えているルールを試してみるとよいかもしれません。
ここでは、バージョン管理の戦略を設計する際に、考えるべきことをいくつかご紹介いたします。:
- Versioning Status - この値は、バケット単位で保持されています。各バケットは、バージョン管理なし(デフォルト)か、ありかのどちらかになっており、バージョン管理を一時停止するオプションもあります。バージョン管理を一時停止すると、オブジェクトの新しいバージョンの作成を停止します。また、バージョン管理が一時停止されている際、オブジェクトを削除すると、NULLバージョンの特別な削除マーカーを作成し、これを最新バージョンにします。
- Actions - オブジェクトの最新および以前のバージョンはそれぞれ、関連づけられたバケットのバージョン管理の状態に依存して動作するTransitionとExiprationのアクションをもっています。ユースケースに基づいて、Transitionだけ、Expirationだけ、またはその両方を選択できます。
- Days と Dates ルールはオブジェクトが作成された日付か、作成されてからの日数を指定できます。 コンソールからルールを作成する場合は日数を指定する形になります。日付ベースのルールを作成する場合はAPIを使う必要があります。 以前のバージョンのLifesycleルールは、最新バージョンが以前のバージョンとして保存された時点から有効になります。 Glacierに移行したり、有効期限が切れる前に、とってかわられたバージョンがS3に残っている時間を制御することができます。
- 既存のルール バージョン管理のルールが導入する以前に作成されたルールはそのまま適用され続け、期待通りの振る舞いをします。 特定の日付を参照する場合、APIを使って編集する必要があります。(閲覧、無効化、削除はコンソールから行えます。) 実際にバケットのバージョン管理を有効にする前に、以前のバージョンのルールを設定することができます。 ルールはバージョン管理を有効にした際に、適用されます。
試してみよう
この新機能は本日より利用可能となっておりますので、今すぐお試しいただけます。
-- Jeff;
この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 Amazon S3 Lifecycle Management for Versioned Objectsを 堀内康弘 (Facebook, Twitter)が翻訳したものです。
コメント