Функциональность Lambda работает от собственной кнопки «test», но не запускает ее из API Gateway - PullRequest
0 голосов
/ 15 апреля 2020

Функция просто вставляет новый столбец в таблицу DynamoDB. Я могу проверить, работает ли он, нажав кнопку «тест» на вкладке лямбда-функции (она отвечает 200), но она возвращает ошибку, когда я присоединяю его к POST-запросу шлюза API, используя «тест» Кнопка также, в этом случае кнопка тестирования на вкладке теста метода API-шлюза.

Это ошибки:

Тело ответа

{"message": "Внутренняя ошибка сервера"}

Заголовки ответа

{"x-amzn-ErrorType":"InternalServerErrorException"}

Журналы

Lambda execution failed with status 200 due to customer function error: One or more parameter values were invalid: Missing the key site in the item.

Вот код лямбда-функции:

function response( message) {
  return message
}

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'eu-west-2'});

exports.handler = function(event, context) {
   
    let scanningParameters = {
        Item: {
            "site":event.site
           
        },
        TableName: 'Galleries'
    }
    
     return docClient
    .put(scanningParameters)
    .promise()
    .then(() => {
        return {
        "statusCode": 200,
        'headers': { 'Content-Type': 'application/json' }
    }
    })
   
}

Однако я не понимаю, почему запрашивает ключ, поскольку на лямбда-вкладке он правильно вставляет столбец в таблицу. Вот еще одна функция, которая работает и в API Gateway, и схема абсолютно такая же:

function response( message) {
  return message
}

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'eu-west-2'});

exports.handler = function(event, context) {
   
    let scanningParameters = {
        Item: {
            "email":event.email
        },
        TableName: 'Users'
    }
    
     return docClient
    .put(scanningParameters)
    .promise()
    .then(() => {
        return {
        "statusCode": 200,
        'headers': { 'Content-Type': 'application/json' }
    }
    })
   
}

Редактировать: Я только что решил эту проблему, сняв флажок «Использовать интеграцию с Lambda Proxy» на вкладке запроса интеграции

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