Amazon Simple Storage Service (Amazon S3) バケットに何百万ものオブジェクトが格納されています。ストレージ料金が請求されないよう、ライフスタイル設定ルールを使用してバケットを空にしたいと考えています。
解決策
重要: 次の解決策では、Amazon S3 バケット内のすべてのデータが完全に削除されます。データを復元することはできないため、削除する前に、バケット内のすべてのオブジェクトとデータを確認してください。
ライフサイクル設定ルールを使用してバケットを空にするには、コンソールまたは CLI を使用します。
コンソールを使用する
コンソールで、現行バージョンのオブジェクトを期限切れに設定し、過去のバージョンのオブジェクトを完全に削除するライフサイクル設定ルールを作成します。ルールを作成するには、次の手順を実行します。
- Amazon S3 コンソールを開きます。
- バケットの一覧から、空にするバケットを選択します。
- [管理] タブを選択します。
- [ライフサイクルルールの作成] を選択します。
- [ライフサイクルルール名] にルールの名前を入力します。
- [ルールの範囲を選択] で、[バケット内のすべてのオブジェクトに適用] を選択します。
- [このルールがバケット内のすべてのオブジェクトに適用されることに同意する] を選択します。
- [ライフサイクルルールのアクション] で、次のオプションを選択します。 [現行バージョンのオブジェクトを期限切れにする] [現行以外のバージョンのオブジェクトを完全に削除する] [期限切れオブジェクトの削除マーカーまたは、不完全なマルチパートアップロードを削除する]
- [現行バージョンのオブジェクトを期限切れにする] フィールドの [オブジェクト作成後の日数] フィールドに 1 と入力します。
- [オブジェクトの非現行バージョンを完全に削除する] フィールドの [オブジェクトが最新バージョンでなくなってからの日数] フィールドに 1 と入力します。
- すべてのバージョンを削除するには、[保持する新しいバージョンの数 (オプション)] フィールドを空白のままにしてください。
- [不完全なマルチパートアップロードを削除] を選択し、 [日数] フィールドに 1 と入力します。
- [ルールの作成] を選択します。
- 2 つ目のライフサイクルルールを作成するには、ステップ 4 ~ 7 を繰り返します。
- 次のオプションを選択します。 期限切れのオブジェクト削除マーカーまたは不完全なマルチパートアップロードを削除する。
- [期限切れのオブジェクト削除マーカーを削除する] を選択します。
- [ルールの作成] を選択します。
Amazon S3 はライフサイクルルールを毎日 1 回実行します。Amazon S3 が初めてルールを実行した後で、有効期限の対象となるすべてのオブジェクトに削除マークが付けられます。これで、削除対象としてマークされたオブジェクトの料金は請求されなくなります。
Amazon S3 はオブジェクトバージョンを非同期的に期限切れにし、削除マーカーを削除します。バケットが空になるまでに、ルールの実行に数日かかる場合があります。Amazon S3 における非同期オブジェクト削除に関する詳細については、「オブジェクトを失効させる」を参照してください。
CLI を使用する
次の手順を実行することで、AWS コマンドラインインターフェイス (AWS CLI) を使用して S3 バケットを空にするライフサイクルルールを作成することができます。
- JSON コンテンツを含むファイル (例: lifecycle-rules.json) を作成します。
JSON 例
{
"Rules": [{
"Expiration": {
"Days": 1
},
"ID": "FullDelete",
"Filter": {
"Prefix": ""
},
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 1
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 1
}
},
{
"Expiration": {
"ExpiredObjectDeleteMarker": true
},
"ID": "DeleteMarkers",
"Filter": {
"Prefix": ""
},
"Status": "Enabled"
}
]
}
- AWS CLI コマンドで JSON ファイルを使用します。
aws s3api put-bucket-lifecycle-configuration --bucket delete-marker-testing-demo --lifecycle-configuration file://lifecycle-rules.json
注: プレフィックスを追加することで、プレフィックスレベルでのみルールを適用できます。例を次に示します。
"Filter": {
"Prefix": "folder1/"
},
関連情報
バージョニングが有効なバケット内の、期限切れオブジェクトの削除マーカーを削除する
オブジェクトのライフサイクルを管理する
Amazon S3 オブジェクトとバケットを削除する方法を教えてください
バケットを削除する
バケットで S3 ライフサイクル設定を行う