【发布时间】:2015-10-24 17:01:31
【问题描述】:
在我们的应用程序中,我们必须通过 AWS Java SDK 上传的用户图像在后端下载以进行一些处理操作(调整大小、裁剪等)。有时,我们会收到以下错误:
com.amazonaws.services.s3.model.AmazonS3Exception:指定的键不存在。 (服务:Amazon S3;状态代码:404;错误代码:NoSuchKey;
但是这个键和这个路径保存的对象是存在的。我知道在 AWS 开发人员指南中会出现这种行为:
但是,有关更改的信息可能不会立即在 Amazon S3 中复制,您可能会观察到以下行为: 进程将新对象写入 Amazon S3 并立即尝试读取它。在更改完全传播之前,Amazon S3 可能会报告“密钥不存在”。
但是如何在我的代码中处理这个错误?我试图等待几毫秒,我试图重试下载这个对象 - 我所有的尝试都失败了。
try
{
Download download = s3TransferManager
.download(new GetObjectRequest(bucketName, key), new File(tempUrl));
download.waitForCompletion();
}
catch (AmazonS3Exception amazonS3Exception)
{
Thread.sleep(1000);
//retry 3 time.... }
我很高兴听到任何关于在这种情况下如何下载现有文件的建议。谢谢!
【问题讨论】:
标签: java amazon-web-services amazon-s3 aws-sdk