9

Amazon S3 への保存時にファイルのアップロードが約 1 回\週に 1 回失敗します (1\300)。次のコードは、ファイルが正しく保存されたことを確認するのに十分に機能しますが、もっと良い方法があると思わずにはいられません。ファイルが失敗した場合、例外はスローされないため、問題がどこにあるのかはわかりません。より良い確認のための提案はありますか?

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!");
4

1 に答える 1

9

API ドキュメントによると、送信したデータの計算された MD5 ハッシュに対して ETag 値を確認することをお勧めします。それらは明らかに一致するはずです。

「オブジェクトがネットワーク上で破損していないことを確認するには、オブジェクトの MD5 を計算し、それを Amazon S3 に PUT して、返された Etag を計算された MD5 値と比較します。」

http://docs.amazonwebservices.com/AmazonS3/latest/API/SOAPPutObject.html

それが役立つことを願っています

于 2012-09-17T07:11:35.970 に答える