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

AWS Lambda连接RDS Postgres报错:无pg_hba.conf加密条目

解决方案:Lambda连接RDS Postgres报pg_hba.conf无条目错误

针对你遇到的no pg_hba.conf entry for host '10.0.2.14', user 'postgres', database 'creditcuesdb', no encryption错误,按以下步骤排查:

1. 确认RDS参数组的SSL设置是否真正生效

  • 检查RDS实例的配置标签,确认当前使用的参数组是你修改了rds.force_ssl=0的那个,而非默认参数组。
  • 重启实例后,通过psql连接执行SHOW ssl;,如果返回on,说明参数未生效,可能是参数组未正确关联,或者需要等待更长时间让配置同步。

2. 修正Lambda连接代码的SSL模式

大部分Postgres客户端驱动默认强制SSL连接,即使RDS关闭了强制SSL,代码中未明确禁用SSL仍会触发报错:

  • Python(psycopg2):修改连接字符串,添加sslmode=disable
    conn = psycopg2.connect(
        host="<RDS端点>",
        database="creditcuesdb",
        user="postgres",
        password="<你的密码>",
        sslmode="disable"
    )
    
  • Node.js(pg库):在连接配置中设置ssl: false
    const client = new Client({
        host: "<RDS端点>",
        database: "creditcuesdb",
        user: "postgres",
        password: "<你的密码>",
        ssl: false
    });
    

3. 验证Lambda与RDS的网络连通性

  • 确保Lambda运行在与RDS同一VPC的子网中,且Lambda的安全组被允许访问RDS安全组的5432端口入站(即使你开了所有流量,也要确认Lambda的安全组在RDS的入站规则里)。
  • 检查Lambda执行角色是否拥有VPC相关权限(ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces等),否则Lambda无法在VPC内建立网络连接。

4. 手动测试连接排除环境问题

在同一VPC的EC2实例上安装psql,执行以下命令测试连接:

psql -h <RDS端点> -U postgres -d creditcuesdb -p 5432
  • 如果连接成功,问题出在Lambda代码或配置;如果同样报错,回到RDS参数组和安全组排查。

5. 检查RDS的pg_hba等效限制

RDS不允许直接编辑pg_hba.conf,但会通过参数组控制访问规则:

  • 在参数组中搜索rds.allowed_hosts,确保未设置IP白名单限制(如果设置了,要把Lambda所在子网的IP段加入)。
  • 默认情况下,RDS允许同一VPC内所有IP通过md5认证,若你修改过rds.pg_hba.conf相关参数,需恢复默认或调整规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:39