.net 在S3中删除一个bucket
我正在寻找一种更好的方法来删除S3存储桶。 AWS SDK for.Net不允许删除非空存储桶和 没有任何重载的DeleteBucket来删除bucket中的任何子对象 这是我当前删除桶的方式- 检索bucket中的所有对象 删除对象 删除桶 //首先删除bucket中的所有对象-不能删除非空bucket.net 在S3中删除一个bucket,.net,sdk,amazon-s3,amazon-web-services,.net,Sdk,Amazon S3,Amazon Web Services,我正在寻找一种更好的方法来删除S3存储桶。 AWS SDK for.Net不允许删除非空存储桶和 没有任何重载的DeleteBucket来删除bucket中的任何子对象 这是我当前删除桶的方式- 检索bucket中的所有对象 删除对象 删除桶 //首先删除bucket中的所有对象-不能删除非空bucket using (ListObjectsResponse response = amazonS3Client.ListObjects(new ListObjectsRequest().WithBu
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中删除bucket有什么更好的方法吗?在S3中,我不需要首先获取对象。
在AWS SDK for.Net中是否有我缺少的方法
谢谢大家! 我认为这是不可能的。甚至他们的REST API也不支持删除非空的存储桶: 删除桶 描述 DELETE操作的这个实现删除URI中命名的bucket。必须先删除bucket中的所有对象,包括所有对象版本和删除标记,然后才能删除bucket本身 摘自
通过调用deletemultipleobjects请求,您的做法是正确的。请注意,如果您使用的是版本化的bucket,则必须在删除bucket之前删除所有版本中的所有对象。我认为这是不可能的。甚至他们的REST API也不支持删除非空的存储桶: 删除桶 描述 DELETE操作的这个实现删除URI中命名的bucket。必须先删除bucket中的所有对象,包括所有对象版本和删除标记,然后才能删除bucket本身 摘自
通过调用deletemultipleobjects请求,您的做法是正确的。请注意,如果您使用的是版本化的bucket,则必须在删除bucket之前删除其所有版本中的所有对象。不使用API直接执行此操作更容易。使用S3管理控制台的生命周期设置,有一种非常简单的方法可以删除S3中的bucket: 选择要删除的存储桶,然后转到“属性”下的“生命周期” 添加新规则设置要应用于整个bucket的新规则 单击右下角的配置规则按钮 在“对对象的操作”下拉列表中,选择“永久删除” 将完成的天数设置为1。水桶将在24小时内消失
不使用API就可以更轻松地直接执行。使用S3管理控制台的生命周期设置,有一种非常简单的方法可以删除S3中的bucket: 选择要删除的存储桶,然后转到“属性”下的“生命周期” 添加新规则设置要应用于整个bucket的新规则 单击右下角的配置规则按钮 在“对对象的操作”下拉列表中,选择“永久删除” 将完成的天数设置为1。水桶将在24小时内消失
以防还有人对这个老问题感兴趣。有人像我一样偶然发现了它。尤其是那些使用.NETCore进行S3交互的人 与此同时,官方的AWS S3 Utils类出现了,它有一个名为DeleteS3BucketWithObjectsAsync的函数,支持删除bucket及其所有对象。 可以找到官方文件
它是AWSSDK.S3 nuget包中AmazonS3Util名称空间的一部分。以防有人对这个老问题感兴趣。有人像我一样偶然发现了它。尤其是那些使用.NETCore进行S3交互的人 与此同时,官方的AWS S3 Utils类出现了,它有一个名为DeleteS3BucketWithObjectsAsync的函数,支持删除bucket及其所有对象。 可以找到官方文件
它是AWSSDK.S3 nuget包中AmazonS3Util名称空间的一部分。非常感谢!这似乎是一个很好的方法。谢谢,尝试了这个方法并得到了以下错误:Amazon.S3.AmazonS3Exception:没有密钥的版本子资源-Amazon.Runtime.Internal.HttpErrorResponseException:远程服务器返回了一个错误:400个错误请求。---System.Net.WebException:远程服务器返回错误:400错误请求。我可以连接客户机,并且bucket与对象一起存在。有什么想法吗?谢谢谢谢!这似乎是一个很好的方法。谢谢,尝试了这个方法并得到了以下错误:Amazon.S3.AmazonS3Exception:没有密钥的版本子资源-Amazon.Runtime.Internal.HttpErrorResponseException:远程服务器返回了一个错误:400个错误请求。---System.Net.WebException:远程服务器返回错误:400错误请求。我可以连接客户机,并且bucket与对象一起存在。有什么想法吗?谢谢