上传后一分钟内 Cloudfront 返回 403

上传后一分钟内 Cloudfront 返回 403

我在 S3 存储桶前面有一个 CloudFront 发行版。CloudFront URL 受到限制,并且密钥必须经过 URL 签名。S3 存储桶也受到限制,只允许 CloudFront 读取

有时,在我成功将图像上传到我的 s3 后,当我随后尝试检索图像时,cloudfront 返回 403。这种情况持续约一分钟,之后 cloudfront 开始正确提供图像。

即使图像成功上传后也会发生这种情况,我可以通过前往 s3 控制台手动查看它。

答案1

某些原因导致您的文件在存储桶中出现之前就被 CloudFront 请求。CloudFront 的默认配置会导致这种情况被负面缓存长达 5 分钟。

默认情况下,当您的源返回 HTTP 4xx 或 5xx 状态代码时,CloudFront 会缓存这些错误响应五分钟,然后向源提交该对象的下一个请求,以查看导致错误的问题是否已解决以及请求的对象现在是否可用。

— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

如果浏览器或其他任何东西在将文件上传到 S3 完成之前尝试从该特定的 CloudFront 边缘(或任何边缘,如果请求恰好也经过区域边缘 - CloudFront 现在有两个边缘层)下载文件,则 S3 将返回错误,并且 CloudFront - 在该边缘位置 - 将缓存该错误并记住在接下来的 5 分钟内不要再尝试。

该计时器是可配置的。

您可以指定错误缓存持续时间——错误缓存最小 TTL— 对于 CloudFront 缓存的每个 4xx 和 5xx 状态代码。有关过程,请参阅配置错误响应行为

— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html

对于任何错误代码(如 403),将值设置为 0,以禁用错误缓存。

本回答内容改编自我在堆栈溢出

相关内容