以下是在部署过程中执行的脚本示例,用于使 CloudFront 分发无效。目标是使整个分发中的所有内容无效,因此我们将其用作/
路径。
aws cloudfront create-invalidation --distribution-id SOMEDISTRIBUTIONID --paths /
但CloudFront 无效文档建议失效路径使用通配符,如下所示:
aws cloudfront create-invalidation --distribution-id SOMEDISTRIBUTIONID --paths "/*"
这两种路径论证有什么区别?它们都是使一切无效,还是都无效?价格有区别吗?
答案1
除非是未记录的特殊情况,否则无效/
只会使主页无效。
请注意,从 shell 中,需要引用'/*'
以防止 shell 扩展。
没有价格差异。所有无效化的费用相同根据指定的路径,路径是否匹配 0 个、1 个、多个还是所有文件。
价格相同且匹配一个或全部都没有区别的原因并未说明,但推测是失效会做两件不同的事情 - 它们最初在分布上设置带有时间戳的标记记录,当缓存命中时会进行检查,如果对象与失效记录匹配且早于时间戳,则命中变为未命中。然后在后台清除对象并删除标记。如果是真的,这是一个绝妙的设计,而且它几乎必须是这样的,因为失效非常快,即使对于也是如此/*
。
每个 AWS 账户(而不是每个分配)每月提交的前 1,000 条无效路径是免费的。
答案2
AWS 新手须知
如果您使多条路径无效,则每条路径都需要付费,因此通配符会更便宜。
但是“正在进行”的通配符失效的限制非常低(约 15),而单个文件的相同限制却相当高(约 3000?)。因此,如果您计划在一分钟内提交许多通配符失效,您将需要一个队列和处理器,这可能会抵消成本节省。