Ответ 1
Еще в 2013 году, в предыдущей версии этого ответа, я написал:
Вы не можете этого сделать, потому что "файлы" в облачном режиме не находятся в "папках". Все является объектом, и каждый объект является независимым.
В то время это было полностью верно. По-прежнему верно, что все является объектом, и каждый объект является независимым, но CloudFront изменил свою логику недействительности. Продолжайте читать.
В то время это было также верно, и опять-таки, в некоторой степени, это все равно:
В облачной документации упоминаются "недействительные каталоги", но это относится к веб-сайтам, которые фактически разрешают список каталогов [когда] листинг - это то, что вы хотите аннулировать, так что это тоже не поможет.
Однако времена значительно изменились.
Технически каждый объект по-прежнему независим, и CloudFront на самом деле не сохраняет их в иерархических папках, но интерфейс недействительности был расширен, чтобы поддерживать сопоставление подстановочных символов с левым якорем. Вы можете аннулировать содержимое "папки" или любого количества объектов, которые могут совпадать с подстановочным знаком в конце строки. Все, что соответствует, будет выведено из кеша:
Чтобы недействить объекты, вы можете указать либо путь для отдельных объектов, либо путь, который заканчивается подстановочным знаком
*
, который может применяться к одному объекту или ко многим, как показано в следующих примерах:
/images/image1.jpg
/images/image*
/images/*
— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
Хорошее улучшение. Но есть ли улов?
Помимо того факта, что для недействительности требуется - как всегда - от 10 до 15 минут для завершения при обычных операциях, ответ - нет, на самом деле нет catch. Первые 1000 путей недействительности (ранее "запросы" и "запрос" были для одного объекта), которые вы отправляете в течение месяца, являются бесплатными; после этого есть заряд, но:
Цена такая же, независимо от того, недействительны ли вы отдельные объекты или с помощью шаблона *, чтобы аннулировать несколько объектов.
Обратите внимание, что если вы не включаете *
в конце, то для недействительности для /images/
(например) будет указано только CloudFront, чтобы сделать недействительным какой-либо единственный объект, который ваш исходный сервер возвращает для запросов для /images/
.
Ведущая косая черта документируется как необязательная.