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

为何API GW可访问部署在无公网私有VPC中的Lambda?

问题核心:你混淆了Lambda入站调用链路与出站网络路径的边界

底层逻辑说明

  • 未接入自定义VPC的Lambda,运行在AWS为Lambda服务托管的公共服务VPC内,这个环境本身具备公网出站能力,但Lambda永远不会直接给函数实例分配公网可直连的IP。所有对Lambda的调用,都必须先访问Lambda服务的官方调用端点,经过Lambda服务侧的鉴权(资源策略、IAM权限校验)后,才会由服务内部把请求转发给对应的函数实例。你之前通过API GW公网端点能触发函数,本质是API GW持有调用该Lambda的权限,通过服务端点触发函数,和函数本身有没有"直接暴露在公网"没有关系。
  • 当你把Lambda部署到无IGW的私有子网时,改动的只有Lambda的出站网络路径:AWS会在你指定的私有子网创建弹性网卡,挂载到Lambda运行环境,之后Lambda主动发起的所有对外请求,都会走这张网卡、遵循你VPC子网的路由表规则——因为子网没有公网路由,这时候Lambda确实没法主动访问公网,这部分符合常规VPC网络逻辑。
  • 但Lambda的入站调用路径完全不受你自定义VPC配置的影响:不管你把Lambda放到哪个VPC、子网有没有公网连通性,所有入站调用请求都不会经过你VPC内的弹性网卡,而是由Lambda服务通过AWS内部的私有管控链路,直接把事件投递给函数运行环境。这个链路不需要你给API GW开VPC访问权限,也不经过你VPC的IGW、路由表,所以哪怕你的VPC完全断公网,只要API GW有调用Lambda的权限,就能正常触发函数。

关键认知澄清

所有AWS托管Serverless服务的VPC接入配置,默认都只控制服务实例的主动出站流量路径,不会改变服务自身的入站管控链路。想靠把Lambda放到私有子网阻断公网调用,从原理上就走不通。

阻断公网访问Lambda的正确配置方式

  • 从调用链路上游做权限控制:给API Gateway配置资源策略,拒绝所有公网来源的请求,仅放行信任的IP段、VPC来源的访问;或者直接将API GW配置为私有API,通过PrivateLink只对VPC内部提供服务,不开放公网端点。
  • 从Lambda侧做权限控制:调整Lambda的资源策略,仅允许信任的主体(比如特定VPC内的私有API GW、指定IAM角色)调用函数,拒绝公网侧API GW的调用权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:54:33