Обновлено:
Я обновил ведущий ключ с userId на sub, который, согласно документации AWS, должен соответствовать идентификатору пользователя, входящему в систему, то есть ${cognito-identity.amazonaws.com:sub}, и он по-прежнему не работает
У меня есть настройка таблицы DynamoDB через MobileHub, и я мог размещать на ней элементы до сегодняшнего дня, когда я удалил свой пул Cognito и создал новый. Речь идет о таблице HighScore. Таблица UserDetails не изменяется.
Я могу аутентифицироваться и получать ресурсы, требующие доступа "auth", но по какой-то причине доступ запрещен при попытке PutItem.
Ошибка:
Error Domain=com.amazonaws.AWSServiceErrorDomain Code=6 "(null)" UserInfo = {__type=com.amazon.coral.service#AccessDeniedException, Message=User: arn:aws:sts::123456789012:assumed-role/appName_auth_MOBILEHUB_AppId/CognitoIdentityCredentials is not authorized to perform: dynamodb:UpdateItem on resource: arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore}
Вот моя политика IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:ListTables",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": [
"arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore",
"arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-UserDetails"
]
},
{
"Effect": "Allow",
"Action": [
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-HighScore",
"arn:aws:dynamodb:us-west-1:123456789012:table/appName-mobilehub-appId-UserDetails"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
}
]
}





Кажется, здесь есть ошибка с детальным контролем доступа, поскольку удаление оператора условия (даже после его изменения, чтобы оно соответствовало ключу таблицы) решило проблему.
Не совсем, я удалил условие, и оно сработало, но было бы неплохо иметь детальный контроль доступа.
Вы решили эту проблему?