MWAA Airflow连接PostgreSQL时触发SCRAM认证错误的解决方案咨询
MWAA Airflow连接PostgreSQL时触发SCRAM认证错误的解决方案咨询
我来帮你分析这个问题并给出可行的解决方案——你遇到的错误核心原因很明确:MWAA环境自带的libpq版本(9.2.24)太低,不支持PostgreSQL的SCRAM认证;虽然你的psycopg2版本(2.9.5)本身是支持SCRAM的,但它依赖底层系统的libpq库,所以才会触发这个报错。下面是几种可以尝试的解决办法:
使用psycopg2-binary替代官方psycopg2
这是最推荐的方案,因为psycopg2-binary包自带了独立的libpq库,完全不依赖MWAA系统自带的旧版本。具体操作步骤:- 在你的MWAA依赖的
requirements.txt文件中,移除原来的psycopg2==2.9.5,替换成psycopg2-binary==2.9.5 - 将更新后的
requirements.txt上传到MWAA配置指定的S3依赖存储桶中 - 进入AWS控制台的MWAA管理页面,找到你的环境,触发「更新依赖」操作,等待依赖安装完成后重启Airflow调度器和Worker
完成后,你的DAG里使用的psycopg2就会调用自带的高版本libpq,自然就能支持SCRAM认证了。
- 在你的MWAA依赖的
临时调整PostgreSQL的认证方式(不推荐生产环境)
如果你有权限修改目标PostgreSQL实例的配置,可以临时把对应用户的认证方式从scram-sha-256改为md5:- 修改PostgreSQL的
pg_hba.conf文件,将目标用户/数据库对应的认证方法改为md5 - 重启PostgreSQL服务使配置生效
- 确保你的数据库用户的密码是用MD5哈希存储的(如果之前是SCRAM哈希格式,可能需要重新设置密码)
这个方法的缺点是降低了认证的安全性,只适合测试或者非敏感环境临时使用。
- 修改PostgreSQL的
自定义MWAA运行环境镜像(进阶方案)
如果你需要完全控制环境依赖,可以使用AWS MWAA的自定义镜像功能:- 基于MWAA官方提供的Airflow 2.4.3基础镜像,构建自己的自定义镜像,在镜像中升级libpq到10+版本,或者直接安装
psycopg2-binary - 将构建好的镜像上传到AWS ECR容器仓库
- 在MWAA环境配置中切换使用自定义镜像
这个方案适合有容器镜像构建经验的用户,优点是可以完全定制环境,但操作相对复杂,需要持续维护镜像版本。
- 基于MWAA官方提供的Airflow 2.4.3基础镜像,构建自己的自定义镜像,在镜像中升级libpq到10+版本,或者直接安装
备注:内容来源于stack exchange,提问作者RagePwn
相关产品推荐
相关产品推荐

