使用cognito身份验证从AWS dynamoDB表中获取行

时间:2018-05-15 14:34:15

标签: aws-lambda amazon-dynamodb aws-cognito

我有AWS dynamo数据库表,用于存储AWS Cognito用户的信息。我创建了表是私有的,因此只有表中行的所有者才能读/写数据(基于认知身份验证)。我需要通过lambda函数为用户获取数据。我以这种方式为函数创建了IAM角色:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:PutItem",
            "dynamodb:Query",
            "dynamodb:UpdateItem"
        ],
        "Resource": [
            "arn:aws:dynamodb:XX-XXXX-X:XXXXXXX:table/tablename"
        ],
        "Condition": {
            "ForAllValues:StringEquals": {
                "dynamodb:LeadingKeys": [
                    "${cognito-identity.amazonaws.com:sub}"
                ]
            }
        }
    }
]

}

在lamba函数(node.js)中我需要从用户那里获取信息,所以我打电话给:

let ddb = new AWS.DynamoDB({ apiVersion: 'latest' });

var params = {
    TableName: tablename,
    Key: { 'id': {S: event.queryStringParameters.user_id}
    }
};
ddb.getItem(params, function(err, data) {
    if (err) {
        console.log("Error", err);
    }
    else {
        console.log("Success", data);
    }
});

我收到错误:

    Error { AccessDeniedException: User: arn:aws:sts::xxxxxx:assumed-role/lambda_dynamo/getPmtDetails is not authorized to perform: dynamodb:GetItem on resource

如何使用cognito id调用getItem以便检索属于该用户的行?

0 个答案:

没有答案