オブジェクトのバージョニング - Amazon Simple Storage Service

オブジェクトのバージョニング

Amazon S3 バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。たとえば、my-image.jpg (バージョン 111111) と my-image.jpg (バージョン 222222) を 1 つのバケットに保存できます。S3 バージョニング は、意図しない上書きや削除の結果からユーザーを保護します。また、以前のバージョンにアクセスできるようにオブジェクトをアーカイブすることもできます。

注記

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

データ保持のアプローチやストレージコストの管理をカスタマイズするには、オブジェクトのライフサイクル管理 を使用してオブジェクトバージョニングを使います。AWS マネジメントコンソール を使用した S3 ライフサイクル のポリシーの作成方法については、Amazon Simple Storage Service コンソールユーザーガイド の「S3 バケットのライフサイクルポリシーを作成する方法」を参照してください。

バージョンを指定しないバケットにオブジェクトの有効期限ライフサイクルポリシーがあり、バージョニングを有効にしたときに同じ完全な削除動作を維持する場合は、以前の有効期限ポリシーを追加する必要があります。以前の有効期限ライフサイクルポリシーでは、バージョニングに対応したバケットで、以前のオブジェクトバージョンの削除が管理されます(バケットのバージョニングが有効になっている場合は、最新のオブジェクトバージョン 1 個と、0 個以上の以前のバージョンが維持されます)。

バケットで S3 バージョニング を明示的に有効にする必要があります。デフォルトでは、S3 バージョニング は無効となっています。バージョニングを有効にしたかどうかにかかわらず、バケット内の各オブジェクトにはバージョン ID が付いています。バージョニングを有効にしていない場合、バージョン ID 値は Amazon S3 によって null に設定されます。S3 バージョニング が有効になっている場合、Amazon S3 によってオブジェクトにバージョン ID 値が割り当てられます。この値により、同じキーの他のバージョンと区別されます。

バージョニングの有効化と停止はバケットレベルで行います。既存のバケットに対してバージョニングを有効にしても、バケットにすでに保存されているオブジェクトは変更されません。バージョン ID (null)、コンテンツ、アクセス権限が変更されることはありません。バケットに対して S3 バージョニング を有効にすると、バケットに追加された各オブジェクトはバージョン ID を取得し、同じキーの他のバージョンと区別されます。

Amazon S3 によってのみバージョン ID が生成され、それらの ID は編集できません。バージョン ID は、Unicode、UTF-8 エンコード、URL 対応の不透明な文字列で、長さは 1,024 バイト以下です。以下に例を示します。3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

注記

すべての例では、シンプルになるように、できる限り短い ID を使用しています。

バージョニングが有効になっているバケットにオブジェクトを PUT しても、以前のバージョンは上書きされません。次の図は、photo.gif という名前のオブジェクトが既に入っているバケットに、同じ名前を持つ新しいバージョンのオブジェクトを PUT する様子を示しています。バケット内の元のオブジェクト (ID = 111111) はそのまま残り、Amazon S3 によって新しいバージョン ID (121212) が生成され、その新しいバージョンがバケットに追加されます。

この機能によって、オブジェクトを誤って上書きまたは削除することがなくなり、オブジェクトの以前のバージョンを回復することも可能になります。

オブジェクトを DELETE するときは、次の図に示すように、バケット内のすべてのバージョンが残り、Amazon S3 によって削除マーカーが挿入されます。

削除マーカーはオブジェクトの最新バージョンになります。デフォルトで、GET リクエストは最後に格納されたバージョンを取得します。最新バージョンが削除マーカーであるときに単純な GET Object リクエストを実行すると、次の図に示すように 404 Not Found エラーが返されます。

ただし、バージョン ID を指定すれば、オブジェクトの以前のバージョンを GET することができます。以下の図では、特定のオブジェクトバージョン 111111 を GET しています。これはオブジェクトの最新バージョンではありませんが、Amazon S3 はこのバージョンを返します。

オブジェクトを完全に削除するには、削除するバージョンを指定します。Amazon S3 バケットの所有者のみが、バージョンを完全に削除することができます。次の図は、DELETE versionId によってバケット内のオブジェクトが完全に削除される様子を示しています。Amazon S3 による削除マーカーの挿入も行われません。

セキュリティを強化するには、MFA (多要素認証) Delete に対応するようにバケットを設定します。この設定を行うと、バケット所有者は特定のバージョンを削除したりバケットのバージョニング状態を変更したりするために、すべてのリクエストに 2 つの認証形態を含める必要があります。詳細については、「MFA Delete」を参照してください。

重要

HTTP 503 の数が著しく増加し、S3 バージョニング を有効にしたバケットへの Amazon S3 PUT または DELETE オブジェクトリクエストに対して受信されるレスポンスが低下する場合は、数百万のバージョンがあるバケットに 1 つ以上のオブジェクトがある可能性があります。詳細については、「Amazon S3 のトラブルシューティング」を参照してください。

詳細については、「バージョニングの使用」を参照してください。