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

このガイドは更新されていません。最新の情報と手順については、新しい Amazon S3 ユーザーガイドを参照してください。

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

Amazon S3 バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。たとえば、1 つのバケットで my-image.jpg (バージョン 111111) と my-image.jpg (バージョン 222222) を保存することができます。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 が与えられ、同じキーの他のバージョンと区別されます。

バージョン ID は Amazon S3 によってのみ生成され、編集はできません。バージョン 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」を参照してください。

重要

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

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