Как я могу обновлять файлы на Amazon CDN (CloudFront)?

Есть ли способ обновить файлы, хранящиеся на Amazon CloudFront (Amazon CDN service)? Похоже, что не будет никакого обновления файла, который мы делаем (например, удаление файла и сохранение нового с тем же именем файла, что и раньше). Должен ли я явно инициировать процесс обновления, чтобы удалить файлы с пограничных серверов, чтобы опубликовать новое содержимое файла?

Спасибо за помощь

Ответ 1

Amazon добавила функцию аннулирования. Это справочная информация по API.

Пример запроса из справочника API:

POST /2010-08-01/distribution/[distribution ID]/invalidation HTTP/1.0
Host: cloudfront.amazonaws.com
Authorization: [AWS authentication string]
Content-Type: text/xml

<InvalidationBatch>
   <Path>/image1.jpg</Path>
   <Path>/image2.jpg</Path>
   <Path>/videos/movie.flv</Path>
   <CallerReference>my-batch</CallerReference>
</InvalidationBatch>

Ответ 2

Вот как я это делаю, используя панель управления CloudFront.

  • Выберите CloudFront из списка служб.
  • Убедитесь, что выбрано Распределения из верхнего левого.
  • Затем щелкните ссылку для связанного распространения из списка (под идентификатором).

enter image description here

  1. Выберите вкладку Недопустимые.
  2. Нажмите кнопку Создать недействительность и введите местоположение файлов, которые вы хотите сделать недействительными (обновлено).

Например:

enter image description here

  1. Затем нажмите кнопку Invalidate, и теперь вы увидите статус InProgress.

enter image description here

Обычно для завершения аннулирования обычно требуется от 10 до 15 минут запрос, в зависимости от размера вашего запроса.

После того, как он будет завершен, вы добры идти.

Совет: После того, как вы создали несколько недействительных, если вы вернетесь и вам нужно будет сделать недействительными одни и те же файлы, выберите поле выбора, а ссылка Копировать станет доступной, сделав ее еще быстрее.

Ответ 4

Кажется, я помню это уже на сервере, но вот ответ:

От "Amazon CDN" я предполагаю, что вы имеете в виду "CloudFront"?

Он кэшируется, поэтому, если вам нужно его обновить прямо сейчас (в отличие от "новой версии будет видно через 24 часа" ), вам нужно будет выбрать новое имя. Вместо "logo.png" используйте "logo.png-0", а затем обновите его с помощью "logo.png-1" и измените свой html, чтобы указать на это.

Невозможно "сбросить" облачную амазонку.

Изменить: этот был невозможен, это сейчас. См. Комментарии к этому ответу.

Ответ 8

В рубине, используя жуткий туман

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID']
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY']
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID']

conn = Fog::CDN.new(
    :provider => 'AWS',
    :aws_access_key_id => AWS_ACCESS_KEY,
    :aws_secret_access_key => AWS_SECRET_KEY
)

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg']

conn.post_invalidation AWS_DISTRIBUTION_ID, images

даже при недействительности, все еще требуется 5-10 минут для недействительности для обработки и обновления на всех пограничных серверах Amazon.