我在s3桶前有一个云端分布。 Cloudfronturl受到限制,且密钥必须经过url签名。 s3桶也受到限制,只允许在云端进行读取
有时,在我成功将图像上传到s3后,当我随后尝试检索图像时,cloudfront会返回403。 这将持续大约一分钟,然后cloudfront开始正确地提供图像。
即使在图像上传成功后,也会发生这种情况,我可以通过转到s3控制台手动查看它。
CloudFront存在于存储桶中之前,有文件被请求。 CloudFront的默认configuration会导致负面caching长达5分钟。
默认情况下,当您的源返回HTTP 4xx或5xx状态码时,CloudFront会将这些错误响应caching五分钟,然后将对象的下一个请求提交给您的源,以查看导致错误的问题是否已解决,请求对象现在可用。
– http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html
如果浏览器或其他任何设备尝试从该特定的CloudFront边缘(或任何边缘,如果请求碰巧经过区域边缘 – CloudFront现在有两个边缘层)下载文件,则上传到S3完成,S3会返回一个错误,而CloudFront – 在这个边缘位置 – 将会caching这个错误,并且在接下来的5分钟内记住不要再次尝试。
这个定时器是可configuration的。
您可以为CloudFrontcaching的每个4xx和5xx状态代码指定错误caching持续时间( 错误caching最小TTL) 。 有关过程,请参阅configuration错误响应行为 。
– http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html
将任何错误代码(如403)的值设置为0,您要在其中禁用错误caching。
在这个答案的内容是从我原来的post改写堆栈溢出 。