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

通过API Gateway调用Lambda返回403错误的问题求助

问题排查与解决方案

核心现象总结

  • 本地运行Python脚本:调用公开API返回200
  • Lambda控制台测试:调用目标API返回200
  • API Gateway触发Lambda时:Lambda调用目标API返回403
  • 目标API无认证要求,API Gateway与Lambda的权限链路正常

可能原因及解决方法

1. 出口IP被目标API的反爬/IP限制拦截

Lambda在不同触发场景下的出口IP存在差异:

  • Lambda控制台测试:使用AWS Lambda服务的公网IP池,属于AWS官方可信IP段
  • API Gateway触发Lambda:请求出口会经过API Gateway边缘节点,部分公开API会将这类IP识别为非可信来源,触发拦截
  • 解决方式:
    • 给Lambda配置静态公网IP(通过VPC+NAT网关实现),将该IP加入目标API的白名单(若支持)
    • 在Lambda的请求头中添加合法User-Agent,模拟浏览器请求,规避反爬机制
      headers = {
          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
          "Accept": "application/json"
      }
      

2. API Gateway传递的额外请求头触发目标API拦截

API Gateway会向Lambda传递X-Forwarded-For、X-API-Key等默认请求头,部分公开API对未知头部敏感:

  • 解决方式:在Lambda代码中清理请求头,仅保留目标API需要的必要字段,避免传递无关头部

3. CDK集成配置导致请求行为异常

CDK默认的API Gateway-Lambda集成可能传递额外参数,改变Lambda的请求逻辑:

  • 解决方式:确保集成使用全代理模式,避免不必要的参数映射
    from aws_cdk import aws_apigateway as apigw, aws_lambda as _lambda
    
    lambda_fn = _lambda.Function(...)
    api = apigw.RestApi(...)
    api.root.add_method("GET", apigw.LambdaIntegration(lambda_fn, proxy=True))
    

4. Lambda网络权限配置问题(VPC场景)

若Lambda部署在VPC内:

  • 确认执行角色拥有ec2:DescribeNetworkInterfaces权限
  • 检查VPC安全组和NACLs是否允许出站访问目标API的443端口

调试建议

在Lambda代码中添加日志,对比两种触发方式的请求差异:

import requests
import json

def lambda_handler(event, context):
    print(f"触发来源IP: {context.identity.source_ip if hasattr(context, 'identity') else 'Lambda控制台'}")
    print(f"API Gateway传递的事件: {json.dumps(event)}")
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
    response = requests.get("目标API地址", headers=headers)
    
    print(f"目标API响应状态: {response.status_code}")
    print(f"目标API响应头部: {dict(response.headers)}")
    
    return {"statusCode": response.status_code, "body": response.text}

查看CloudWatch日志,重点对比出口IP、请求头的差异,定位拦截原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:23:18