Aws lambda AWS Lambda Dynamo AWS SDK Node.js查询方法问题
您好,我有以下基于Node.js的Lambda代码。我无法调用查询方法来检索数据 输入:Aws lambda AWS Lambda Dynamo AWS SDK Node.js查询方法问题,aws-lambda,amazon-dynamodb,aws-sdk,Aws Lambda,Amazon Dynamodb,Aws Sdk,您好,我有以下基于Node.js的Lambda代码。我无法调用查询方法来检索数据 输入:{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, contex
{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);
});
};
甚至没有调用查询方法或记录任何错误。我真的需要一些帮助。由于您有控制台日志,您可以使用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);
})
};
这与cloudWatch日志无关。当我将它设置为dynamo db表的触发器时,我可以看到那里的日志。但是没有调用我的查询函数。您在完成任务后没有使用callback contex.done。请阅读我对codebaseUsing承诺的回答,这不是必需的。事件文档不需要这样做。我只需要知道为什么我的查询()dynamo客户端对象的方法未执行。lambda函数需要调用contex.done以等待执行,否则lambda将在超时时退出&lambda的默认时间为3s如果您不想使用promise执行,请尝试增加lambda的超时时间。您应该能够在aws联机编辑器中看到正在使用node.js v8.x.x在Lambda配置中使用哪个版本的nodejs?