编辑:
我将来自userId的前导密钥更新为sub,其中每个AWS文档应该与已登录用户中的用户ID匹配,即${cognito-identity.amazonaws.com:sub}
,但它仍然不起作用
我通过MobileHub设置了DynamoDB表,并且我已经能够使用PutItems直到今天我删除了我的Cognito Pool并制作了一个新的。有问题的表格是HighScore。 UserDetails表不受影响
我能够进行身份验证并获取需要“身份验证”访问权限的资源,但出于某种原因,在尝试PutItem时拒绝访问。
错误是:
错误Domain = com.amazonaws.AWSServiceErrorDomain Code = 6“(null)” 的UserInfo = {__类型= com.amazon.coral.service#AccessDeniedException异常, 消息=用户: 阿尔恩:AWS:STS :: 123456789012:假设角色/ appName_auth_MOBILEHUB_AppId / CognitoIdentityCredentials 无权执行:dynamodb:资源上的UpdateItem: ARN:AWS:dynamodb:US-西-1:123456789012:表/ APPNAME-mobilehub-APPID-高分}
这是我的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}"
]
}
}
}
]
}
答案 0 :(得分:1)
这里似乎存在细粒度访问控制的错误,因为删除条件语句(即使在更改它以使其与表的键匹配)也解决了问题。