バージョニングの使用
バージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段です。バージョニングを使用して、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 サブリソースには空のバージョニング設定が格納されます。
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>
バージョニングを有効にするには、ステータスを含むバージョニング設定を使用して、Amazon S3 にリクエストを送信します。
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>
バージョニングを停止するには、ステータス値を
Suspended
に設定します。
バケットを作成した AWS アカウント (ルートアカウント) であるバケット所有者、および承認されたユーザーは、バケットのバージョニング状態を設定できます。権限の詳細については、Amazon S3 での Identity and Access Managementを参照してください。
バージョニングを設定する例には、「バケットのバージョニングを有効にする例」を参照してください。
MFA Delete
オプションとして、MFA (多要素認証) Delete を有効化するようにバケットを設定し、別のセキュリティレイヤーを追加できます。これにより、以下の各オペレーションで追加の認証が要求されます。
-
バケットのバージョニング状態を変更する
-
オブジェクトバージョンを完全に削除する
MFA Delete では、2 つの形式の認証の組み合わせが必要になります。
-
セキュリティ認証情報
-
有効なシリアル番号、スペース、および承認済みの認証デバイスに表示される 6 桁のコードを連結した文字
これにより MFA Delete は、セキュリティ認証情報の侵害時などのセキュリティを強化します。
MFA Delete を有効/無効にするには、バケットのバージョニングを設定する場合と同じ API を使用します。Amazon S3 では、バケットのバージョニングステータスを保存する場合と同じ versioning サブリソースに MFA Delete の設定が保存されます。
MFA Delete は、以下のようにして、誤ってバケットが削除されないようにできます。
-
削除アクションを開始するユーザーに、MFA デバイスを物理的に所有していることを MFA コードによって証明することを求める。
-
削除アクションに対する摩擦とセキュリティのレイヤーを追加する。
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>
VersioningState
</Status> <MfaDelete>MfaDeleteState
</MfaDelete> </VersioningConfiguration>
注記
バケットを作成した AWS アカウントであるバケット所有者 (ルートアカウント)、およびすべての承認された IAM ユーザーは、バージョニングを有効化できます。ただし、バケット所有者 (ルートアカウント) のみが MFA Delete を有効化できます。詳細については、AWS のブログ記事 (MFA の削除およびバージョニング) を参照してください。
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/ を参照してください。
関連トピック
詳細については、以下のトピックを参照してください。