lambda @ edge не запускается с облачным фронтом

Я использую lambda @ edge для перенаправления своих сайтов с помощью Cloudfront.

Я привязал свою версию лямбда-arn к моему поведению облачного переднего кеша ко всем 4 событиям, которые у него есть.

когда я попадаю в свою конечную точку облачного интерфейса, он говорит

502 ERROR
The request could not be satisfied.
The Lambda function returned invalid json: The json output must be an object type. 

когда я проверяю свои лямбда-журналы / показатели вызовов, я вообще не вижу никаких совпадений.

в чем может быть причина этого?

Я изо всех сил старался найти решение, почему моя лямбда не срабатывает ??


person Vishnu Ranganathan    schedule 25.03.2018    source источник
comment
Очевидно, из ошибки срабатывает ваша функция. Он возвращает недопустимый ответ, который CloudFront отклоняет и обрабатывает как 502 Bad Gateway ошибку. Пожалуйста, покажите свой код.   -  person Michael - sqlbot    schedule 25.03.2018
comment
Вы найдете журналы и показатели в регионе, ближайшем к краю, ближайшему к зрителю - не обязательно us-east-1. Lambda @ Edge распространяется по всему миру и запускает функции ближе к тому месту, где они запрашиваются.   -  person Michael - sqlbot    schedule 25.03.2018


Ответы (2)


Есть несколько распространенных ошибок, связанных с Lambda @ Edge и CloudFront. Тебе следует:

  • Опубликуйте новую версию своей лямбда-функции
  • Обновите ассоциацию CloudFront Lambda до вашей новой версии, например arn:aws:lambda:us-east-1:572007530218:function:gofaas-WebAuthFunction:45
  • Ищите журналы Lambda @ Edge в регионе запрашивающей стороны.

Это отличается от «обычного» потока веб-консоли Lambda, в котором сохраняется изменение кода и выполняется переход к журналам со вкладки мониторинга.

person Noah Zoschke    schedule 30.03.2018
comment
Что означает «Обновить ассоциацию CloudFront Lambda»? У меня возникла эта проблема, но я до сих пор не понимаю, что мне не хватает. В Lambda я опубликовал новую версию, а затем добавил триггер CloudFront. Я не вижу нигде, чтобы обновить ассоциацию CloudFront Lambda. Это где-то в консоли CloudFront? - person sixty4bit; 02.04.2018
comment
Это свойство в CloudFormation: docs.aws .amazon.com / AWSCloudFormation / latest / UserGuide / - person Noah Zoschke; 04.04.2018
comment
Спасибо! Для меня проблема заключалась в том, что я смотрел на регион изначально развернутой лямбды, а не на регион, ближайший к запрашивающему :) - person Re'em; 14.07.2018

я пропустил добавление региона под заголовком в моем лямбда-коде.

поскольку lambda @ edge работает в крайнем местоположении, нам необходимо динамически упоминать регион, чтобы он знал, куда писать журналы, когда он работает в ближайшем краевом местоположении.

'x-lae-region': [ { key: 'x-lae-region', value: process.env.AWS_REGION } ]

const response = {
        status: '302',
        statusDescription: 'Found',
        headers: {
            location: [{
                key: 'Location',
                value: 'http://<destinationdomainname>/goto/hello.html',
            }],
            'x-lae-region': [ { key: 'x-lae-region', value: process.env.AWS_REGION } ],
        },
    };
person Vishnu Ranganathan    schedule 03.04.2018