如何让AWS Lambda访问EC2上的PostgreSQL数据库
排查Lambda无法访问EC2上PostgreSQL的缺失步骤
- 确认Lambda的VPC配置:Lambda必须设置为在VPC内运行,且关联的子网要和EC2实例所在子网(或同VPC内可路由的子网)一致。默认“不在VPC”模式下的Lambda,即便安全组配置正确,也无法直接访问EC2的私有IP。
- 检查PostgreSQL监听地址:修改
postgresql.conf里的listen_addresses参数为'*'或EC2的私有IP,默认仅监听localhost会导致外部(包括Lambda)无法连接,修改后需重启PostgreSQL服务。 - 配置PostgreSQL访问权限:在
pg_hba.conf中添加允许Lambda安全组访问的规则,示例:
其中host all all sg-xxxxxxxxx/32 scram-sha-256sg-xxxxxxxxx是Lambda的安全组ID,配置完成后重启PostgreSQL生效。 - 验证子网路由表:若Lambda和EC2在不同子网,需确认子网路由表包含VPC内部路由,避免流量被强制导向公网(自定义VPC需重点检查,默认VPC通常已配置)。
- 核对EC2的IP使用方式:Lambda中优先使用EC2的私有IP访问,无需依赖公网;若用公网IP,需确保Lambda所在子网有访问公网的权限(比如配置NAT网关)。
- 修正安全组入站规则:EC2安全组的入站规则,需明确允许Lambda的安全组访问PostgreSQL默认端口
5432,而非像个人IP那样使用CIDR地址段。规则类型选PostgreSQL或自定义TCP端口5432,来源直接选择Lambda的安全组ID。
内容的提问来源于stack exchange,提问作者Wesley
相关产品推荐
相关产品推荐

