fraXis
fraXis

Reputation: 3221

How can I tell if my file was successfully deleted from Amazon S3 using their SDK?

I am using the following code to delete a file from my S3. But how can I tell if the actual deletion of the file from S3 was successful or not?


These are the headers returned if it was successful:


Response Header: x-amz-id-2, Value: |Secret Key Removed|
Response Header: x-amz-request-id, Value: CA3F42D7F3B9215E
Response Header: Date, Value: Tue, 09 Aug 2


And not successful:


Response Header: x-amz-id-2, Value: fM3/|Secret Key Removed|+p+F2Adu1Rr3b2k
Amazon S3 Delete: Response Header: x-amz-request-id, Value: 0CFB9E7882F01BA3
Response Header: Date, Value: Tue, 09 Aug 2011 21:23:12 GMT
Response Header: Server, Value: AmazonS3



The only difference between the headers (other than different request ID's) is the there is an extra line returned from S3 that has a Server, Value: AmazonS3 value but I don't know if that is a reliable way for me to determine if a file was successfully deleted from S3



How can I modify the C# code to tell me if the deletion was successful or not?

Thanks.



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);
        }
    }
}

Upvotes: 4

Views: 8020

Answers (1)

Alex Gitelman
Alex Gitelman

Reputation: 24722

This article discusses similar issue. Generally, if your request succeeded then your object is deleted. Note, however, that due to eventual consistency, the object is not guaranteed to disappear immediately. That brings up the question of how will you determine that second request failed?

Upvotes: 2

Related Questions