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

为何部署在VPC私有子网的Lambda Function URL仍可被调用?

VPC私有子网中Lambda Function URL可调用性疑问

我在AWS控制台从零创建了一个.NET Lambda函数,配置如下:

  • 从零构建的.NET函数
  • 启用Function URL
  • 启用CORS
  • 选择NONE认证方式
  • 部署至VPC的私有子网

生成的IAM角色包含权限:

  • AWSLambdaVPCAccessExecutionRole
  • AWSLambdaBasicExecutionRole

该VPC拥有两个公有子网和两个私有子网,所有子网仅关联本地路由(10.0.0.0/16),路由表的「子网关联」标签无显式关联,仅存在隐式本地路由表关联。

疑问:

  1. 我仍能调用该Lambda的Function URL,这是为什么?
  2. 此前发现部署在公有子网的Lambda Function URL几乎无法被调用,这两者为何有差异?
  3. 已知Function URL始终处于VPC外部,是否意味着该函数除其Function URL外,对外部世界完全不可见?

解答

1. 私有子网中Function URL可调用的原因

Lambda Function URL是AWS管理的公网入口端点,它和Lambda函数的执行环境完全分离:

  • Function URL本身运行在AWS全局网络中,不属于你的VPC,无论函数部署在公有还是私有子网,这个端点都是公网可达的。
  • 调用Function URL时,请求先抵达AWS全局端点,再由AWS内部转发至VPC私有子网内的Lambda执行环境——这个转发过程由AWS负责,不需要你的VPC配置公网路由。只要Lambda能通过VPC本地路由完成自身执行(比如无外部资源依赖),再加上AWSLambdaVPCAccessExecutionRole权限允许它通过AWS PrivateLink访问控制平面服务(如日志、指标服务),就能正常响应请求。

2. 公有子网中Function URL难以调用的原因

如果Lambda部署在公有子网却无法被调用,核心问题出在公有子网的配置缺失:

  • 公有子网默认需要关联带有互联网网关(IGW)的路由表,若只有本地路由,Lambda执行环境将无法访问AWS控制平面服务(比如CloudWatch日志、Lambda服务端点),导致函数无法初始化或运行,最终请求失败。
  • 此外,若公有子网的安全组或路由配置限制了Lambda与AWS服务的通信,也会导致Function URL请求无响应。

3. 函数对外部世界的可见性

是的,部署在VPC私有子网的Lambda函数,除了Function URL外,对外部世界完全不可见:

  • Lambda执行环境处于私有子网内,无公网IP,也没有通往互联网的路由(你当前配置下也没有NAT网关),无法主动发起对外的公网请求。
  • 外部只能通过AWS管理的Function URL端点触发函数,无法直接访问到VPC内的Lambda执行环境。

内容的提问来源于stack exchange,提问作者Matt W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:01:17