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

バージョニングの使用

バージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段です。バージョニングを使用して、Amazon S3 バケットに格納されたあらゆるオブジェクトのあらゆるバージョンを、格納、取得、復元することができます。バージョニングを使用すれば、意図せぬユーザーアクションからもアプリケーション障害方からも、簡単に回復することができます。

例えば、1 つのバケット内に、photo.gif(バージョン 111111)と photo.gif (バージョン 121212)のように、キーは同じだがバージョン ID が異なる 2 つのオブジェクトを保持することができます。

バージョニングが有効なバケットでは、オブジェクトを誤って削除または上書きしても復元できます。(例:

  • オブジェクトを削除した場合、Amazon S3 では、オブジェクトを完全に削除する代わりに削除マーカーを挿入し、それが最新のオブジェクトバージョンになります。いつでも以前のバージョンを復元できます。詳細については、「オブジェクトバージョンの削除」を参照してください。

  • オブジェクトを上書きすると、バケット内の新しいオブジェクトバージョンになります。いつでも以前のバージョンを復元できます。

重要

バージョンを指定しないバケットにオブジェクトの有効期限ライフサイクルポリシーがあり、バージョニングを有効にしたときに同じ完全な削除動作を維持する場合は、以前の有効期限ポリシーを追加する必要があります。以前の有効期限ライフサイクルポリシーでは、バージョニングに対応したバケットで、以前のオブジェクトバージョンの削除が管理されます (バケットのバージョニングが有効になっている場合は、最新のオブジェクトバージョン 1 個と、0 個以上の以前のバージョンが維持されます)。詳細については、「S3 バケットのライフサイクルポリシーを作成する方法」(Amazon Simple Storage Service コンソールユーザーガイド) を参照してください。

バケットは、バージョニング無効(デフォルト)、バージョニング有効、バージョニング停止の 3 つの状態のいずれかに設定できます。

重要

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

バージョニング状態は、そバケット内の一部ではなくすべてのオブジェクトに適用されます。最初にバケットのバージョニングを有効にした時点で、バケット内のオブジェクトは常にバージョニングされ、固有のバージョン ID が与えられます。次の点に注意してください。

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

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

バケットでバージョニングを設定する方法

以下のいずれかの方法でバケットのバージョニングを設定できます。

  • Amazon S3 コンソールを使用してバージョニングを設定します。

  • AWS SDK を使用してプログラムでバージョニングを設定します。

    コンソールと SDK はいずれも、Amazon S3 が提供する REST API を呼び出してバージョニングを管理します。

    注記

    必要に応じて、コードから直接 Amazon S3 REST API を呼び出すこともできます。ただし、この方法は、リクエストを認証するためのコードを作成する必要があるため面倒な場合もあります。

    作成する各バケットには、versioning サブリソース(「バケット設定オプション」を参照)が関連付けられています。デフォルトでは、バケットはバージョニング無効であり、versioning サブリソースには空のバージョニング設定が格納されます。

    Copy
    <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

    バージョニングを有効にするには、ステータスを含むバージョニング設定を使用して、Amazon S3 にリクエストを送信します。

    Copy
    <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

    バージョニングを停止するには、ステータス値を Suspended に設定します。

バケットを作成した AWS アカウント (ルートアカウント) であるバケット所有者、および承認されたユーザーは、バケットのバージョニング状態を設定できます。権限の詳細については、Amazon S3 リソースへのアクセス許可の管理を参照してください。

バージョニングを設定する例には、「バケットのバージョニングを有効にする例」を参照してください。

MFA Delete

バケットの設定で MFA(Multi-Factor Authentication)Delete を有効にすることにより、オプションでさらにセキュリティレイヤーを追加できます。この場合、次のいずれかのオペレーションで追加の認証が必要になります。

  • バケットのバージョニング状態を変更する

  • オブジェクトバージョンを完全に削除する

MFA Delete では、2 つの形式の認証の組み合わせが必要になります。

  • セキュリティ認証情報

  • 有効なシリアル番号、スペース、および承認済みの認証デバイスに表示される 6 桁のコードを連結した文字

これにより MFA Delete は、セキュリティ認証情報が漏洩したなどの状況で、追加のセキュリティを実現します。

MFA Delete を有効または無効にするには、バケットのバージョニングの設定に使用するものと同じ API を使用します。Amazon S3 では、バケットのバージョニングステータスを格納する場合と同じ versioning サブリソースに MFA Delete の設定が格納されます。

Copy
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>VersioningState</Status> <MfaDelete>MfaDeleteState</MfaDelete> </VersioningConfiguration>

MFA Delete を使用するには、ハードウェアデバイスまたは仮想 MFA デバイスを使用して認証コードを生成します。次の例は、生成された認証コードがハードウェアデバイスに表示されている様子を示しています。

注記

MFA Delete および MFA で保護された API アクセスは、異なるシナリオで保護を提供することを目的とした機能です。バケットに MFA Delete を設定して、バケット内のデータが誤って削除されないようにします。MFA で保護された API アクセスは、 Amazon S3 の機密リソースにアクセスする場合に、別の認証要素(MFA コード)を適用するために使用します。これらの Amazon S3 リソースに対するすべてのオペレーションを実行するのに、MFA を使用して作成された一時的な認証情報を必ず使用するように要求できます。例については、「MFA 認証を要求するバケットポリシーの追加」を参照してください。

認証デバイスを購入およびアクティベートする方法の詳細については、https://aws.amazon.com/iam/details/mfa/ を参照してください。

注記

バケットを作成した AWS アカウント(ルートアカウント)であるバケット所有者、承認されたすべての IAM ユーザーはいずれもバージョニングを有効にすることができます。ただし、MFA Delete を有効にすることができるのは、バケット所有者(ルートアカウント)のみです。

詳細については、次のトピックを参照してください。