AWS CloudFront未更新

时间:2018-11-21 16:26:19

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

每当我对S3存储桶进行更改时,我的CloudFront都不会更新为新内容。我必须每次都创建一个无效项才能查看新内容。每当我将内容推送到S3存储桶时,还有其他方法可以使CloudFront加载新内容吗?

3 个答案:

答案 0 :(得分:0)

您已使用缓存设置创建了S3源,或者已将缓存标头添加到S3存储桶策略中。

如果您检查浏览器请求,则可以检查缓存标题以及为什么要缓存它。

您可以找到http缓存头的列表及其使用方式here

希望有帮助。

答案 1 :(得分:0)

Cloudfront将缓存保留在边缘点至少一小时。

根据docs的建议,您可以使用版本控制的文件。

  

最流行页面的文件的新版本可能最多不能提供24小时的服务,因为CloudFront可能在您用新版本替换文件之前就已经检索了这些页面的文件

所以我猜你最好的选择是无效。

编辑:如果更改版本文件的名称,则可以防止其版本化。

答案 2 :(得分:0)

让我直接回答您的问题。

  

每当我对S3存储桶进行更改时,CloudFront都不会更新   到新内容。我每次都要创建一个无效   以便查看新内容。

是的,除非您将TTL值定义为零(0),否则这是CloudFront中的默认行为。

  

是否存在使CloudFront随时加载新内容的另一种方法   我将内容推送到我的S3存储桶中?

您可以使用AWS Lambda自动执行失效。去做这个;

  1. 创建一个S3事件触发器,以便在将任何新内容上传到S3时调用lambda函数。
  2. 在Lambda函数内,使用AWS CloudFront SDK createInvalidation方法编写代码以使CloudFront发行版无效。

注意:确保Lambda函数具有具有策略权限的IAM角色,以触发CloudFront中的失效。