Как узнать, был ли мой файл успешно удален из Amazon S3 с помощью их SDK? - PullRequest
2 голосов
/ 10 августа 2011

Я использую следующий код для удаления файла из моего S3.Но как я могу определить, было ли фактическое удаление файла из S3 успешным или нет?


Это заголовки, возвращаемые в случае успеха:


Заголовок ответа: x-amz-id-2, значение: | Удален секретный ключ |
Заголовок ответа: x-amz-request-id, значение: CA3F42D7F3B9215E
Заголовок ответа: дата, значение: вт, 09 августа 2


И не успешно:


Заголовок ответа: x-amz-id-2, значение: fM3 / | Удален секретный ключ | + p + F2Adu1Rr3b2k
Amazon S3 Удалить: Заголовок ответа: x-amz-request-id, Значение: 0CFB9E7882F01BA3
заголовок ответа: дата, значение: вт, 09 августа 2011 г. 21:23:12 GMT
заголовок ответа: сервер, значение: AmazonS3



Единственная разница между заголовками (кроме разных идентификаторов запросов) заключается в том, что из 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);
        }
    }
}

1 Ответ

2 голосов
/ 10 августа 2011

В этой статье обсуждается аналогичная проблема .Как правило, если ваш запрос выполнен успешно, ваш объект удаляется.Заметьте, однако, что из-за возможной последовательности объект не обязательно исчезнет немедленно.Возникает вопрос: как вы определили, что второй запрос не прошел?

...