バケットを空にする
バケットの中身は、Amazon S3 コンソール、AWS SDK、または AWS Command Line Interface (AWS CLI) を使って空にします。バケットを空にすると、すべてのオブジェクトが削除されますが、バケットは保持されます。バケットを空にすると、元に戻すことはできません。バケットを空にするアクションの実行中にバケットに追加されたオブジェクトは、削除される場合があります。バケット自体を削除する前に、バケット内のすべてのオブジェクト (すべてのオブジェクトバージョンと削除マーカーを含む) を削除する必要があります。
S3 バージョニングが有効化または一時停止されたバケットを空にすると、そのバケット内のすべてのオブジェクトの、すべてのバージョンが削除されます。詳細については、「バージョニングが有効なバケットでのオブジェクトの操作」を参照してください。
バケットのライフサイクル設定を指定してオブジェクトの有効期限を終了させ、Amazon S3 がそのオブジェクトを削除できるようにすることもできます。詳細については、「バケットにライフサイクル設定を設定する」を参照してください。大きなバケットを空にするには、S3 ライフサイクル設定ルールを使用することをお勧めします。ライフサイクルの有効期限は非同期プロセスであるため、バケットが空になるまでのルールの実行には数日かかる場合があります。Amazon S3 が初めてルールを実行すると、有効期限の対象となるすべてのオブジェクトに削除対象のマークが付けられます。削除対象としてマークされたオブジェクトについては、請求が発生しなくなります。詳細については、「ライフサイクル設定ルールを使用して Amazon S3 バケットを空にするにはどうすればよいですか?
Amazon S3 コンソールを使用するとバケット内を空にできます。バケット内のすべてのオブジェクトを、バケットを削除することなく、削除できます。
S3 バケットを空にする
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[バケット名] リストから、空にしたいバケットの名前の横にあるバケットアイコンを選び、[空にする] を選択します。
-
[バケットを空にする] ページで、テキストフィールドにバケット名を入力することでバケットを空にすることを確定し、[Empty (空にする)] を選択します。
-
[バケットを空にする: ステータス] ページで、バケットを空にするプロセスの進行状況をモニタリングします。
AWS CLI を使ってバケットを空にできるのは、バケットでバージョニングが有効化されていない場合のみです。バージョニングが有効化されていない場合は、AWS CLI コマンドの rm
(削除) と --recursive
パラメータを使って、バケットを空にすることができます (または、特定のキーネームプレフィックスを持つオブジェクトのサブセットを削除できます)。
次の rm
コマンドは、たとえば doc
や doc/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 の使用方法についての詳細は、「アマゾン ウェブ サービスのツール
大きなバケットを空にするには、S3 ライフサイクル設定ルールを使用することをお勧めします。ライフサイクルの有効期限は非同期プロセスであるため、バケットが空になるまでのルールの実行には数日かかる場合があります。Amazon S3 が初めてルールを実行すると、有効期限の対象となるすべてのオブジェクトに削除対象のマークが付けられます。削除対象としてマークされたオブジェクトについては、請求が発生しなくなります。詳細については、「ライフサイクル設定ルールを使用して Amazon S3 バケットを空にするにはどうすればよいですか?
ライフサイクル設定を使用してバケットを空にする場合、設定には、最新バージョン、最新でないバージョン、削除マーカー、および不完全なマルチパートアップロードが含まれている必要があります。
すべてのオブジェクト、または特定のキーネームプレフィックスが付いたオブジェクトのサブセットの期限が終了するようにライフサイクルの設定ルールを追加できます。たとえば、バケット内のすべてのオブジェクトを削除するには、作成後 1 日でオブジェクトが期限切れするようにライフサイクルのルールを設定できます。
Amazon S3 は、バケットライフサイクルルールがサポートしています。このルールを使用すると、開始後指定された日数内に完了しないマルチパートアップロードを停止できます。ストレージコストを最小限に抑えるように、このライフサイクルルールを設定することをお勧めします。詳細については、「不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の設定」を参照してください。
ライフサイクル設定を使用してバケットを空にする方法の詳細については、バケットにライフサイクル設定を設定する および オブジェクトの有効期限 を参照してください。
設定済みの AWS CloudTrail を持つバケットを空にする
AWS CloudTrail は、オブジェクトの削除など、Amazon S3 バケット内のオブジェクトレベルのデータイベントを追跡します。CloudTrail イベントの記録先としてバケットを使用し、同じバケットからオブジェクトを削除する場合は、バケットを空にするときに新しいオブジェクトを作成している可能性があります。これを防ぐには、AWS CloudTrail 証跡を中止します。CloudTrail 証跡がイベントをログに記録しないようにする方法の詳細については、「AWS CloudTrail ユーザーガイド」の「証跡のログ記録をオフにする」を参照してください。
CloudTrail 証跡がバケットに追加されないようにするもう 1 つの方法は、バケットポリシーに s3:PutObject
ステートメントを追加することです。後で新しいオブジェクトをバケットに保存する場合は、この deny s3:PutObject
ステートメントを削除する必要があります。詳細については、「オブジェクト操作」および「IAM ユーザーガイド」の「IAM JSON ポリシー要素: 効果」を参照してください。