我正在尝试从lambda向DynamoDb发出一个非常简单的getitem请求,但没有得到任何结果。
是的,我检查了权限,并确保为相应的表授予了lambda执行和dynamodb getitem函数的权限,并且已正确将其附加到lambda函数。
是的,该表中肯定有一个名为“ Bobas”的条目。
这是我从console.logs获得的内容:
START RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6 Version: $LATEST
END RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6
REPORT RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6 Duration: 680.59 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 91 MB Init Duration: 366.03 ms
代码如下:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'ca-central-1'});
exports.handler = async (event, context, callback) => {
let resp;
// TODO implement
const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08'});
const params = {
TableName: 'trivia-users',
Key: {
name: {
S: 'Bobas'
}
}
}
ddb.getItem(params, (err, data) => {
let resp = data;
if (err) {
console.log(err);
} else {
console.log(data);
}
});
return resp;
};
答案 0 :(得分:1)
您必须使其非异步或将promise返回给调用方(您可以将该promise直接返回给运行时)。像这样:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'ca-central-1'});
exports.handler = async (event, context, callback) => {
const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08'});
const params = {
TableName: 'trivia-users',
Key: {
name: {
S: 'Bobas'
}
}
}
return ddb.getItem(params, null).promise();
};