Aproximadamente una vez \ semana, la carga de un archivo falla al guardar en Amazon S3 (1 \ 300). El siguiente código funciona lo suficientemente bien como para confirmar que el archivo se guardó correctamente, pero no puedo evitar pensar que hay una mejor manera. Cuando un archivo falla, no se lanza ninguna excepción, así que nunca estoy realmente seguro de dónde radica el problema. ¿Alguna sugerencia para una mejor confirmación?Amazon S3 PutObject() valor de retorno para confirmar el éxito?
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!");
En la región por defecto estándar de EE.UU., S3 ofrece escrituras finalmente consistentes. Hacer una llamada 'GetObjectMetadata()' inmediatamente después de 'PutObject()' puede dar un 404, porque el objeto aún no se ha copiado a todos los centros de datos. Su código anterior puede arrojar una excepción, incluso cuando el put fue exitoso. El cliente de AmazonS3 arrojará una excepción si hubo una falla, ya sea del lado del cliente o del servidor. –