迁移Transformer v2后Amplify AppSync控制台IAM授权失效
解决Amplify Transformer v2迁移后的AppSync IAM授权问题
1. 查找AppSync API的ARN
- 登录AWS控制台,进入AppSync服务
- 选中目标API,在页面顶部的概览标签中即可获取API的ARN(格式示例:
arn:aws:appsync:us-east-1:123456789012:apis/abc1234567) - 也可通过AWS CLI命令查询:
aws appsync list-graphql-apis --query "graphqlApis[?name=='你的API名称'].apiArn" --output text
2. 修复未授权角色的IAM策略
控制台用IAM访问失败,核心原因是未授权角色的策略缺少AppSync API操作权限,可通过以下步骤验证修复:
- 进入IAM控制台,找到对应未授权角色(命名通常为
amplify-<项目名>-<环境名>-authUnauthRole) - 点击添加权限→创建内联策略,选择JSON模式,粘贴以下内容(替换为你的API ARN):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "appsync:GraphQL" ], "Resource": [ "arn:aws:appsync:你的区域:你的账号ID:apis/你的API ID/types/Query/fields/listMerchants", "arn:aws:appsync:你的区域:你的账号ID:apis/你的API ID/types/ModelMerchantConnection/*" ] } ] } - 保存策略后回到AppSync控制台用IAM身份重试查询,若正常则说明原自动生成策略存在权限遗漏,可基于此调整正式策略。
3. 配置DataStore的多授权策略
Transformer v2启用多授权后,需在Amplify配置中明确指定多授权策略,确保DataStore能正确切换授权模式:
- 在Vue项目的Amplify配置文件(如
aws-exports.js)中添加以下配置:import { AuthModeStrategyType } from '@aws-amplify/core'; Amplify.configure({ // 其他已有配置项... DataStore: { authModeStrategyType: AuthModeStrategyType.MULTI_AUTH } }); - 注意:确保
@aws-amplify/core和@aws-amplify/datastore版本一致,避免版本兼容问题。
4. 验证Transformer v2的Schema授权规则
检查GraphQL Schema中的授权配置,确保同时启用IAM和Cognito用户池授权:
type Merchant @model @auth(rules: [ { allow: public, provider: iam }, { allow: private, provider: userPools } ]) { id: ID! name: String! // 其他字段... }
- 若Schema未明确添加IAM的public授权规则,即使控制台配置了IAM作为授权提供商,仍会触发权限拒绝。
内容的提问来源于stack exchange,提问作者idig
相关产品推荐
相关产品推荐

