![](/img/trans.png)
[英]Why aws cli dont invalidate correctly the cache - AWS Cloudfront
[英]AWS CLI CloudFront Invalidate All Files
我试图使整个静态网站无效。 以下命令似乎不会使/index.html
失效,并给出了要失效的项目的奇怪输出,如下所示。 这种 AWS CLI 行为是正常的还是我遗漏了什么? 谢谢!
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths /*
输出:
{
"Invalidation": {
"Status": "InProgress",
"InvalidationBatch": {
"Paths": {
"Items": [
"/lib32",
"/home",
"/vmlinuz",
"/core",
"/proc",
"/var",
"/dev",
"/usr",
"/etc",
"/initrd.img",
"/cdrom",
"/lost+found",
"/root",
"/tmp",
"/lib",
"/dead.letter",
"/lib64",
"/boot",
"/sys",
"/run",
"/bin",
"/sbin",
"/mnt",
"/opt",
"/snap",
"/media",
"/copyright",
"/srv"
],
"Quantity": 28
},
那是你的 shell 进行 本地文件名的扩展。
这就是你本质上要求的,因为*
没有被引用。
无论是
指定--paths '*'
还是
--paths '/*'
¹ 都会做你想要的。 引用通配符会将其保留为文字字符串,而不是您看到的内容。
¹CloudFront 控制台允许您指定*
或/*
以使整个分配无效; 相比之下,CLI 需要/*
。 反过来,这是因为底层 API 也需要/*
。 当您在控制台中使用*
,在控制台向 CloudFront API 发出请求之前,控制台会以静默方式添加前导斜杠。
通过 aws cli 使 cloudfront 分发失效的示例:
aws cloudfront create-invalidation --distribution-id <DistributionID> --paths "/*"
示例:
aws cloudfront create-invalidation --distribution-id E1B1A4GHK9TTE --paths "/*"
要列出或获取 cloudfront 分发 ID,您可以使用控制台或通过 cli :
aws cloudfront list-distributions
aws cloudfront list-distributions | grep Id
“/*”只会使根中的对象无效。
您可以发送多个通配符路径以使 N 个文件夹级别层次结构中的所有文件无效。 例如要深入达到 5 个级别:
read -p "Cloud distribution: " clouddist
aws cloudfront create-invalidation --distribution-id $clouddist --paths "/*" "/*/*" "/*/*/*" "/*/*/*/*" "/*/*/*/*/*"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.