如何让同VPC内的Lambda通过私有连接访问Aurora PostgreSQL?
先给结论:用VPC私有连接绝对是最佳实践
把数据库暴露在公网本来就有安全风险,换成VPC内部的私有连接能彻底切断公网访问路径,完全符合AWS的安全架构建议,必须安排。
具体实现步骤
1. 确认Aurora集群已配置私有端点
- 登录AWS控制台进入RDS服务,找到你的Aurora PostgreSQL集群
- 查看「连接与安全性」配置:确保集群已绑定VPC内的私有子网(即无互联网网关、仅VPC内部可访问的子网)
- 记录集群的私有端点域名(格式类似
my-db-cluster-instance-1.xxxxxx.us-east-1.rds.amazonaws.com),优先用域名而非固定私有IP——因为Aurora故障转移时IP会变化,域名会自动指向新实例,稳定性更强
2. 将Lambda函数配置到目标VPC
- 进入Lambda控制台,打开你的函数,切换到「配置」标签页,点击「VPC」选项
- 点击「编辑」,选择Aurora集群所在的VPC,再勾选Aurora使用的私有子网(至少选2个,保障高可用)
- 为Lambda分配专用安全组,该安全组需允许出站访问5432端口(PostgreSQL默认端口)
3. 配置Aurora安全组的入站规则
- 进入EC2控制台的安全组页面,找到Aurora集群关联的安全组
- 添加一条入站规则:允许来自Lambda安全组的5432端口流量,确保Lambda能正常发起数据库连接
4. 更新Lambda的数据库连接串
- 将原公网连接串替换为私有端点域名的版本,示例:
postgresql://postgres:myPassword@my-db-cluster-private-endpoint.us-east-1.rds.amazonaws.com:5432/postgres?schema=SCHEMA
5. 验证整个链路
- 在Lambda中添加简单测试代码,比如连接数据库执行
SELECT 1;,确认连接成功 - 测试API Gateway触发Lambda的完整流程,确保没有网络超时、连接拒绝等问题
额外注意事项
- Lambda配置到VPC后默认无法访问公网,如果你的Lambda需要获取AWS Secrets Manager中的数据库密码(绝对不要硬编码密码!)或访问其他公网服务,可给私有子网配置NAT网关,或使用VPC端点访问AWS服务(后者更安全)
- 数据库密码必须存储在AWS Secrets Manager中,Lambda通过IAM权限获取,避免代码泄露风险
- 确保Aurora所在私有子网的路由表未关联互联网网关,保持纯私有网络环境
内容的提问来源于stack exchange,提问作者red house 87
相关产品推荐
相关产品推荐

