2012-08-03 213 views
1

我在尋找更好的方法來刪除S3存儲桶。
適用於.Net的AWS開發工具包不允許刪除非空桶,並且
沒有任何重載DeleteBucket()刪除存儲桶中的任何子對象。刪除S3中的存儲桶

這是我目前刪除水桶的方式 -

  • 檢索桶中的所有對象
  • 刪除對象
  • 刪除桶

//刪除的所有對象桶先 - 非空桶不能刪除

using (ListObjectsResponse response = amazonS3Client.ListObjects(new ListObjectsRequest().WithBucketName(bucket.Name))) 
{ 
    if (response.S3Objects.Count > 0) 
    { 
     List<KeyVersion> keys = response.S3Objects.Select(obj => new KeyVersion(obj.Key)).ToList(); 
     DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest 
     { 
      BucketName = bucket.Name, 
      Keys = keys 
     }; 
     amazonS3Client.DeleteObjects(deleteObjectsRequest); 
    } 
} 

//Delete Bucket 
DeleteBucketRequest request = new DeleteBucketRequest 
{ 
    BucketName = bucket.Name 
}; 
amazonS3Client.DeleteBucket(request); 

是否有更好的方法來刪除S3中的存儲桶 - 我不需要首先獲取對象。
在AWS SDK for .NET中是否存在缺少的方法?

謝謝!

回答

1

我不認爲這是可能的。甚至沒有自己的REST API支持刪除一個非空鬥:

DELETE鬥
說明
DELETE操作的這種實現方式刪除的URI命名桶。必須刪除存儲區中的所有對象(包括所有對象版本和刪除標記),然後才能刪除存儲區本身。

(取自S3 REST API)。

通過調用刪除多個對象請求,您正在以正確的方式執行此操作。請注意,如果您使用的是版本化存儲桶,則在刪除存儲桶之前,必須刪除所有版本中的所有對象。

0

無需API即可直接完成。有一個很簡單的方法來刪除S3水桶使用使用S3管理控制檯的「生命週期」的設置:

  • 選擇要刪除,然後轉到「生命週期」屬性下的水桶。

  • 添加新的規則將新規則適用於「整桶」

  • 點擊右下角

  • 「配置規則」按鈕,在「操作上的對象」下拉,選擇「永久刪除」

  • 將天數設置爲「1」您已完成。水桶將在24小時內消失。