Хорошо, поэтому у меня в настоящее время почти все работает, следуя этому руководству здесь и частям нескольких других.
https://aws.amazon.com/blogs/mobile/building-fine-grained-authorization-using-amazon-cognito-user-pools-groups/
Однако вместо того, чтобы давать пользователям прямой доступ к DynamoDB, я запускаю его через шлюз API и затем лямбда-функцию, используя заголовок авторизации и идентификатор сеанса Cognito.
у меня эта часть работает.
В моей лямбде Я вызываю функцию обновления
const data = await documentClient.update(params).promise();
У меня есть политика AWSLambdaBasicExecutionRole, и к моей роли функции лямбда добавлена следующая политика, разрешающая доступ на уровне строк для обновления
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-2:mydynamodbid:table/userdata"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": "${cognito-identity.amazonaws.com:sub}"
}
}
}
]
Работает нормально с AmazonDynamoDBFullAccess, но я не уверен, что выполняет то, что мне нужно, так как я думаю, что оно полностью обходит условие.
Я получаю следующую ошибку, хотя
"User: arn:aws:sts::**********:assumed-role/db-crud/update-user-info-by-id is not
authorized to perform: dynamodb:UpdateItem on resource: arn:aws:dynamodb:us-east-
2:************:table/userdata"
Кто-нибудь сталкивался? что-нибудь подобное или посмотреть, где я, возможно, иду не так?
Это поток, который я иду, и это относится к шагу 6