为什么AWS CLI不会正确使缓存无效-AWS Cloudfront

时间:2018-11-22 13:41:41

标签: amazon-web-services jenkins amazon-cloudfront pipeline aws-cli

我创建了一个Jenkins作业,该作业在每次部署前端项目时都会使缓存无效。问题是,尽管AWS网站显示缓存正在失效,但是当作业完成时,并没有完全清除缓存,因此我需要通过AWS网站手动使它失效。

我使用的自动使缓存无效的方法是通过执行以下命令的aws container

  • aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths /* > output.json

输出文件将包含一个json,可在其中获取不同键:值。我使用的两个是IdStatus。创建失效后,我执行另一个流水线步骤:

  • aws cloudfront get-invalidation --distribution-id ${DISTRIBUTION_ID} --id ${id_invalidator} > status_invalidation.json

使用先前的命令,我每隔50秒(通过sleep 50)向API请求无效状态。当验证返回“状态=已完成”时,作业完成。这种情况在while循环内。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

您始终必须在命令行上用*字符引用表达式,以避免局部shell扩展。正确的语法是这样的:

--paths '/*'

否则,您将根据本地文件系统根目录中的内容(由*捕获,并由Shell展开)来使名称无效。