1週間に約1回、Amazon S3(1 \ 300)に保存するとファイルのアップロードに失敗します。次のコードは、ファイルが正しく保存されていることを確認するのに十分うまく機能しますが、より良い方法があるとは思えません。ファイルが失敗しても例外はスローされないので、問題がどこにあるかはわかりません。より良い確認のための任意の提案?Amazon S3 PutObject()は成功を確認する戻り値ですか?
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!");
を役に立てば幸い、S3は、最終的には一貫性のある書き込みを提供します。 'PutObject()'の直後に 'GetObjectMetadata()'を呼び出すと、オブジェクトがまだすべてのデータセンタにコピーされていないため、404が返されます。上記のコードは、putが成功した場合でも例外をスローする可能性があります。 AmazonS3クライアントは、クライアント側またはサーバー側のいずれかに障害が発生した場合に例外をスローします。 –