получить строку из таблицы DynamoDB AWS с аутентификацией Cognito - PullRequest
0 голосов
/ 15 мая 2018

У меня есть таблица динамических БД AWS, где я храню информацию для пользователей AWS Cognito.Я создал таблицу как личную, чтобы только владелец строки в таблице мог читать / записывать данные (на основе аутентификации cognito).Мне нужно получить данные для пользователя через лямбда-функцию.Я создал роль 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

Как я могу вызвать getItem с идентификатором Cognito, чтобы получить строку, принадлежащую пользователю?

...