Lambda连接AWS RDS出现No pg_hba.conf entry错误的求助
AWS RDS PostgreSQL 报 No pg_hba.conf entry 错误的原因及解决办法
问题原因
AWS RDS 托管的 PostgreSQL 不允许直接编辑服务器上的 pg_hba.conf 文件,该文件的访问规则是通过 RDS 的DB参数组来配置的。报错提示的 179.91.20.14 这个IP地址未被加入允许访问的规则列表,因此触发该错误。
另外需要注意:如果你的Lambda和RDS在同一VPC,但报错IP是公网IP,说明Lambda可能没有通过VPC内网访问RDS,而是走了公网路由,需要检查Lambda的VPC子网和路由配置。
解决办法
步骤1:准备自定义DB参数组
默认参数组无法修改,所以需要创建或使用已有的自定义参数组:
- 登录AWS控制台,进入RDS服务
- 切换到「参数组」页面,点击「创建参数组」
- 参数组家族选择与你的PostgreSQL版本匹配的选项,类型选「DB参数组」,填写名称和描述后完成创建
步骤2:配置pg_hba访问规则
- 在参数组列表中找到目标自定义参数组,点击「编辑参数」
- 搜索
pg_hba_rules参数,点击编辑按钮添加规则,格式示例:
说明:host all all 179.91.20.14/32 md5all all表示允许所有数据库、所有用户访问(可根据需求限定特定库/用户)179.91.20.14/32是要允许的IP地址及掩码,如果是Lambda所在子网段,可改为类似10.0.1.0/24这样的网段,适配动态IP的Lambdamd5是认证方式,需与RDS实例的password_encryption参数一致(如果用SCRAM加密,改为scram-sha-256)
- 保存参数修改
步骤3:关联参数组并重启实例
- 回到RDS实例详情页,点击「修改」
- 在「数据库选项」中找到「DB参数组」,选择刚才配置好的自定义参数组
- 选择「立即应用」或安排在维护窗口生效
- 重启RDS实例(
pg_hba_rules修改需要重启才能生效)
额外检查项
- 确认Lambda的VPC配置:确保Lambda关联的是RDS所在VPC的私有子网,且路由表中访问RDS内网地址的流量指向VPC内网路由,而非互联网网关
- 如果Lambda需要访问外网,配置NAT网关,但RDS访问走内网即可
内容的提问来源于stack exchange,提问作者user1799171
相关产品推荐
相关产品推荐

