无法获取项目-无法获取任何结果

时间:2019-11-07 19:59:54

标签: amazon-web-services amazon-dynamodb

我正在尝试从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;

};

1 个答案:

答案 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();

};