刪除儲存貯體 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

刪除儲存貯體

您可以刪除空的 Amazon S3 儲存貯體。刪除儲存貯體前,請考量下列事項:

故障診斷

如果您無法刪除 Amazon S3 儲存貯體,請考慮下列事項:

  • 確保儲存貯體為空 – 您只能刪除其中未包含任何物件的儲存貯體。確保儲存貯體為空。

  • 確保未附加任何存取點 - 您只能刪除其未附加任何存取點的儲存貯體。刪除儲存貯體之前,請先刪除任何附加至儲存貯體的存取點。

  • AWS Organizations 服務控制策略 (SCPs) — 服務控制策略可以拒絕值區的刪除權限。如需相關資訊SCPs,請參閱 AWS Organizations 使用者指南

  • s3:DeleteBucket 權限 — 如果您無法刪除儲存貯體,請與IAM管理員合作確認您擁有s3:DeleteBucket權限。如需有關如何檢視或更新IAM權限的資訊,請參閱《IAM使用指南》中的〈變更使IAM用者的權限

  • s3:DeleteBucket deny 陳述式 — 如果您在IAM政策中擁有s3:DeleteBucket權限,且無法刪除儲存貯體,則儲存貯體政策可能會包含s3:DeleteBucket. 依預設,由建立的值區 ElasticBeanstalk 具有包含此陳述式的原則。您必須先刪除此陳述式或儲存貯體政策,才能刪除儲存貯體。

重要

儲存貯體名稱是唯一的。如果刪除值區,則另一個值區 AWS 用戶可以使用該名稱。若希望繼續使用相同的儲存貯體名稱,請勿刪除該儲存貯體。建議您清空儲存貯體,並保留它。

刪除 S3 儲存貯體
  1. 登入到 AWS Management Console 並打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. Buckets (儲存貯體) 清單中,選取要刪除之儲存貯體名稱旁的選項,然後選擇頁面頂端的 Delete (刪除)。

  3. Delete bucket (刪除儲存貯體) 頁面上,在文字欄位中輸入儲存貯體名稱以確認您要刪除該儲存貯體,然後選擇 Delete bucket (刪除儲存貯體)。

    注意

    如果儲存貯體包含任何物件,請在刪除之前清空儲存貯體,方法是選取 This bucket is not empty (此儲存貯體不是空的) 錯誤警示中的清空儲存貯體組態連結,並遵循 Empty bucket (清空儲存貯體) 頁面上的指示。然後返回 Delete bucket (刪除儲存貯體) 頁面並刪除儲存貯體。

  4. 若要確認您是否已刪除儲存貯體,請打開 Buckets (儲存貯體) 列表,然後輸入您已刪除的儲存貯體名稱。如果找不到儲存貯體,就表示已成功刪除。

下列範例說明如何使用 AWS SDK對於爪哇。首先,此程式碼會刪除儲存貯體中的物件,然後它會刪除儲存貯體。有關其他的信息 AWS SDKs,請參閱 Amazon Web Services 的工具

Java

下列 Java 範例示範刪除含有物件的儲存貯體。此範例示範刪除所有物件後,也會刪除儲存貯體。此範例也適用於已啟用版本控制或未啟用版本控制的儲存貯體。

注意

對於未啟用版本控制的儲存貯體,您可以直接刪除所有物件,然後刪除儲存貯體。對於已啟用版本控制的儲存貯體,您一定需先刪除所有物件版本,然後才能刪除儲存貯體。

如需建立和測試工作範例的指示,請參《 AWS SDK for Java 開發人員指南。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.util.Iterator; public class DeleteBucket2 { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Delete all objects from the bucket. This is sufficient // for unversioned buckets. For versioned buckets, when you attempt to delete // objects, Amazon S3 inserts // delete markers for all objects, but doesn't delete the object versions. // To delete objects from versioned buckets, delete all of the object versions // before deleting // the bucket (see below for an example). ObjectListing objectListing = s3Client.listObjects(bucketName); while (true) { Iterator<S3ObjectSummary> objIter = objectListing.getObjectSummaries().iterator(); while (objIter.hasNext()) { s3Client.deleteObject(bucketName, objIter.next().getKey()); } // If the bucket contains many objects, the listObjects() call // might not return all of the objects in the first listing. Check to // see whether the listing was truncated. If so, retrieve the next page of // objects // and delete them. if (objectListing.isTruncated()) { objectListing = s3Client.listNextBatchOfObjects(objectListing); } else { break; } } // Delete all object versions (required for versioned buckets). VersionListing versionList = s3Client.listVersions(new ListVersionsRequest().withBucketName(bucketName)); while (true) { Iterator<S3VersionSummary> versionIter = versionList.getVersionSummaries().iterator(); while (versionIter.hasNext()) { S3VersionSummary vs = versionIter.next(); s3Client.deleteVersion(bucketName, vs.getKey(), vs.getVersionId()); } if (versionList.isTruncated()) { versionList = s3Client.listNextBatchOfVersions(versionList); } else { break; } } // After all objects and object versions are deleted, delete the bucket. s3Client.deleteBucket(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client couldn't // parse the response from Amazon S3. e.printStackTrace(); } } }

您可以刪除包含物件的值區 AWS CLI 如果它沒有啟用版本控制。當您刪除內有物件的儲存貯體時,系統也會永久刪除該儲存貯體中的所有物件,包含轉換到 S3 Glacier 儲存體方案的物件。

如果您的值區未啟用版本控制,您可以使用 rb (移除值區) AWS CLI 帶有--force參數的命令來刪除值區及其中的所有對象。此命令會先刪除所有物件,再刪除儲存貯體。

如果啟用了版本控制,則不會在此過程中刪除版本控制物件,這將導致儲存貯體刪除失敗,因為儲存貯體不會為空。如需刪除使用版本控制物件的資訊,請參閱刪除物件版本

$ aws s3 rb s3://bucket-name --force

如需詳細資訊,請參閱搭配使用高階 S3 命令 AWS Command Line Interface在 AWS Command Line Interface 使用者指南。