9

我試圖使整個靜態網站無效。下面的命令似乎沒有使/index.html無效,並給出了一個奇數輸出的項目被廢止,如下所示。這種AWS CLI行爲是正常還是缺少某些東西?謝謝!AWS CLI CloudFront使所有文件無效

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 },

回答

18

這是你的shell做expansion of local filenames

這就是你本質上要求的,因爲*未被引用。

要麼 --paths '*'要麼 指定--paths '/*' ¹會做你想要的。引用通配符將其保留爲字面字符串,而不是您所看到的。


¹的CloudFront的控制檯允許您指定任何*/*無效整個分佈;相反,CLI期望/*。這反過來也是因爲底層API也期望/*。在控制檯中使用*時,在控制檯向CloudFront API發出請求之前,控制檯會無提示地添加前導斜槓。

+1

這對我來說訣竅。謝謝邁克爾。爲了進一步貢獻,在'aws-cli/1.11.36 Python/2.7.12 Darwin/16.4.0 botocore/1.4.93'版本上,使用'--paths'*''值給出錯誤:'發生錯誤(InvalidArgument)當您調用CreateInvalidation操作時:您的請求包含一個或多個無效失效路徑.' 您應該使用'--paths'/ *''來取得成功的響應 – damusix

+1

@damusix感謝您提示需要領先的'/'。相應更新。 –