为什么 aws cli 不能使缓存正确失效 - AWS Cloudfront
Why aws cli dont invalidate correctly the cache - AWS Cloudfront
我创建了一个 Jenkins 作业,每次部署我的前端项目时都会使缓存失效。问题是虽然AWS网站上显示缓存正在失效,但是当作业完成时,缓存并没有完全清除,所以我需要通过AWS网站手动将其失效...
我使用的自动使缓存失效的方法是通过aws container,我在其中执行以下命令:
aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths /* > output.json
输出文件将包含一个 json,我可以在其中获取不同的键:值。我使用的其中两个是 Id
和 Status
。创建失效后,我将执行以下另一个管道步骤:
aws cloudfront get-invalidation --distribution-id ${DISTRIBUTION_ID} --id ${id_invalidator} > status_invalidation.json
使用之前的命令,我每 50 秒(通过 sleep 50
)查询一次 API 失效状态。当验证return一个`Status = Completed'时,作业就完成了。此条件在 while 循环内。
有人知道为什么会这样吗?
您始终必须在命令行中用 *
字符引用表达式,以避免局部 shell 扩展。正确的语法是这样的:
--paths '/*'
否则,您将尝试根据本地文件系统根目录中的内容使名称无效(由 *
捕获,由 shell 扩展)。
我创建了一个 Jenkins 作业,每次部署我的前端项目时都会使缓存失效。问题是虽然AWS网站上显示缓存正在失效,但是当作业完成时,缓存并没有完全清除,所以我需要通过AWS网站手动将其失效...
我使用的自动使缓存失效的方法是通过aws container,我在其中执行以下命令:
aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths /* > output.json
输出文件将包含一个 json,我可以在其中获取不同的键:值。我使用的其中两个是 Id
和 Status
。创建失效后,我将执行以下另一个管道步骤:
aws cloudfront get-invalidation --distribution-id ${DISTRIBUTION_ID} --id ${id_invalidator} > status_invalidation.json
使用之前的命令,我每 50 秒(通过 sleep 50
)查询一次 API 失效状态。当验证return一个`Status = Completed'时,作业就完成了。此条件在 while 循环内。
有人知道为什么会这样吗?
您始终必须在命令行中用 *
字符引用表达式,以避免局部 shell 扩展。正确的语法是这样的:
--paths '/*'
否则,您将尝试根据本地文件系统根目录中的内容使名称无效(由 *
捕获,由 shell 扩展)。