Android端访问AWS DynamoDB遭权限拒绝问题求助
解决DynamoDB CRUD操作的Cognito权限报错问题
你遇到的核心问题是Cognito未授权角色缺少DynamoDB的访问权限——哪怕你把数据库本身的读写权限全开了,IAM角色如果没被允许执行对应的DynamoDB操作,依然会触发这个权限报错。下面是具体的解决步骤:
1. 定位到对应的Cognito未授权角色
- 登录AWS控制台,进入IAM服务
- 在左侧导航栏选择「角色」,搜索报错里的角色名:
shoppinglist_unauth_MOBILEHUB_1234567890 - 点击进入该角色的详情页面
2. 为角色添加DynamoDB权限策略
- 在角色详情的「权限」标签页,点击「添加权限」→「附加策略」
- 在策略列表里,你可以选择两种方式配置权限:
- 测试阶段推荐:直接选择AWS托管的
AmazonDynamoDBFullAccess策略,给角色完全的DynamoDB访问权限 - 生产环境推荐:创建自定义精细策略,只允许对目标表执行CRUD操作,示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Scan", "dynamodb:Query" ], "Resource": "arn:aws:dynamodb:你的AWS区域:1234567890:table/你的DynamoDB表名" } ] }
- 测试阶段推荐:直接选择AWS托管的
- 选择或创建好策略后,点击「附加策略」完成配置
3. 验证权限是否生效
- 等待1-2分钟让IAM策略生效(偶尔会有同步延迟)
- 重新运行你的App,尝试执行CRUD操作
额外排查点
- 确认App使用的Cognito身份池ID正确:检查raw目录下的json文件里的
IdentityPoolId是否和AWS控制台里的一致 - 确认DynamoDB表所在区域和Cognito身份池的区域匹配,跨区域访问也可能引发权限类报错
内容的提问来源于stack exchange,提问作者Redcoatwright
相关产品推荐
相关产品推荐

