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

Lambda调用API Gateway返回Forbidden问题排查求助

问题排查:VPC内Lambda调用API Gateway返回Forbidden

问题背景

  • 已通过API Gateway区域终端节点将Lambda A以公开API形式对外暴露,且创建了对应API密钥
  • 本地桌面可正常调用该API,但同处于具备互联网访问权限VPC内的Lambda B调用时返回{'message':'forbidden'}
  • 尝试过x-api-key、api-key等不同请求头传递API密钥,问题仍未解决

Lambda B调用代码

import requests
import psycopg2
import time
from datetime import datetime
import uuid
import json
def lambda_handler(event, context):
    url = 'https://xxx.execute-api.ap-south-1.amazonaws.com/v1'
    myinp = {
    "s3url": "s3://xxxx-aws-dev-xxx/xxx/xxx.jpg",
    "sourcename":"xxx"
    }
    Api_key  = "xxxCJnl97g5hfke85jmkG1a2F9uS4ZplaJxLjxxx"
    header = {"X-Api-Key" : Api_key}
    x = requests.post(url, json = myinp, headers=header).json()
    print(x)

调用响应

{'message':'forbidden'}

排查方向

  1. API密钥与阶段关联检查

    • 确认API密钥已绑定到API Gateway对应阶段(Stage),且该阶段已启用API密钥验证
    • 检查API密钥状态是否为Enabled,未被禁用或过期
  2. VPC网络配置验证

    • 确认Lambda B所在VPC的NAT网关/互联网网关正常转发HTTPS流量
    • 检查Lambda B的安全组是否允许出站443端口访问
    • 在Lambda B代码中添加测试逻辑,验证公网访问与域名解析:
      # 测试公网连通性
      print(requests.get('https://api.ipify.org').text)
      # 测试API Gateway域名解析
      import socket
      print(socket.gethostbyname('xxx.execute-api.ap-south-1.amazonaws.com'))
      
  3. 请求头与WAF规则检查

    • 确保X-Api-Key请求头拼写完全正确(大小写敏感),可在代码中打印完整请求头确认未被篡改
    • 检查API Gateway关联的WAF规则,是否拦截了VPC内Lambda的请求(如IP限制、频率阈值等)
  4. API Gateway资源策略与方法配置

    • 确认API Gateway的资源策略未限制Lambda B所在VPC的IP范围或执行角色
    • 检查对应POST方法是否已关联到要求API密钥的使用计划,且阶段设置中开启了"API Key Required"选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:25:26