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

迁移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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:15:39