AWS Glue连接CockroachDB报错:SCRAM认证需libpq 10及以上
AWS Glue中psycopg2因libpq版本过低导致SCRAM认证错误的解决办法
问题概述
- 错误提示:
OperationalError: SCRAM authentication requires libpq version 10 or above - 当前环境版本:
- psycopg2:
2.9.5 (dt dec pq3 ext) - libpq:
90224(对应9.2.24版本)
- psycopg2:
- 背景:此前Glue任务运行正常,近期突然因SCRAM认证要求失败,且无法直接升级Glue系统自带的libpq库
可行解决方案
1. 替换为psycopg2-binary包
psycopg2-binary是预编译的独立包,自带符合SCRAM认证要求的libpq版本,无需依赖Glue系统的libpq:
- 在Glue任务的Python依赖配置中,移除原有的
psycopg2,添加psycopg2-binary==2.9.5(版本与原psycopg2保持一致) - 该方案无需修改系统环境,是Glue环境下最快捷的解决方式
2. 构建自定义Glue作业镜像
若必须使用标准psycopg2包,可基于官方Glue镜像构建自定义镜像并升级libpq:
- 拉取对应Glue版本的官方镜像(例如
amazon/aws-glue-libs:glue-3.0) - 在Dockerfile中添加升级libpq的命令(以Amazon Linux 2为例):
RUN amazon-linux-extras install postgresql10 -y && \ yum install -y postgresql10-libs - 构建镜像并推送到AWS ECR
- 在Glue任务配置中选择该自定义镜像运行作业
3. 临时调整PostgreSQL认证方式(不推荐长期使用)
若暂时无法修改Glue作业配置,可临时降低PostgreSQL的认证要求:
- 编辑PostgreSQL的
pg_hba.conf配置文件,将对应用户/数据库的认证方式从scram-sha-256改为md5 - 重启PostgreSQL服务使配置生效
- 注意:此方式会降低数据库认证安全性,仅作为临时过渡方案
内容的提问来源于stack exchange,提问作者eclipse
相关产品推荐
相关产品推荐

