Я пытаюсь получить доступ к пользовательским данным в таблице DynamoDB, используя identity level fine grained access. Для аутентификации пользователей я использую Authenticated Identities разработчика.Доступ к мелкозернистым данным DynamoDB с Lambda
Для достижения этой цели моя политика включает в себя:
{
"Action": [
"dynamodb:GetItem",
"dynamodb:UpdateItem"
],
"Effect": "Allow",
"Resource": "arn:aws:dynamodb:eu-west-1:817949094961:table/Users",
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
}
При попытке получить доступ к данным пользователя из DynamoDB таблицы - в функции лямбда-я получаю следующее сообщение об ошибке:
Error in updateUser: AccessDeniedException: User: arn:aws:sts::12312313:assumed-role/LambdAuthEditAccount/awslambda_123_20160410184653936 is not authorized to perform: dynamodb:UpdateItem on resource: arn:aws:dynamodb:eu-west-1:12312312:table/Users"}
Однако это работает только отлично при доступе к DynamoDB непосредственно из клиентского браузера с использованием JS API - мелкозернистый контроль доступа работает правильно. Вышеупомянутый политический блок добавляется как к роли, прошедшей аутентификацию пользователя, так и к роли, принимаемой функцией Lambda.
Мне интересно, не должна ли роль, предполагаемая Лямбдой (включенной в вышеприведенную ошибку), не разрешать аутентифицированную роль пользователя?