2012-08-03 184 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小时内消失。