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

AWS Amplify AppSync改默认授权为IAM后API返回401/403如何解决

你遗漏的配置分为3个核心部分,按顺序操作即可解决报错:

1. 同步Amplify项目与云端的认证配置

你仅在AppSync控制台修改了默认授权模式,需要先确保本地Amplify配置和云端一致:

  • 如果你习惯通过Amplify CLI管理资源,直接修改amplify/backend/api/<你的API名称>/cli-inputs.json中的defaultAuthenticationType字段为AWS_IAM,再执行amplify push即可同步配置到云端,避免控制台修改被CLI配置覆盖
  • 如果你确定要保留控制台的修改,执行amplify pull拉取云端最新配置到本地即可

2. 补全IAM角色的AppSync访问权限

403报错基本都由权限缺失导致,IAM认证模式下需要给对应的访问角色开放API调用权限:

  • 未登录的访客用户:给Amplify自动生成的unauthRole添加AppSync访问权限
  • 已登录的认证用户:给Amplify自动生成的authRole添加AppSync访问权限
    参考权限策略如下,替换为你自己的AppSync API ARN即可:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "appsync:GraphQL",
      "Resource": "arn:aws:appsync:<区域ID>:<账号ID>:apis/<API ID>/*"
    }
  ]
}

如果你通过amplify push同步配置,Amplify会自动给对应角色生成上述权限,无需手动修改IAM。

3. 应用代码侧指定认证模式

API Key认证模式下无需额外指定凭证,切换为IAM后需要在代码中显式声明认证模式:

  • Amplify v6版本在初始化时全局指定:
import { Amplify } from 'aws-amplify';
import amplifyconfig from './amplifyconfiguration.json';

Amplify.configure(amplifyconfig, {
  API: {
    GraphQL: {
      defaultAuthMode: 'iam'
    }
  }
});
  • Amplify v5及更早版本在调用API时指定:
import { API, graphqlOperation } from 'aws-amplify';

const res = await API.graphql({
  ...graphqlOperation(你的查询/变更语句, { input: 参数 }),
  authMode: 'AWS_IAM'
});

配置完成后重新构建部署应用即可解决401/403报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:45:05