即使成功执行了create-invalidation命令,AWS CloudFront也不会失效

时间:2019-01-24 19:42:10

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

我有一个AWS Cloudfront发行版位于托管静态网站的S3存储桶的前面。每次部署时,我都会使用create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*"命令(似乎已成功运行)使用AWS CLI使Cloudfront发行版无效。

问题在于它似乎没有失效。如果我在Chrome上打开生产网站,则表示该网站是旧版本,如果我在没有历史记录的隐身浏览器中打开,则将按预期提供最新版本。

我需要一些帮助,以了解可能的潜力,以便知道在哪里寻找。

1 个答案:

答案 0 :(得分:0)

如果您在S3中使用“ index.html”作为索引文档,但使用的路径中没有index.html,则需要使用Cloudfront无效的路径中没有index.html的路径。

因此,如果您在s3上具有以下路径:

/some/path/index.html

您正在像这样在Cloudfront上访问此文件:

http://example.com/some/path/

然后,您将需要执行此无效操作:

aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/

因此,基本上,您需要使浏览器将使用的路径无效,而不是使S3使用的路径无效。

如果您的网址中未使用斜杠,那么如果没有斜杠,您可能会无效。亚马逊还表示,如果您尚未标准化,则应同时进行。

因此,在这种情况下,您可以这样做:

aws cloudfront create-invalidation --distribution-id ${YOUR_DIST_ID} --paths /some/path/ /some/path

这将涵盖无效的两种情况。