У меня есть таблица динамических БД 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, чтобы получить строку, принадлежащую пользователю?