AWS CLI CloudFront使所有文件无效

neu*_*eno 25 command-line-interface amazon-web-services amazon-cloudfront

我试图使整个静态网站无效.以下命令似乎没有失效,/index.html并给出了一个奇数输出的项目,如下所示.这个AWS CLI行为是正常还是我遗漏了什么?谢谢!

aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths /*
Run Code Online (Sandbox Code Playgroud)

输出:

/index.html

Mic*_*bot 45

这是你的shell 扩展本地文件名.

这是你基本上要求的,因为*没有引用.

无论是--paths '*'指定--paths '/*'¹ 还是指定¹都会做你想要的.引用通配符会将其保留为文字字符串而不是您所看到的字符串.


¹CloudFront控制台允许您指定*或/*使整个分发无效; 相比之下,CLI期望/*.反过来,这是因为底层API也期望/*.*在控制台中使用时,控制台会在控制台向CloudFront API发出请求之前以静默方式添加前导斜杠.

  • 这对我有用。谢谢迈克尔。为了进一步贡献,在版本 `aws-cli/1.11.36 Python/2.7.12 Darwin/16.4.0 botocore/1.4.93` 上,使用 `--paths '*'` 值给出错误:`An error occurred (InvalidArgument) 调用 CreateInvalidation 操作时:您的请求包含一个或多个无效的失效路径。` 您应该使用 `--paths '/*'` 来代替成功响应 (2认同)
  • @damusix 感谢您提供有关需要领先 `/` 的提示。相应更新。 (2认同)
  • 我在 Windows 上使用 gitbash 并遇到了问题。我必须在命令中添加“MSYS_NO_PATHCONV=1”前缀。例如:`MSYS_NO_PATHCONV=1 aws cloudfront create-invalidation ...` (2认同)

Vla*_*nko 19

通过 aws cli 使 cloudfront 分发失效的示例:

aws cloudfront create-invalidation --distribution-id <DistributionID> --paths "/*"
Run Code Online (Sandbox Code Playgroud)

例子 :

aws cloudfront create-invalidation --distribution-id E1B1A4GHK9TTE --paths "/*"
Run Code Online (Sandbox Code Playgroud)

要列出或获取 cloudfront 分发 ID,您可以使用控制台或通过 cli :

aws cloudfront list-distributions 
aws cloudfront list-distributions | grep Id
Run Code Online (Sandbox Code Playgroud)


小智 12

也许在 Windows 上(使用 cmd)您可以使用不带引号的路径,但在 bash 环境(linux、mac)上,该字符*是一个特殊字符。您需要传递引号内的路径才能跨平台工作:

aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths '/*'
Run Code Online (Sandbox Code Playgroud)