9

Próbuję unieważnić całą statyczną stronę internetową. Wydaje się, że następujące polecenie nie unieważnia /index.html i daje nieparzyste dane wyjściowe pozycji, które mają być unieważnione, jak pokazano poniżej. Czy zachowanie AWS CLI jest normalne, czy też czegoś mi brakuje? Dzięki!AWS CLI CloudFront Unieważnij wszystkie pliki

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

wyjściowa:

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

Odpowiedz

18

To twoja powłoka robi expansion of local filenames.

Zasadniczo pytasz o to, ponieważ * nie jest cytowany.

Albo --paths '*' lub Określanie --paths '/*' ¹ zrobi to, co zamierza. Cytowanie symbolu wieloznacznego zachowuje go raczej jako łańcuch literowy niż to, co widzisz.


¹ Konsola CloudFront pozwala określić zarówno * lub /* do unieważnienia całego rozkładu; przeciwnie, CLI oczekuje /*. To z kolei jest spowodowane tym, że bazowy interfejs API oczekuje również /*. Gdy używasz * w konsoli, wiodący ukośnik jest cicho dodawany przez konsolę, zanim konsola wyśle ​​żądanie do interfejsu API CloudFront.

+1

To mi się udało. Dziękuję Michael. Aby dodatkowo przyczynić się, w wersji 'aws-cli/1.11.36 Python/2.7.12 Darwin/16.4.0 botocore/1.4.93', używając' --paths '*' 'wartość daje błąd:' Wystąpił błąd (InvalidArgument) podczas wywoływania operacji CreateInvalidation: Twoje żądanie zawiera jedną lub więcej niepoprawnych ścieżek unieważnień. " Zamiast tego powinieneś użyć' --paths '/ *' ', aby uzyskać pomyślną odpowiedź – damusix

+1

@damusix dzięki za wskazówkę co do potrzeby wiodący '/'. Zaktualizowano odpowiednio. –