Amazon S3是否向CloudFront发送失效信号?

Joe*_*Joe 15 amazon amazon-s3 amazon-cloudfront

我似乎无法在文档中看到明显的答案.

当我在S3上更新文件并且启用了CloudFront时,S3是否会向CloudFront发送失效信号?或者我需要在更新文件后自己发送?

Fre*_*ung 23

S3不会向CloudFront发送任何无效信息.默认情况下,CloudFront将保留信息,该信息最长可达缓存控件标头所指定的最大时间,该标头是从原始数据中检索数据时设置的(如果感觉相似,它可能会先从其缓存中删除项目).

您可以通过创建失效批处理来使缓存条目无效.这将花费您的资金:每月的前1000个请求是免费的,但除此之外每个请求的成本为0.005美元 - 如果您每天使1000个文件无效,则每月花费150美元(除非您可以使用通配符功能).您当然可以使用Amazon Lambda函数触发此事件以响应s3事件.

另一种方法是在对象更改时使用不同的路径(实际上是世代缓存键).类似地,您可以将一个查询参数附加到URL并在您希望cloudfront获取新副本时更改该查询参数(为此,您需要告诉CloudFront使用查询字符串参数 - 默认情况下它会忽略它们).

如果您只进行不频繁(但很大)的更改,另一种方法是简单地创建新的云端分发.

  • @RyanParman刚看到你的生物,所以我想我会解释一下!我完全了解CloudFront的工作方式(我自己用自己的原点来使用它).我只是认为在很多情况下我可以想到,如果没有使CloudFront失效,就没有必要允许您将新资源重新上传到S3,特别是当S3和CF是独立但紧密集成的时候.由于S3有这个信息("资源X改变了"),我的用例(为什么我写的问题)是我希望它发送失效.我看到你的用例,所以我想我们只是想把它用于不同的事情.但我相信我并不孤单. (3认同)
  • 如果将新版本上传到 S3 意味着您想要清除 CloudFront 中的缓存,那么这是一个错误的假设。是的,这可能是您正在寻找的行为,但 AWS _假设_这就是您想要的行为是自以为是的。在许多情况下,我会在 CloudFront 中缓存内容,因为我知道这些内容会根据我的设置过期,并且会提前在 S3 中暂存更新的内容。就我而言,自动失效与我想要的相反。 (2认同)
  • 没有假设,但它似乎是一个有用的参数. (2认同)
  • 我当然可以将旗杆提升为S3和CloudFront团队在未来的功能更新中应该考虑的事情.我现在就联系这些团队.谢谢! (2认同)