您好我有以下基于Node.js的Lamdba代码。我无法调用查询方法来检索数据。
输入:{ 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.log(JSON.stringify(params));
ddb.query(params, (err, data) => {
// Console.log('Not executing this part !!!')
if (err) console.log(err);
console.log(data);
});
};
甚至没有调用查询方法或记录任何错误。我真的可以帮忙。
答案 0 :(得分:-1)
由于您有控制台日志,您可以使用cloudwatch调试代码来检查您的lambda日志。
您可以选择您的lambda,如果您看到任何执行日志,可以单击以获取更多详细信息,您将在那里找到您的控制台日志
调用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.log(JSON.stringify(params));
executeQuery(params).then((data) => {
console.log('sucess');
context.done(data);
}).catch((err) => {
console.log('Error occurred');
context.done(error);
})
};