Około raz na tydzień przesyłanie pliku kończy się niepowodzeniem podczas zapisywania do Amazon S3 (1 \ 300). Poniższy kod działa wystarczająco dobrze, aby potwierdzić, że plik został zapisany poprawnie, ale nie mogę pomóc, ale myślę, że jest lepszy sposób. Kiedy plik nie powiedzie się, nie jest zgłaszany wyjątek, więc nigdy nie jestem pewien, gdzie leży problem. Wszelkie sugestie dotyczące lepszego potwierdzenia?Amazon S3 PutObject() zwraca wartość, aby potwierdzić powodzenie?
AmazonS3Config _s3Config = new AmazonS3Config
{
ServiceURL = "s3.amazonaws.com",
CommunicationProtocol = Protocol.HTTPS,
};
using (AmazonS3 client = AWSClientFactory.CreateAmazonS3Client("accessKey", "secretAccessKey", _s3Config))
{
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName("bucketName")
.WithFilePath("filePath")
.WithKey("keyName");
request.WithServerSideEncryptionMethod(ServerSideEncryptionMethod.AES256);
PutObjectResponse response = client.PutObject(request);
// what property from the response object can I check to confirm success???
}
// the following DoesObjectExist() function uses the GetObjectMetadata() function
if (!DoesObjectExist(keyName))
throw new Exception("Failed!");
W domyślnym regionie standardu USA, S3 zapewnia ostatecznie spójne zapisy. Wykonywanie wywołania 'GetObjectMetadata()' bezpośrednio po 'PutObject()' może dać 404, ponieważ obiekt nie został jeszcze skopiowany do wszystkich centrów danych. Powyższy kod może spowodować wyjątek, nawet jeśli instalacja zakończyła się powodzeniem. Klient AmazonS3 wygeneruje wyjątek, jeśli wystąpił błąd po stronie klienta lub po stronie serwera. –