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

使用Terraform操作AWS Glue时无法导入psycopg2模块问题

解决AWS Glue 4.0 Job无法导入psycopg2的问题

核心原因

Glue 4.0基于Python 3.10,标准psycopg2包依赖系统libpq库,但Glue环境未预装该库,直接使用普通whl或PyPI源的包会因底层依赖缺失报错。必须使用psycopg2-binary或编译好的兼容Glue环境的psycopg2包。

具体解决步骤

1. 替换为psycopg2-binary包

放弃标准psycopg2,改用预编译的psycopg2-binary(内置libpq依赖),修改Terraform的Glue Job配置:

resource "aws_glue_job" "example_job" {
  name     = "example-glue-job"
  role_arn = aws_iam_role.glue_role.arn

  command {
    name           = "glueetl"
    script_location = "s3://your-bucket/scripts/your-script.py"
    python_version = "3"
    # 直接指定PyPI源的psycopg2-binary版本
    additional_python_modules = "psycopg2-binary==2.9.9"
    # 或引用S3上的兼容whl包(需对应Python3.10、x86_64架构)
    # additional_python_modules = "s3://your-bucket/packages/psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
  }

  glue_version = "4.0"
}

2. 生成兼容标准psycopg2的whl包(可选)

若坚持用标准psycopg2,需生成适配Glue环境的包:

  • 在Amazon Linux 2(x86_64)EC2实例上安装Python3.10
  • 执行命令编译生成兼容whl:pip wheel psycopg2==2.9.9 --no-binary :all:
  • 将生成的whl上传至S3,再通过additional_python_modules引用

3. 验证权限与配置

  • 确保Glue Job的IAM角色拥有目标S3包路径的s3:GetObject权限
  • 检查additional_python_modules参数无拼写错误,包版本与Python3.10兼容

4. 规范脚本导入

脚本中直接使用标准导入语句:

import psycopg2

psycopg2-binary的导入包名仍为psycopg2,无需修改代码。

常见误区

  • 禁止在Glue脚本中执行pip install手动安装依赖,Glue环境不允许此类操作
  • 不要使用ARM架构编译的whl包,Glue运行环境为x86_64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:52:05