amazon-web-services - UpdateItem - 访问被拒绝
问题描述
编辑:
我将前导键从 userId 更新为 sub,每个 AWS 文档应该与登录用户的 userID 匹配,即${cognito-identity.amazonaws.com:sub}
它仍然不起作用
我通过 MobileHub 设置了一个 DynamoDB 表,直到今天我删除了我的 Cognito 池并创建了一个新池时,我一直能够在上面放置项目。有问题的表格是 HighScore。UserDetails 表不受影响
我能够进行身份验证并获取需要“身份验证”访问的资源,但由于某种原因,尝试 PutItem 时访问被拒绝。
错误是:
错误域=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 无权执行: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}"
]
}
}
}
]
}
解决方案
这里似乎有一个细粒度访问控制的错误,因为删除条件语句(即使在更改它以匹配表的键之后)解决了这个问题。
推荐阅读
- javascript - 无法将文本复制到剪贴板但 innerHTML 读取内容
- normal-distribution - 如何使用 RosinRammlerDistribution 中的参数来调整粒子注入的配置文件
- python - 从数据框中的列中替换部分文本
- php - PHP一种在array_sum之后找到密钥的方法
- tensorflow - ImageDataGenerator flow_from_dataframe 多输出回归和分类语法问题
- math - 我想知道 math.sin 算法是如何在内部工作的?
- mysql - 如何将 MySQL db 模式转换为原始 sql 代码?
- javascript - Javascript未在特定键处创建数组值
- .net - 如何设置虚拟 Gpio 环回
- python - Python - 将大型 json 转换为 csv