如何使用Amazon S3的SDK判断我的文件是否已成功从Amazon S3删除
本文关键字:Amazon S3 是否 成功 文件 删除 判断 何使用 SDK 我的 | 更新日期: 2023-09-27 18:05:17
我使用以下代码从S3中删除一个文件。但是我如何判断从S3中实际删除文件是否成功呢?
这些是成功返回的报头:
响应头:x-amz-id-2,值:|秘钥移除|
响应头:x-amz-request-id,值:CA3F42D7F3B9215E
响应头:日期,值:Tue, 2009年8月9日
而且不成功:
响应头:x-amz-id-2,值:fM3/|秘钥移除|+p+F2Adu1Rr3b2k
Amazon S3 Delete: Response Header: x-amz-request-id, Value: 0CFB9E7882F01BA3
响应头:Date, Value: Tue, 09 Aug 2011 21:23:12 GMT
响应头:Server,值:AmazonS3
报头之间的唯一区别(除了不同的请求ID)是从S3返回的额外行,该行具有Server, Value: AmazonS3值,但我不知道这对我来说是否是确定文件是否成功从S3删除的可靠方法
我如何修改c#代码来告诉我删除是否成功?
谢谢。
static void DeletingAnObject()
{
try
{
DeleteObjectRequest request = new DeleteObjectRequest();
request.WithBucketName(bucketName)
.WithKey(keyName);
using (DeleteObjectResponse response = client.DeleteObject(request))
{
WebHeaderCollection headers = response.Headers;
foreach (string key in headers.Keys)
{
Console.WriteLine("Response Header: {0}, Value: {1}", key, headers.Get(key));
}
}
}
catch (AmazonS3Exception amazonS3Exception)
{
if (amazonS3Exception.ErrorCode != null &&
(amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") ||
amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
{
Console.WriteLine("Please check the provided AWS Credentials.");
Console.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3");
}
else
{
Console.WriteLine("An error occurred with the message '{0}' when deleting an object", amazonS3Exception.Message);
}
}
}
本文讨论了类似的问题。通常,如果请求成功,则对象被删除。但是请注意,由于最终的一致性,不能保证对象立即消失。这就带来了一个问题:如何确定第二个请求失败了?