После этой статьи я пытаюсь обработать статический контент из нескольких регионов (в рамках одного домена) в AWS.
Пока у меня есть:
- загрузил мой контент в корзину S3
- включил «статический веб-хостинг» для этого сегмента
- и обнародовал
- создал дистрибутив в CloudFront с источником S3 в качестве источника
- создал набор записей на маршруте 53, указывающий на распределение
На данный момент все работает нормально. Если я ввожу доменное имя в браузере, я вижу статический контент. Теперь пришло время сделать его мультирегиональным:
- создайте лямбда-функцию, как указано в статье, с ролью, в которой содержится политика AdministratorAccess (от отчаяния - как только я заставлю ее работать, я тщательно спроектирую нужную роль)
- связал лямбда-функцию с CloudFront:
Event type: origin-request, Include body: No, Path pattern: *
- отредактировал дистрибутив CloudFront, добавив заголовок
X-DNS-ORIGIN
После применения этих шагов мне пришлось подождать минуту, прежде чем они вступили в силу. И как только они вступили в силу, я больше не мог открывать веб-страницу. Это приведет к появлению этого сообщения об ошибке:
503 ERROR
The request could not be satisfied.
The Lambda function associated with the CloudFront distribution is invalid or doesn't have the required permissions.
If you received this error while trying to use an app or access a website, please contact the provider or website owner for assistance.
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by following steps in the CloudFront documentation (http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/http-503-service-unavailable.html).
Generated by cloudfront (CloudFront)
Я даже включил механизм регистрации в CloudFront. Но это тоже не помогло. Логи только показывают, что было LambdaExecutionError
. Но это не говорит ничего полезного.
Я считаю, что лямбда-функция вообще не вызывается, так как я не вижу никаких сгенерированных для нее логов в CloudWatch. На данный момент я понятия не имею, как я могу решить эту проблему. Любая помощь приветствуется.
[EDIT]
Я забыл упомянуть. Роль, назначенная лямбда-функции, имеет lambda.amazonaws.com
и edgelambda.amazonaws.com
, перечисленные в качестве сервисов на вкладке Доверительные отношения .