You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AppSync DynamoDB BatchResolver写入双表时遇AssumeRole权限错误求助

解决AppSync BatchResolver写入DynamoDB多表的权限错误

这个问题的核心是AppSync关联的DynamoDB数据源角色缺少对第二个表(TABLE-TWO)的dynamodb:BatchWriteItem权限。从日志里能看到,当前使用的角色是为TABLE-ONE创建的(appsync-datasource-ddb-xxxxxx-TABLE-ONE),默认只会拥有TABLE-ONE的操作权限,当你尝试用它写入TABLE-TWO时就会触发权限拒绝。

下面是具体的解决步骤:

1. 定位目标IAM角色

登录AWS控制台,进入IAM服务,在角色列表里搜索日志中显示的角色名:appsync-datasource-ddb-xxxxxx-TABLE-ONE。

2. 更新角色的权限策略

找到该角色关联的权限策略(通常是一个自定义策略,用于允许AppSync操作DynamoDB),点击编辑策略,添加针对TABLE-TWO的dynamodb:BatchWriteItem权限。

这里是一个示例策略,你可以根据实际情况调整:

{
    "Version": "2012-10-17",
    "Statement": [
        // 原有针对TABLE-ONE的权限
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchWriteItem",
                // 其他你需要的操作,比如PutItem、DeleteItem等
                "dynamodb:PutItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-ONE"
        },
        // 添加针对TABLE-TWO的权限
        {
            "Effect": "Allow",
            "Action": "dynamodb:BatchWriteItem",
            "Resource": "arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-TWO"
        }
    ]
}

如果你的BatchResolver还涉及到其他操作(比如条件写入、事务等),可以把对应的DynamoDB动作也加到Action列表里。

3. (可选)如果用基础设施即代码部署

如果你是用CloudFormation、CDK或者Terraform来管理资源,记得更新对应的角色权限模板,确保资源列表包含两个DynamoDB表的ARN,避免后续部署覆盖权限。

4. 验证修改

保存权限策略后,重新测试你的AppSync BatchResolver,此时应该能正常向两个表写入数据,CloudWatch里的权限错误也会消失。

内容的提问来源于stack exchange,提问作者Eric Desjardins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:52:50