バケットを空にする - Amazon Simple Storage Service

バケットを空にする

バケットの中身は、Amazon S3 コンソール、AWS SDK、または AWS Command Line Interface (AWS CLI) を使って空にします。バケットを空にすると、すべてのオブジェクトが削除されますが、バケットは保持されます。バケットを空にすると、元に戻すことはできません。バージョニングが有効化または一時停止された S3 バケット含むバケットを空にすると、そのバケット内のすべてのオブジェクトの、すべてのバージョンが削除されます。詳細については、「バージョニングが有効なバケットでのオブジェクトの操作」を参照してください。

バケットのライフサイクル設定を指定してオブジェクトの有効期限を終了させ、Amazon S3 がそのオブジェクトを削除できるようにすることもできます。詳細については、「バケットのライフサイクル設定の指定」を参照してください。

Troubleshooting

バケットを空にするアクションの実行中にバケットに追加されたオブジェクトは、削除される場合があります。空のバケットアクションの実行中に新しいオブジェクトがバケットに追加されないようにするには、AWS CloudTrail 証跡がバケットへのイベントをログ記録するのを停止する必要があります。詳細については、AWS CloudTrail ユーザーガイドの「証跡のログを無効にする」を参照してください。

CloudTrail 証跡がバケットに追加されないようにするもう 1 つの方法は、バケットポリシーに deny s3:PutObject ステートメントを追加することです。バケットに新しいオブジェクトを保存する場合は、バケットポリシーから deny s3:PutObject ステートメントを削除する必要があります。詳細については、例 — オブジェクトオペレーション および IAM ユーザーガイドIAM JSON ポリシー要素: 効果を参照してください。

Amazon S3 コンソールを使用するとバケット内を空にできます。バケット内のすべてのオブジェクトを、バケットを削除することなく、削除できます。

S3 バケットを空にする

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット名] リストから、空にしたいバケットの名前の横にあるバケットアイコンを選び、[空にする] を選択します。

  3. [バケットを空にする] ページで、テキストフィールドにバケット名を入力することでバケットを空にすることを確定し、[Empty (空にする)] を選択します。

  4. [バケットを空にする: ステータス] ページで、バケットを空にするプロセスの進行状況をモニタリングします。

AWS CLI を使ってバケットを空にできるのは、バケットでバージョニングが有効化されていない場合のみです。バージョニングが有効化されていない場合は、AWS CLI コマンドの rm (削除) と --recursive パラメータを使って、バケットを空にすることができます (または、特定のキーネームプレフィックスを持つオブジェクトのサブセットを削除できます)。

次の rm コマンドは、たとえば docdoc/doc1 といった、キーネームプレフィックス doc/doc2 を持つオブジェクトを削除します。

$ aws s3 rm s3://bucket-name/doc --recursive

プレフィックスを指定せずにすべてのオブジェクトを削除するには、次のコマンドを使用します。

$ aws s3 rm s3://bucket-name --recursive

詳細については、AWS Command Line Interface ユーザーガイドの「AWS CLI でのハイレベルな S3 コマンドの使用」を参照してください。

注記

バージョニングが有効化されたバケットから、オブジェクトを削除することはできません。Amazon S3 は、オブジェクトが削除される際に、このコマンドの目的である削除マーカーを追加します。S3 バケットのバージョニングの詳細については、「S3 バケットでのバージョニングの使用」を参照してください。

AWS SDK を使用すると、バケットを空にしたり、特定のキーネームプレフィックスを持つオブジェクトのサブセットを削除したりできます。

AWS SDK for Java を使ってバケットを空にする方法の例については、「バケットの削除」を参照してください。このコードは、バケットのバージョニングが有効化されてるか否かにかかわらず、すべてのオブジェクトを削除します。それによって、このバケットは削除されます。単にバケットを空にしたいときは、バケットを削除するステートメントが解除されていることを確認します。

その他の AWS SDK の使用方法についての詳細は、「アマゾン ウェブ サービスのツール」を参照してください。

ライフサイクルポリシーを使用してバケットを空にする場合、ライフサイクルポリシーには、最新バージョン、最新でないバージョン削除マーカー、および不完全なマルチパートアップロードが含まれている必要があります。

すべてのオブジェクト、または特定のキーネームプレフィックスが付いたオブジェクトのサブセットの期限が終了するようにライフサイクルの設定ルールを追加できます。たとえば、バケット内のすべてのオブジェクトを削除するには、作成後 1 日でオブジェクトが期限切れするようにライフサイクルのルールを設定できます。

Amazon S3 は、バケットライフサイクルルールがサポートしています。このルールを使用すると、開始後指定された日数内に完了しないマルチパートアップロードを停止できます。ストレージコストを最小限に抑えるように、このライフサイクルルールを設定することをお勧めします。詳細については、「不完全なマルチパートアップロードを中止するためのバケットライフサイクルポリシーの設定」を参照してください。

ライフサイクル設定を使用してバケットを空にする方法の詳細については、バケットのライフサイクル設定の指定 および オブジェクトの有効期限 を参照してください。