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

如何动态配置AWS Lambda连接私有隔离子网RDS且无需频繁修改CDK脚本

实现方案

核心逻辑是将VPC侧固定网络资源一次性通过CDK部署完成,通过参数存储做CDK和Serverless Framework的配置解耦,后续Lambda增删改完全不需要调整CDK脚本。

一、CDK侧一次性配置(仅需部署1次,后续无需改动)

不要把Lambda部署到现有公有子网或RDS所在的私有隔离子网:公有子网部署Lambda无法在不绑定EIP的情况下满足公网出站需求,且难以阻断公网主动入站;RDS所在的隔离子网无公网出口路由,会导致Lambda失去出站能力。

  • 在VPC A中单独划出至少2个可用区的私有出口子网作为Lambda专用部署网段:
    • 子网路由表配置:VPC本地网段路由指向本地,默认0.0.0.0/0路由指向绑定EIP的NAT网关,满足公网出站需求
    • 为该子网绑定专用Lambda安全组:入站规则仅放行同VPC内信任资源、API Gateway私网调用的流量,完全拒绝所有公网CIDR段的主动入站请求;出站规则放通到RDS端口的访问流量、放通公网出站流量
  • 调整RDS实例绑定的安全组,添加入站规则:放行上述Lambda专用安全组对应数据库端口的访问,确保Lambda私网可连RDS
  • 将上述私有出口子网ID列表、Lambda专用安全组ID存入SSM参数存储,使用固定路径参数(例如/shared/vpc/lambda-subnet-ids、/shared/vpc/lambda-security-group-id),参数后续不需要修改

如果想压缩成本,且Lambda的公网出站需求仅为访问AWS公共服务(CloudWatch日志、S3等),可以不用部署NAT网关:直接在VPC A中配置对应服务的VPC终端节点,路由关联到RDS所在的私有隔离子网,后续把Lambda部署到该隔离子网即可,同样满足出站+无公网入站的要求。

二、Serverless Framework侧适配(无CDK依赖,自动拉取配置)

直接在现有Serverless配置中增加VPC关联逻辑,部署时自动从SSM拉取预先配置好的网络参数,不需要硬编码资源ID,后续不管Lambda怎么调整,只要网络架构不变就不用碰CDK脚本:

  • 给Serverless部署的执行角色添加上必要的权限:创建/删除/查询弹性网卡权限、SSM参数读取权限
  • 在serverless.yml的provider配置段动态引用SSM参数,示例配置片段:
provider:
  name: aws
  runtime: 你实际使用的运行时
  vpc:
    securityGroupIds:
      - ${ssm:/shared/vpc/lambda-security-group-id}
    subnetIds: ${ssm:/shared/vpc/lambda-subnet-ids}
  iam:
    role:
      statements:
        - Effect: Allow
          Action:
            - ec2:CreateNetworkInterface
            - ec2:DescribeNetworkInterfaces
            - ec2:DeleteNetworkInterface
            - ssm:GetParameter
          Resource: "*"
  • 配置完成后,所有通过Serverless部署的Lambda会自动接入预留的专用子网:
    • 与RDS同属VPC私网,安全组放通数据库端口,可直接私网访问RDS
    • 子网路由通过NAT网关/VPC终端节点实现出站访问能力
    • 安全组未放通公网入站规则,公网无法主动发起对Lambda的访问,仅能通过API Gateway正常触发
  • 现有API Gateway、S3+CloudFront的前端部署逻辑完全不需要改动,Lambda和API Gateway之间的调用走AWS内部链路,不会额外暴露公网访问面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:33:21