AWS Glue Python脚本关联Redshift连接后无法从S3安装Wheel包
保留Redshift连接同时从S3安装依赖的解决方法
当Glue作业关联Redshift连接后,作业会切换到VPC网络环境运行,默认会尝试从PyPI拉取依赖(即使已指定S3包),导致无公网访问时安装失败。以下是可行的解决步骤:
1. 配置作业参数强制使用S3依赖
在Glue作业的作业参数中添加以下参数,禁止从PyPI索引拉取,强制使用指定的S3 Wheel包:
- 添加参数
--additional-python-modules,值为你的S3 Wheel包完整路径(如s3://your-bucket/packages/SQLAlchemy-1.4.52-cp39-cp39-manylinux_2_5_x86_64.whl) - 添加参数
--no-index,无额外值,用于告诉pip不使用PyPI索引,仅使用提供的本地/S3包 - 保留原有的
--extra-py-files参数(若包含其他非Wheel格式的依赖文件)
2. 确保VPC配置S3网关端点
检查Redshift连接关联的VPC是否配置了S3网关端点:
- 登录AWS控制台,进入VPC服务,在「端点」中创建或确认存在S3的网关端点(类型为Gateway,关联目标S3桶所在的路由表)
- 这样Glue作业在VPC内可以直接访问S3,无需公网或NAT网关
3. 验证Wheel包兼容性
确认你的Wheel包与Glue Python-shell的Python版本匹配(例如Glue 4.0对应Python 3.9),避免因版本不兼容导致安装失败。
报错信息回顾
__main__.CommandFailedException: /tmp/glue-python-libs-cVlK/SQLAlchemy-1.4.52-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl installation failed after 2th retry due to exception: CalledProcessError
内容的提问来源于stack exchange,提问作者Nevermore
相关产品推荐
相关产品推荐

