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

Amplify创建的Lambda访问AppSync报UnauthorizedException错误如何解决?

错误原因排查
  • 核心授权参数错误:代码中x-api-key请求头传入的是API_DOCBACKEND_GRAPHQLAPIIDOUTPUT,这是AppSync的API ID值,不是API_KEY授权模式下需要的密钥值,Amplify自动生成的API Key对应的环境变量为API_<API名称>_GRAPHQLAPIKEYOUTPUT,参数不匹配直接导致鉴权失败。
  • 授权模式不匹配:如果你的AppSync API启用的授权模式不是API_KEY而是IAM、Cognito等其他模式,继续使用x-api-key头也会触发未授权异常。你已经配置了Lambda执行角色的AppSync访问权限,但当前代码没有对请求做SigV4签名,无法通过IAM授权校验。
  • 额外笔误:代码中查询的是listDonors接口,但返回数据时误取了listTodos字段,该问题在授权问题解决后会触发数据为空的报错。
可行解决方案

场景1:AppSync使用API_KEY作为授权模式

  • 修改请求头取值,将headers字段内的'x-api-key': process.env.API_DOCBACKEND_GRAPHQLAPIIDOUTPUT替换为'x-api-key': process.env.API_DOCBACKEND_GRAPHQLAPIKEYOUTPUT
  • 登录AWS AppSync控制台,确认对应API的API Key处于有效状态,未过期
  • 修改返回数据的笔误,将graphqlData: graphqlData.data.data.listTodos替换为graphqlData: graphqlData.data.data.listDonors

场景2:AppSync使用IAM作为授权模式

  • 移除代码中的x-api-key请求头,改用AWS SigV4对GraphQL请求做签名,可引入aws-sdk、aws-appsync等依赖实现签名逻辑,也可直接使用Amplify服务端API调用能力自动处理签名
  • 确认Lambda执行角色已绑定你提供的IAM权限策略,核对策略中Resource字段的AppSync API ID与实际API ID一致
  • 同样修正上述返回字段的笔误问题
验证步骤

修改完成后,先在AppSync控制台的查询测试页,选择对应的授权模式执行listDonors查询,确认接口能正常返回数据后再触发Lambda调用验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:57:03