Здравствуйте, у меня есть следующий код Lambda, основанный на Node.js. Я не могу вызвать метод запроса для получения данных.
Ввод: { key: 'value' } - Использование ввода тестового события.
var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-2'});
var ddb = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
exports.handler = async (event, context) => {
const params = {
TableName: 'Chapter',
IndexName: 'subjectId-index', // Global Secondary Index
KeyConditionExpression: 'subjectId = :subjectId',
ExpressionAttributeValues: {
':subjectId': event.key,
},
};
console.info(JSON.stringify(params));
ddb.query(params, (err, data) => {
// Console.log('Not executing this part !!!')
if (err) console.info(err);
console.info(data);
});
};
Метод запроса даже не вызывается или регистрируется какая-либо ошибка. Мне действительно нужна помощь.

Поскольку у вас есть журналы консоли, вы можете отлаживать свой код с помощью cloudwatch, чтобы проверить журналы лямбда.
Вы можете выбрать свою лямбду, и если вы видите какие-либо журналы выполнения, вы можете щелкнуть для получения более подробной информации, и вы найдете там свои журналы консоли
Вызов context.done
Пример программы, которую вы можете попробовать. Я просто написал не пробовал
var AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-2' });
var ddb = new AWS.DynamoDB.DocumentClient({ apiVersion: '2012-08-10' });
const executeQuery = (params) => {
return new Promise(function (resolve, reject) {
ddb.query(params, (err, data) => {
if (err) reject(err);
resolve(data);
});
});
}
exports.handler = async (event, context) => {
const params = {
TableName: 'Chapter',
IndexName: 'subjectId-index', // Global Secondary Index
KeyConditionExpression: 'subjectId = :subjectId',
ExpressionAttributeValues: {
':subjectId': event.key,
},
};
console.info(JSON.stringify(params));
executeQuery(params).then((data) => {
console.info('sucess');
context.done(data);
}).catch((err) => {
console.info('Error occurred');
context.done(error);
})
};
Речь идет не о журналах CloudWatch. Это работает. Я могу видеть там журналы, когда устанавливаю его в качестве триггера для таблицы db динамо. Но моя функция запроса не вызывается.
Вы не используете обратный вызов context.done после выполнения своей задачи. Пожалуйста, прочтите мой ответ о кодовой базе
Использование обещания не требуется. Хотя документ этого не требует. Все, что мне нужно знать, почему мой метод query () клиентского объекта динамо не выполняется.
лямбда-функция требует вызова context.done для ожидания выполнения, иначе лямбда выйдет по таймауту, а время по умолчанию - 3 с для лямбда. Если вы не хотите выполнять ее с обещанием, попробуйте увеличить время ожидания лямбда, вы должны увидеть журналы
В настоящее время тестирую его в онлайн-редакторе aws с помощью node.js v8.x.x
Я прошу вас увеличить время выполнения лямбда-выражения с консоли aws. Обратитесь к этому изображению files.readme.io/13d03c1-jiralambda-advanced.png
какую версию nodejs вы используете в конфигурации Lambda?