"Не удается прочитать "заголовки" свойства неопределенного

Я использую следующий код для установки заголовков сеанса в ответ в Lambda Edge. Но я всегда получаю эту ошибку.

{
    "errorType": "TypeError",
    "errorMessage": "Cannot read property 'headers' of undefined",
    "stack": [
        "TypeError: Cannot read property 'headers' of undefined",
        "    at Runtime.exports.handler (/var/task/index.js:118:30)",
        "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
    ]
}

Код, который я использую, это

exports.handler = function (event, config, callback) {
    const request = event.Records[0].cf.request;
    console.log(event.Records[0].cf);
    const response = event.Records[0].cf.response;
    const headers = response.headers;

    getConfigCached(request, function (err, config) {
        if (err) {
            callback(err, null);
        }
        else if (request.uri !== "/code" && !redirectIfNotAuthenticated(config, request, callback)) {
            callback(null, request);
        }
        else if (request.uri == "/code") {
            console.log('INSIDE CODE');
            let access_token = accessTokenCallback(request, callback);
            console.log(access_token);
            headers['session-token'] = [{ key: 'Session-Token', value: access_token }];
            callback(null, response);
        }
    });
};

Триггер CloudFront настроен на запрос зрителя


person Yahiya    schedule 03.05.2021    source источник
comment
Очевидно, что event.Records[0].cf.response это undefined. Какой вопрос?   -  person 404    schedule 03.05.2021
comment
Почему он не определен? Нужно ли мне изменить триггер на ответ зрителя?   -  person Yahiya    schedule 03.05.2021


Ответы (1)


Пожалуйста, проверьте настройку, которую вы настроили для своего Lambda@Edge при его создании. Предполагается, что для него установлено значение Response origin, чтобы вы могли устанавливать заголовки ответов.

Кстати, есть схема создания такого типа Lambda@edge схема AWS

person Ben Zikri    schedule 04.05.2021