изменить тип возврата в лямбда-функции AWS? - PullRequest
0 голосов
/ 21 марта 2019

Я пробую AWS Lambda.

Я включил интеграцию Lambda прокси.

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

Однако, если бы я сделал это в Javascript, я получил бы ответ в виде строки.

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

exports.handler = async (event, context) => {
    // TODO implement
    const response = {
        statusCode: 200,
        headers: {'Control-Access-Allow-Origin': '*', 'Content-Type': 'application/json'},
        body: {
            event,
            context,
        }
    };
    return response;
};

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Если вы проверили интеграцию лямбда-прокси, вам нужен этот формат в качестве ответа

{
    statusCode: 200,
    body: JSON.stringify(message),
    headers: {'Content-Type': 'application/json'}
}

Возвращаемый объект должен иметь атрибуты statusCode, body и headers. В моем примере выше я включил Content-Type в объект headers, но он может быть пустым, если хотите. Значение body должно быть строкой, если мы передадим здесь пользовательский объект, не превратив его в строку в кодировке JSON, это не получится.

Если ваш возвращаемый объект не имеет этих атрибутов, при тестировании соединения шлюза Lambda-API появится следующее сообщение:

message: "Internal server error".

Если вы снимите флажок с лямбда-прокси, вы сможете передать в ответ все, что захотите.

0 голосов
/ 21 марта 2019

Сначала ваше тело должно быть строкой, а не объектом:

const response = {
    statusCode: 200,
    headers: {'Control-Access-Allow-Origin': '*', 'Content-Type': 'application/json'},
    body: JSON.stringify({
        event,
        context,
    })
};
return response;

Затем вы можете взглянуть на журнал CloudWatch, чтобы увидеть, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...