

# S3 バージョニングによる複数のバージョンのオブジェクトの保持
<a name="Versioning"></a>

Amazon S3 のバージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段のことです。S3 のバージョニング機能を使用すると、バケットに保存されたすべてのオブジェクトのすべてのバージョンを、保存、取得、復元することができます。バージョニングを使用すれば、意図しないユーザーアクションからもアプリケーション障害からも、より簡単に復旧できます。バケットのバージョニングを有効にすると、Amazon S3 が同じオブジェクトに対する複数の書き込みリクエストを同時に受信した場合に、すべてのオブジェクトが保存されます。

バージョニングを有効にしたバケットは、オブジェクトを誤って削除したり上書きしたりしても、復元が簡単に行えます。例えば、オブジェクトを削除した場合、Amazon S3 は、オブジェクトを完全に削除する代わりに削除マーカーを挿入します。その削除マーカーが、最新のオブジェクトバージョンになります。オブジェクトを上書きすると、バケット内の新しいオブジェクトバージョンになります。いつでも以前のバージョンを復元できます。詳細については、「[バージョニングが有効なバケットからのオブジェクトバージョンの削除](DeletingObjectVersions.md)」を参照してください。

デフォルトではバケットの S3 バージョニングは無効になっているので、明示的に有効にする必要があります。詳細については、「[バケットでのバージョニングの有効化](manage-versioning-examples.md)」を参照してください。

**注記**  
SOAP API は、S3 バージョニングをサポートしていません。SOAP のサポートは HTTP 経由では廃止されましたが、HTTPS 経由では引き続き利用可能です。Amazon S3 の新機能は SOAP でサポートされていません。
通常の Amazon S3 料金は、保存または移行されるオブジェクトのバージョンごとに適用されます。オブジェクトの各バージョンはオブジェクト全体であり、以前のバージョンの単なる差分ではありません。したがって、オブジェクトの 3 つのバージョンを保存している場合、3 つのオブジェクトに対して課金されます。

## バージョニングが無効なバケット、有効なバケット、停止されているバケット
<a name="versioning-states"></a>

バケットは、次の 3 つの状態のいずれかになります。
+ Unversioned (バージョニングが無効) (デフォルト)
+ Versioning-enabled (バージョニングが有効)
+ Versioning-suspended (バージョニングが停止)

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

バージョニング状態は、バケット内の一部ではなくすべてのオブジェクトに適用されます。バケットでバージョニングを有効にすると、すべての新しいオブジェクトがバージョニングされ、一意のバージョン ID が割り当てられます。バージョニングが有効化された時点でバケット内に既に存在していたオブジェクトは、それ以降*常に*バージョニングされ、将来のリクエストによって変更されたときに一意のバージョン ID が割り当てられます。次の点に注意してください。
+ バージョニング状態を設定する前にバケットに保存したオブジェクトのバージョン ID は `null` です。バージョニングを有効にした場合、バケットに含まれる既存のオブジェクトは変更されません。変更されるのは、Amazon S3 が今後のリクエストでオブジェクトを処理する方法です。詳細については、「[バージョニングが有効なバケットでのオブジェクトの操作](manage-objects-versioned-bucket.md)」を参照してください。
+ バケット所有者 (または適切なアクセス許可を持つユーザー) は、バージョニングを停止してオブジェクトバージョンの生成を中断できます。バージョニングを停止しても、バケットに含まれる既存のオブジェクトは変更されません。変更されるのは、Amazon S3 が今後のリクエストでオブジェクトを処理する方法です。詳細については、「[バージョニングが停止されたバケットのオブジェクトの操作](VersionSuspendedBehavior.md)」を参照してください。

## S3 ライフサイクルでの S3 バージョニングの使用
<a name="versioning-lifecycle"></a>

データ保持のアプローチやストレージコストの管理をカスタマイズするには、S3 ライフサイクルでオブジェクトバージョニングを使用します。詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。AWS マネジメントコンソール、AWS CLI、AWS SDK、または REST API を使って S3 ライフサイクル設定を作成する方法の詳細は、「[バケットに S3 ライフサイクル設定を設定する](how-to-set-lifecycle-configuration-intro.md)」を参照してください。

**重要**  
バージョニングが無効であるバケットに、オブジェクトの有効期限ライフサイクル設定があり、有効化したときに同一の完全な削除動作を維持させたいときは、以前の有効期限切れ設定を追加する必要があります。以前の有効期限切れのライフサイクル設定は、バージョニングが有効なバケットで、以前のオブジェクトバージョンの削除を管理します (バージョニングが有効なバケットは、1 個の最新のオブジェクトバージョン と、0 個以上の以前のバージョンを維持します)。詳細については、「[バケットに S3 ライフサイクル設定を設定する](how-to-set-lifecycle-configuration-intro.md)」を参照してください。

S3 バージョニングの操作に関する詳細は、以下のトピックを参照してください。

**Topics**
+ [バージョニングが無効なバケット、有効なバケット、停止されているバケット](#versioning-states)
+ [S3 ライフサイクルでの S3 バージョニングの使用](#versioning-lifecycle)
+ [S3 バージョニングの仕組み](versioning-workflows.md)
+ [バケットでのバージョニングの有効化](manage-versioning-examples.md)
+ [MFA 削除の設定](MultiFactorAuthenticationDelete.md)
+ [バージョニングが有効なバケットでのオブジェクトの操作](manage-objects-versioned-bucket.md)
+ [バージョニングが停止されたバケットのオブジェクトの操作](VersionSuspendedBehavior.md)
+ [バージョニングのトラブルシューティング](troubleshooting-versioning.md)