我有儲存數百萬個物件的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我想使用生命週期組態規則清空儲存貯體,以避免支付儲存費用。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
**注意:**此生命週期組態指南僅適用於一般用途的 Amazon S3 儲存貯體。目錄型儲存貯體有不同的生命週期管理需求。資料表型儲存貯體不支援生命週期組態規則。
**重要:**下列解決方案會永久刪除 S3 儲存貯體中的所有資料。因為您無法復原資料,因此在刪除之前,請先檢閱儲存貯體中的所有物件和資料。
若要清空具有生命週期組態規則的儲存貯體,請使用主控台或 AWS CLI。
使用主控台
您可以在主控台中建立生命週期組態規則,讓目前版本的物件過期,並永久刪除舊版本物件。若要建立規則,請完成下列步驟:
- 開啟 Amazon S3 console (Amazon S3 主控台)。
- 從一般用途儲存貯體清單中,選取要清空的儲存貯體。
- 選擇 Management (管理) 索引標籤。
- 選擇建立生命週期規則。
- 對於生命週期規則名稱,輸入規則名稱。
- 對於選擇規則範圍,選擇套用至儲存貯體中的所有物件。
- 選取我確認此規則將套用至儲存貯體中的所有物件。
- 對於 Lifecycle rule actions (生命週期規則動作),請選取下列選項:
讓目前版本的物件過期
永久刪除非目前版本的物件
刪除過期物件刪除標記或未完成的分段上傳
- 在讓目前版本的物件過期欄位,針對物件建立後的天數欄位輸入 1。
- 在永久刪除非目前版本的物件欄位,針對物件成為非目前版本後的天數欄位輸入 1。
- 若要刪除所有版本,請將Number of newer versions to retain (Optional) (要保留的較新版本數量 (選用)) 欄位保留空白。
- 選取 Delete incomplete multipart uploads (刪除未完成的分段上傳),並在 Number of days (天數) 欄位輸入 1。
- 選擇 Create rule (建立規則)。
- 若要建立第二個生命週期規則,請重複步驟 4-7。
- 選取 Delete expired object delete markers or incomplete multipart uploads (刪除過期物件刪除標記或未完成的分段上傳)。
- 選取 Delete expired object delete markers (刪除過期物件刪除標記)。
- 選擇 Create rule (建立規則)。
Amazon S3 每天執行一次生命週期組態規則。在 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 生命週期組態