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