将图像上传到s3" No Such Key"

时间:2017-06-05 16:55:21

标签: amazon-web-services amazon-s3 cdn amazon-cloudfront

我正在开发一个iOS应用程序,它允许用户更新和更改他们的头像,其中图像存储在子目录中的S3中,具体取决于他们的用户ID。例如:" /1005/avatar_3dseuori.jpg"。

我已设置cloudfront来分发存储在我的S3存储桶中的这些图像,但是我得到以下响应:

<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>

即使图像存在于我的存储桶中。如果我等待~5分钟,我就可以使用我的云端来源查看图像了。这是通常的等待期吗?

1 个答案:

答案 0 :(得分:2)

CloudFront充当S3源的前端缓存。

当你从CloudFront请求图像时,它会检查它的缓存,如果缓存中不存在(并且根据配置的TTL没有过期),那么它才会从S3源存储桶请求图像

如果您在S3中存在图像之前从CloudFront请求图像,则CloudFront将缓存NoSuchKey结果。这是因为该对象实际上还不存在于S3中。

将文件上传到S3后,CloudFront将继续使用缓存的NoSuchKey值进行响应,直到配置的生存时间到期为止。在你的情况下,这可能是“5分钟”。在那段时间之后,它会从S3重新请求图像,这次是肯定的结果。

要避免此问题,请确保阻止对不存在的图像的CloudFront请求。