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

如何在AWS Glue Python Shell中安装ODBC驱动解决pyodbc报错

解决AWS Glue Python Shell中ODBC驱动缺失问题

方法一:使用自定义镜像预安装驱动

基于AWS官方Glue Python Shell镜像构建自定义镜像,在镜像构建阶段完成驱动安装:

  • 创建Dockerfile示例:
    FROM amazon/aws-glue-python-shell:latest
    # 安装基础依赖
    RUN yum install -y unixODBC unixODBC-devel
    # 添加微软yum源并安装ODBC Driver 17
    RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
    RUN ACCEPT_EULA=Y yum install -y msodbcsql17
    
  • 构建镜像并推送到AWS ECR仓库
  • 在Glue作业配置中选择该自定义镜像作为运行环境

方法二:通过初始化脚本实时安装

编写Shell脚本作为Glue作业的初始化脚本,作业启动时自动安装驱动:

  • 创建install_odbc.sh脚本:
    #!/bin/bash
    yum install -y unixODBC unixODBC-devel
    curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
    ACCEPT_EULA=Y yum install -y msodbcsql17
    
  • 将脚本上传到S3存储桶
  • 在Glue作业配置的「初始化脚本」中指定该S3路径
  • 确保Glue作业角色拥有访问该S3路径以及执行yum安装的网络权限

方法三:使用预打包的Glue层

预先编译好驱动文件,打包成Glue层供作业调用:

  • 在Amazon Linux 2环境(与Glue Python Shell一致)中安装ODBC驱动,收集/opt/microsoft/msodbcsql17/lib64/下的相关库文件
  • 将库文件打包为zip包,上传到S3
  • 在Glue控制台创建层并关联该zip包
  • 在作业中添加该层,代码里指定驱动路径:
    import pyodbc
    conn = pyodbc.connect(
        f'DRIVER=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1;'
        f'SERVER=你的服务器地址;'
        f'DATABASE=你的数据库;'
        f'UID=用户名;'
        f'PWD=密码'
    )
    

注意事项

  • Glue Python Shell基于Amazon Linux 2,所有安装操作需适配该系统
  • 作业角色需具备对应权限:S3访问、ECR镜像拉取(若用自定义镜像)、访问微软yum源的网络权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:25:15