S3 バケットでのバージョニングの使用 - Amazon Simple Storage Service

S3 バケットでのバージョニングの使用

Amazon S3 のバージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段のことです。S3 のバージョニング機能を使用すると、バケットに保存されたすべてのオブジェクトのすべてのバージョンを、保存、取得、復元することができます。バージョニングを使用すれば、意図しないユーザーアクションからもアプリケーション障害からも、より簡単に復旧できます。バケットのバージョニングを有効にすると、Amazon S3 が同じオブジェクトに対する複数の書き込みリクエストを同時に受信した場合に、すべてのオブジェクトが保存されます。

バージョニングを有効にしたバケットは、オブジェクトを誤って削除したり上書きしたりしても、復元が簡単に行えます。例えば、オブジェクトを削除した場合、Amazon S3 は、オブジェクトを完全に削除する代わりに削除マーカーを挿入します。その削除マーカーが、最新のオブジェクトバージョンになります。オブジェクトを上書きすると、バケット内の新しいオブジェクトバージョンになります。いつでも以前のバージョンを復元できます。詳細については、「バージョニングが有効なバケットからのオブジェクトバージョンの削除」を参照してください。

デフォルトではバケットの S3 バージョニングは無効になっているので、明示的に有効にする必要があります。詳細については、「バケットでのバージョニングの有効化」を参照してください。

注記

SOAP API は、S3 バージョニングをサポートしていません。SOAP のサポートは HTTP 経由では廃止されましたが、HTTPS 経由では引き続き利用可能です。Amazon S3 の新機能は SOAP でサポートされていません。

バージョニングが無効なバケット、有効なバケット、停止されているバケット

バケットは、次の 3 つの状態のいずれかになります。

  • Unversioned (バージョニングが無効) (デフォルト)

  • Versioning-enabled (バージョニングが有効)

  • Versioning-suspended (バージョニングが停止)

バージョニングは、バケットレベルで有効化および停止します。一度バケットのバージョニングを有効にすると、バージョニング無効の状態に戻すことはできません。ただし、そのバケットのバージョニングを一時停止することは可能です。

バージョニング状態は、バケット内の一部ではなくすべてのオブジェクトに適用されます。バケットでバージョニングを有効にすると、すべての新しいオブジェクトがバージョニングされ、一意のバージョン ID が割り当てられます。バージョニングが有効化された時点でバケット内に既に存在していたオブジェクトは、それ以降常にバージョニングされ、将来のリクエストによって変更されたときに一意のバージョン ID が割り当てられます。次の点に注意してください。

  • バージョニング状態を設定する前にバケットに保存したオブジェクトのバージョン ID は null です。バージョニングを有効にした場合、バケットに含まれる既存のオブジェクトは変更されません。変更されるのは、Amazon S3 が今後のリクエストでオブジェクトを処理する方法です。詳細については、「バージョニングが有効なバケットでのオブジェクトの操作」を参照してください。

  • バケット所有者 (または適切なアクセス許可を持つユーザー) は、バージョニングを停止してオブジェクトバージョンの生成を中断できます。バージョニングを停止しても、バケットに含まれる既存のオブジェクトは変更されません。変更されるのは、Amazon S3 が今後のリクエストでオブジェクトを処理する方法です。詳細については、「バージョニングが停止されたバケットのオブジェクトの操作」を参照してください。

S3 ライフサイクルでの S3 バージョニングの使用

データ保持のアプローチやストレージコストの管理をカスタマイズするには、S3 ライフサイクルでオブジェクトバージョニングを使用します。詳細については、「ストレージのライフサイクルの管理」を参照してください。AWS マネジメントコンソール、AWS CLI、AWS SDK、または REST API を使って S3 ライフサイクルポリシーを作成する方法の詳細は、「バケットのライフサイクル設定の指定」を参照してください。

重要

バージョニングが無効であるバケットに、オブジェクトの有効期限ライフサイクルポリシーがあり、有効化したときに同一の完全な削除動作を維持させたいときは、以前の有効期限切れポリシーを追加する必要があります。以前の有効期限切れのライフサイクルポリシーは、バージョニングが有効なバケットで、以前のオブジェクトバージョンの削除を管理します(バージョニングが有効なバケットは、1 個の最新のオブジェクトバージョン と、0 個以上の以前のバージョンを維持します)。 詳細については、「バケットのライフサイクル設定の指定」を参照してください。

S3 バージョニングの操作に関する詳細は、以下のトピックを参照してください。