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

如何搭建AWS与本地网络VPN实现Lambda调用本地API?

嘿,这个需求我刚好实操过,给你梳理下可行的实现思路和步骤,亲测能搞定Lambda访问本地API的问题!

核心逻辑

Lambda默认跑在AWS的公有VPC环境里,没法直接访问你本地私有网络的API。所以我们要做的就是:把Lambda放到一个能和本地网络打通的AWS VPC里,再通过AWS的Site-to-Site VPN把这个VPC和你的本地网络连起来,让两边的网络能互相通信。

具体实现步骤

1. 准备AWS侧的VPC资源

  • 如果你没有现成的VPC,先创建一个新VPC,至少包含1个私有子网(把Lambda放私有子网更安全,避免暴露到公网)。
  • 创建并配置Virtual Private Gateway (VGW),然后把它附加到你的VPC上——这是AWS侧的VPN接入点。

2. 配置本地侧的Customer Gateway

  • 在AWS控制台创建Customer Gateway (CGW),填写你本地网络的公网IP地址,以及本地的子网段(比如你的本地API所在的192.168.1.0/24)。
  • 这一步相当于告诉AWS:你的本地网络入口在哪里,要和哪个网段通信。

3. 创建Site-to-Site VPN连接

  • 在AWS控制台创建VPN连接,关联刚才的CGW和VGW。
  • 路由方式选静态路由就行(配置简单,适合小规模场景),直接添加本地子网段192.168.1.0/24作为目标路由。
  • 完成后,下载AWS生成的VPN配置文件(里面有IPsec隧道的参数,比如预共享密钥、隧道端点IP等)。

4. 配置本地VPN设备

  • 把下载的配置文件导入到你的本地VPN设备(比如家用路由器、企业防火墙,像PFSense、华硕梅林、华为防火墙都支持)。
  • 关键要确保:
    • 本地设备开放UDP 500和4500端口(IPsec VPN的标准端口),允许AWS VPN端点的IP访问这些端口。
    • 本地网络的防火墙规则允许来自AWS VPC子网的流量访问你的本地API(比如允许10.0.0.0/16(假设你的AWS VPC网段是这个)访问192.168.1.5的对应端口)。

5. 配置VPC路由表

  • 找到你VPC里的私有子网对应的路由表,添加一条路由:目标网段是192.168.1.0/24,下一跳指向刚才创建的VGW。
  • 这一步是告诉AWS VPC里的流量:要去本地网络的话,走VPN隧道。

6. 调整Lambda函数的配置

  • 编辑Lambda函数的网络设置,把它部署到刚才的私有子网里。
  • 给Lambda的IAM角色添加VPC相关的权限(比如ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces等,控制台配置时会自动生成推荐的权限)。
  • 配置Lambda的安全组:允许出站访问本地API的端口(比如TCP 80/443)。
  • 最后测试Lambda代码,比如用Python的requests库调用http://192.168.1.5/api/mymethod,应该就能成功访问了。
注意事项&排坑
  • 如果VPN隧道一直处于Down状态,先检查本地设备的公网IP是否正确,以及端口是否开放。
  • Lambda放在私有子网后,如果需要同时访问公网资源(比如调用AWS其他服务),需要给子网配置NAT网关——否则Lambda只能访问本地和VPC内的资源。
  • 静态路由一定要配置正确,两边的子网段不能冲突(比如AWS VPC网段别用192.168.1.0/24,避免和本地网段重复)。
替代方案(可选)

如果只是临时测试,不想折腾VPN,也可以用反向代理工具(比如ngrok)把本地API暴露到公网,Lambda直接调用公网地址。但这种方式安全性差,不适合生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:47:40