删除S3中的存储桶
问题描述:
我在寻找更好的方法来删除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中是否存在缺少的方法?
谢谢!
答
我不认为这是可能的。甚至没有自己的REST API支持删除一个非空斗:
DELETE斗
说明
DELETE操作的这种实现方式删除的URI命名桶。必须删除存储区中的所有对象(包括所有对象版本和删除标记),然后才能删除存储区本身。
(取自S3 REST API)。
通过调用删除多个对象请求,您正在以正确的方式执行此操作。请注意,如果您使用的是版本化存储桶,则在删除存储桶之前,必须删除所有版本中的所有对象。
答
无需API即可直接完成。有一个很简单的方法来删除S3水桶使用使用S3管理控制台的“生命周期”的设置:
选择要删除,然后转到“生命周期”属性下的水桶。
添加新的规则将新规则适用于“整桶”
点击右下角
“配置规则”按钮,在“操作上的对象”下拉,选择“永久删除”
将天数设置为“1”您已完成。水桶将在24小时内消失。