メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

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

バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。例えば、my-image.jpg(バージョン 111111)、my-image.jpg (バージョン 222222)といった具合です。バージョニングを有効にすると、誤って上書きまたは削除した場合の被害を防いだり、以前のバージョンを取得できるようオブジェクトをアーカイブしたりできます。

注記

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

オブジェクトバージョニングは、オブジェクトのライフサイクル管理 と組み合わせて使用し、関連するストレージのコストを制御しながらデータ保持のニーズをカスタマイズすることができます。AWS マネジメントコンソール を使用したライフサイクルのポリシーの作成方法については、「S3 バケットのライフサイクルポリシーを作成する方法」(Amazon Simple Storage Service コンソールユーザーガイド) を参照してください。

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

バージョニングを使用する場合は、バケットに対してバージョニングを明示的に有効にする必要があります。バージョニングはデフォルトで無効になっています。バージョニングを有効にしたかどうかにかかわらず、バケット内の各オブジェクトはバージョン ID を持ちます。バージョニングを有効にしていない場合、バージョン ID の値は Amazon S3 によって null に設定されます。バージョニングを有効にした場合は、そのオブジェクトの一意のバージョン ID が Amazon S3 によって割り当てられます。 バケットに対してバージョニングを有効にしても、バケット内の既存のオブジェクトに変更はありません。バージョン ID(null)、コンテンツ、アクセス許可は同じです。

バージョニングの有効化と停止はバケットレベルで行います。バケットに対してバージョニングを有効にすると、バケットに追加したすべてのオブジェクトは一意のバージョン ID を持ちます。一意のバージョン ID はランダムに生成されます。Unicode、UTF-8 エンコード、URL 対応、意味不定、最大 1,024 バイト長といった特徴を持つ文字列です。例えば 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo はバージョン ID です。バージョン ID は Amazon S3 によってのみ生成されます。編集することはできません。

注記

以降紹介するすべての例では、簡潔さを考慮してもっと短い 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(Multi-Factor Authentication)Delete に対応するようにバケットを設定します。この設定を行うと、バケット所有者は特定のバージョンを削除したりバケットのバージョニング状態を変更したりするために、すべてのリクエストに 2 つの認証形態を含める必要があります。詳細については、MFA Delete を参照してください。

重要

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

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