如何创建一个AWS CDN无效,使除少数URL外的所有URL无效



要使/images下所有URL的缓存无效,我们可以在AWS CloudFront中创建类似/images/*的无效。但是,如果我想清除除/images之外的所有URL的缓存,有什么方法可以做到吗?

我在AWS文档中没有看到这样的选项。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-指定对象路径

您可能需要考虑使用CloudFront发行版,其中一个适用于您的images,它很可能不会经常更改,另一个则适用于您网站的发行版(html、css、js(。

你可以让你的网站指向两个分发版,或者根据你使用的服务器(如果使用一个(,为发送到/images/*的请求创建一个重写规则,从cdn/images/*请求内容。


不是一个好的解决方案

正如Michael在评论中提到的,这个解决方案在成本方面会非常糟糕。

来自AWS文档:

无效请求前1000条路径不收取额外费用每月申请无效。此后,每条路径0.005美元请求无效。

不能使"全部"无效,只能使少数无效。您可以做的是列出S3存储桶中除了图像之外的所有文件。

试试类似的东西:

aws s3 ls | grep -v 'images'

然后根据这个结果创建无效项。

最新更新