保存到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,因爲該對象尚未被複制到所有數據中心。上面的代碼可能會拋出異常,即使投入成功。如果客戶端或服務器端發生故障,AmazonS3客戶端將拋出異常。 –