【问题标题】:AWS CLI CloudFront Invalidate All FilesAWS CLI CloudFront 使所有文件无效
【发布时间】:2016-10-12 02:42:28
【问题描述】:

我试图使整个静态网站无效。以下命令似乎不会使/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
        }, 

【问题讨论】:

    标签: amazon-web-services command-line-interface amazon-cloudfront


    【解决方案1】:

    那是你的外壳在做expansion of local filenames

    这就是您所要求的,因为* 没有被引用。

    --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) when calling the CreateInvalidation operation: Your request contains one or more invalid invalidation paths. 你应该使用 --paths '/*' 而不是成功响应
    • @damusix 感谢有关需要领先 / 的提示。相应更新。
    • 这不是完全正确的路径规范。至少在我的 Windows 控制台上使用这种路径会导致错误。这应该用双引号引起来(至少在 Windows 中)你必须使用 --paths "/*"
    • 我在 windows 上使用 gitbash 时遇到了问题。我必须在命令中添加 MSYS_NO_PATHCONV=1 前缀。例如:MSYS_NO_PATHCONV=1 aws cloudfront create-invalidation ...
    【解决方案2】:

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

    aws cloudfront create-invalidation --distribution-id <DistributionID> --paths "/*"
    

    例子:

    aws cloudfront create-invalidation --distribution-id E1B1A4GHK9TTE --paths "/*"
    

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

    aws cloudfront list-distributions 
    aws cloudfront list-distributions | grep Id
    

    【讨论】:

      【解决方案3】:

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

      aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths '/*'
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 2021-08-26
        • 2019-04-25
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多