Назад | Перейти на главную страницу

AWS Cloudfront с несколькими источниками - как вернуться ко второму источнику, если он не найден в первом?

Мы пытаемся настроить распространение Cloudfront, где источником по умолчанию является S3, но если контент не найден на S3, мы хотим, чтобы он получал его из экземпляра EC2.

Можем ли мы настроить эти несколько источников: S3 и EC2 и два поведения, оба по умолчанию равны (*), и при необходимости переключиться на второй источник (EC2)?

Процесс выглядит следующим образом:

  1. Наш бэкэнд генерирует образы в экземпляре EC2.
  2. Мы загружаем их в S3, как только можем, но это происходит не сразу.
  3. Когда пользователь пытается получить доступ к cdn.example.com/images/picture.jpg, он направляет Cloudfront в нашу корзину S3, и, если изображения еще нет, мы хотим перенаправить этот запрос на сервер EC2.

Здесь нас устраивает временное перенаправление, пока оно не обновится на S3.

Перенаправления S3 не являются ответом, поскольку перенаправления S3, похоже, работают только для существующих объектов или целых сегментов, а не для отсутствующих объектов.

Как мы можем этого добиться?

Спасибо, Адорам

CloudFront не поддерживает ваш вариант использования. Вам нужно будет обработать это в приложении - не обслуживайте URL-адреса CDN для элемента, пока ваша система не завершит передачу на S3.

Благодаря возможности CloudFront Origin Failover вы можете настроить два источника для ваших распределений - первичный и вторичный, так что ваш контент будет обслуживаться из вторичного источника, если CloudFront обнаружит, что ваш первичный источник недоступен. CloudFront уже позволяет настраивать пользовательские страницы ошибок или создавать перенаправления с помощью Lambda @ Edge, если ваш источник недоступен. Теперь с помощью Origin Failover вы можете легко настроить логику аварийного переключения между комбинациями источников AWS или настраиваемых источников HTTP, отличных от AWS, таким образом, чтобы у зрителя было минимальное прерывание. Например, у вас могут быть две корзины Amazon S3, которые служат источником, в которые вы независимо загружаете свой контент. Если объект, который CloudFront запрашивает из вашей основной корзины, отсутствует или время ожидания соединения с вашей основной корзиной истекло, CloudFront запросит объект из вашей дополнительной корзины. Таким образом, вы можете настроить CloudFront для переключения при отказе в ответ на коды состояния HTTP 4xx или 5xx.

Источник : https://aws.amazon.com/about-aws/whats-new/2018/11/amazon-cloudfront-announces-support-for-origin-failover/

Документация : https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html

Добавьте оба источника в конфигурацию Cloudfront.

Добавьте правила группы отработки отказа в разделе «Исходные группы».