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

使用AWS Amplify调用Lambda函数时遇403 Access Denied错误求助

AWS Amplify调用API Gateway返回403 Access Denied问题排查

问题现象

  • 调用API.get请求Lambda时,持续返回403 {"message":"Access Denied"}
  • CloudWatch日志标记为未授权请求
  • 功能曾正常运行,回滚API Gateway staging环境旧部署后可恢复正常
  • 已验证API URL与staging环境一致,调用时传递查询字符串参数,CORS已启用且API完成部署
  • 已配置Cognito用户池授权器(附配置截图:Cognito授权器基本设置、API方法授权关联设置)

代码片段

const authorization = (await Auth.currentSession()).getIdToken().getJwtToken();
console.log({ authorization });

const xmlText = await API.get("AbnLookupApi", "/abnLookup", {  
    headers: {
        authorization,
    },
    queryStringParameters: {
        // acnNumber: '30656142479' 
        acnNumber: cbnNumber
    }
}).then((result) => {
    const xml = parseXml(result);
    console.log(xml);
    const error = xml.getElementsByTagName('exceptionDescription');
    if(error.length > 0)
    {
        processErrors(error);
        return;
    }
    const orgNameElement = xml.getElementsByTagName("organisationName");
    console.log(orgNameElement[0].value); 
    setOrgName(orgNameElement[0].value)
}).catch((e) => {
    dispatch(setError(e.message));
    console.log(e);
}); 

排查方向

  1. 授权器配置差异

    • 对比新旧部署中Cognito授权器的用户池ID、客户端ID是否一致
    • 确认授权器的Token Source是否为Authorization(注意HTTP头大小写,部分场景下存在严格匹配要求)
    • 检查授权器的缓存超时设置,排查是否因令牌缓存失效导致误拦截
  2. API方法授权设置

    • 验证新部署中/abnLookup方法是否正确关联Cognito授权器,未被误改为NONE或其他授权类型
    • 检查方法资源策略是否新增限制规则,导致请求被拒绝
  3. JWT令牌有效性

    • 解码JWT令牌(可通过jwt.io工具),确认iss(签发者)、aud(受众)是否与授权器配置匹配
    • 检查令牌是否过期,是否包含授权器要求的用户范围(scopes)
  4. Amplify API调用细节

    • 确认aws-exports.js中的API配置(ID、stage)在新部署后未发生变化
    • 尝试将请求头的authorization改为Authorization(首字母大写),验证是否因头字段大小写导致授权失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:01:35