В рамках обучения Lambda я пытаюсь написать простое приложение, которое запускает функцию Lambda через API Gateway.Затем эта лямбда-функция подключается к DynamoDB через AWS SDK и пытается удалить существующую таблицу.
Лямбда-функция срабатывает, когда я выполняю POST
для конечной точки шлюза API.Я получаю ответ обратно как {}
, что означает, что result
никогда не переназначалось сверх инициализированного значения.Насколько я могу судить, метод deleteTable
никогда не срабатывает.Я никогда не вижу ни console.log()
, ни console.error()
, которые существуют внутри тела обратного вызова.
Пожалуйста, найдите детали ниже:
Настройка
Функция лямбда
- Язык: Node.Js 8.10
- Триггеры: шлюз API
POST
конечная точка - Права роли выполнения:
- Базовый шаблон микросервиса (Примечание:Я также пытался дать ему полный доступ к DynamoDB Full Access и даже к Full Administrator, это ничего не помогло.
Вот код. У меня было кое-что гораздо более сложноено урезал его до этого, когда я не смог заставить удалить работать:
exports.handler = async (event) => {
var aws = require('aws-sdk');
var dynamodb = new aws.DynamoDB();
var params = {
TableName: "StudyGuideSections"
};
var result = {};
dynamodb.deleteTable(params, function(err, data) {
console.log('Entering deleteTable callback...');
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
result = data;
}
});
return {
statusCode: 200,
"headers": {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(result)
};
};
API Gateway
- Авторизация: Нет
- Метод: POST
на стороне клиента
- Почтальон (для тестирования)
- Простое веб-приложение, выполняющее
$.post
Имеюпросмотрел журналы CloudWatch и X-Ray , и я никогда не вижу ошибок и не вижу попыток console.log ()м внутри тела deleteTable()
звонка.
В этот момент я почти вырываю волосы, так как это блокирует мои тренировки.Любая помощь будет принята с благодарностью.
Редактировать: Для дальнейшего уточнения я могу изменить тело возвращаемого значения на что-то вроде "Hello World!"и я получаю это как ответ.Кроме того, я могу поставить console.log('Attempting to delete table...")
прямо перед вызовом deleteTable
;когда я это делаю, я вижу это в CloudWatch.Я просто никогда не вижу журналы внутри метода deleteTable
.