為什麼我無法刪除 Amazon S3 儲存貯體?

2 分的閱讀內容
0

我想解決無法刪除 Amazon Simple Storage Service (Amazon S3) 儲存貯體的問題。

解決方法

先決條件

在刪除 Amazon S3 儲存貯體之前,請執行以下動作:

  • 對於以靜態網站方式託管的儲存貯體,請檢查並更新與該儲存貯體相關的 Amazon Route 53 託管區域設定。
  • 如果儲存貯體從 Elastic Load Balancing (ELB) 接收日誌資料,則在刪除儲存貯體之前,請停止向該儲存貯體傳送日誌。

注意: 如果刪除儲存貯體名稱,則所有使用者都可以使用該名稱。如果有其他 AWS 帳戶使用該儲存貯體名稱,則您無法重複使用該儲存貯體名稱。最佳做法是不要刪除儲存貯體。而是清空它。

S3 儲存貯體不為空

若要刪除 Amazon S3 儲存貯體,該儲存貯體必須是空的。使用 Amazon S3 主控台、AWS Command Line Interface (AWS CLI) 或 SDK,手動清空儲存貯體。如果儲存貯體很大且您設定了版本控制,則手動刪除物件需要很長的時間。在這種情況下,請使用 Amazon S3 生命週期組態來清空儲存貯體

注意: 如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

對於設定了版本控制或處於已暫停狀態的儲存貯體,請在生命週期組態中包含以下規則:

  • 規則 1: 物件的所有目前版本會在建立 X 天後過期。當物件在 Y 天後變為非目前版本時,將永久刪除它們。
  • 規則 2: 所有單一刪除標記和不完整的分段上傳將在 Z 天後過期。

對於未設定版本控制的儲存貯體,請在生命週期組態中包含以下規則:

  • 規則 1: 物件建立 X 天後,所有目前版本將過期。
  • 規則 2: 所有不完整的分段上傳將在 Z 天後過期。

注意: 若要快速刪除儲存貯體,請將 XYZ 設定為 1 天。

Amazon S3 生命週期規則會每天執行一次。執行生命週期規則後,所有符合到期條件的物件都會標記為刪除。由於生命週期政策動作是非同步的,因此需要幾天才能從儲存貯體實際刪除物件。當物件標記為刪除後,您將不再需要為與該物件關聯的儲存空間付費。

使用 AWS CLI

執行下列命令可從 Amazon S3 儲存貯體中永久刪除未設定版本控制的物件:

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

執行以下命令,以永久刪除已暫停或已設定版本控制的 Amazon S3 儲存貯體中的所有物件:

aws s3api delete-objects --bucket bucket-name --delete "$(aws s3api list-object-versions --bucket bucket-name --output=json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"

注意:bucket-name 替換為您的 Amazon S3 儲存貯體名稱。

使用 Amazon S3 主控台

請完成下列步驟:

  1. 開啟 Amazon S3 主控台
  2. 在導覽窗格中,選擇要清空的儲存貯體,然後選擇 Empty (清空)。
  3. Empty bucket (清空儲存貯體) 頁面上,在文字欄位中輸入 permanently delete (永久刪除) 以刪除儲存貯體中的所有物件,然後選擇 Empty (清空)。
  4. (選用) 檢查空儲存貯體: 狀態頁面可查看進度。

注意: 如果 Amazon S3 儲存貯體中的物件版本處於治理模式,則 AWS Identity and Access Management (IAM) 身分需要 s3:BypassGovernanceRetention 權限。若要繞過治理模式,您必須在請求中包含 x-amz-bypass-governance-retention:true 標頭。對於您在 AWS 管理主控台上發出的請求,主控台會自動將標頭套用至具有繞過治理模式所需權限的請求。

保留期內,IAM 身分無法刪除在合規模式下受保護的物件版本,包括 AWS 帳戶根使用者。保留期過後,刪除合規性保護的物件。儲存貯體清空後,刪除 Amazon S3 儲存貯體。

存取點與儲存貯體相關聯

在刪除 Amazon S3 儲存貯體之前,請刪除附加到該儲存貯體的所有存取點。您無法刪除相同帳號內已附加 S3 存取點多區域存取點的儲存貯體。

IAM 身分沒有足夠的權限

在用於刪除儲存貯體 IAM 身分的 IAM 政策中,授予 DeleteBucket 權限。或者,在儲存貯體政策中包含 delete-bucket API 動作。

明確的「拒絕」陳述式可防止刪除

明確的拒絕陳述式優先於明確的允許陳述式。確認 IAM 身分、儲存貯體和虛擬私有雲端 (VPC) 政策不包含明確的拒絕陳述式。

當 AWS Elastic Beanstalk 建立儲存貯體時,政策會預設包含明確的拒絕陳述式。在刪除 Amazon S3 儲存貯體之前,請刪除明確的拒絕陳述式或儲存貯體政策。

AWS 官方
AWS 官方已更新 3 個月前