amazon/aws-glue-libsAWS Glue提供Docker容器镜像,使开发人员能够在本地开发环境中构建和测试ETL(抽取、转换、加载)作业。这些容器提供与AWS Glue服务高度相似的开发环境,主要用途包括:
该容器同时支持批处理和流处理工作负载,可用于直接脚本开发和测试驱动开发方法。
3.5.4-amzn-01.7.1.amzn.1-1.amzn2023)0.15.0.amzn.5-1.amzn2023)3.3.0.amzn.0-1.amzn2023)x86_64和arm64两种架构注意:该容器仅适用于本地开发和测试环境,不应用于生产部署。
~/.aws目录)用于运行本地开发的Glue ETL脚本:
bash# 设置工作区和脚本路径 WORKSPACE_LOCATION=/本地工作区路径 SCRIPT_FILE_NAME=sample.py # 使用spark-submit运行容器 docker run -it --rm \ -v ~/.aws:/home/hadoop/.aws \ # 挂载AWS凭证 -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \ # 挂载本地工作区 -e AWS_PROFILE=$PROFILE_NAME \ # 指定AWS配置文件(可选) --name glue5_spark_submit \ # 容器名称 public.ecr.aws/glue/aws-glue-libs:5 \ # 镜像名称 spark-submit /home/hadoop/workspace/src/$SCRIPT_FILE_NAME # 提交脚本路径
参数说明:
-v ~/.aws:/home/hadoop/.aws:挂载本地AWS凭证目录,使容器能够访问AWS资源-v $WORKSPACE_LOCATION:/home/hadoop/workspace/:挂载本地工作区,使容器可访问ETL脚本-e AWS_PROFILE:指定要使用的AWS凭证配置文件(如本地配置了多个profile)--rm:容器退出后自动删除-it:交互式终端模式启动交互式PySpark shell进行代码测试:
bash# 启动交互式PySpark shell docker run -it --rm \ -v ~/.aws:/home/hadoop/.aws \ # 挂载AWS凭证 -e AWS_PROFILE=$PROFILE_NAME \ # 指定AWS配置文件(可选) --name glue5_pyspark \ # 容器名称 public.ecr.aws/glue/aws-glue-libs:5 \ # 镜像名称 pyspark # 启动PySpark REPL
进入shell后,可直接编写和测试PySpark代码,例如:
python# 示例:读取S3数据 df = spark.read.csv("s3://my-bucket/path/to/data.csv", header=True) df.show()
使用PyTest运行ETL作业的单元测试:
bashdocker run -i --rm \ -v ~/.aws:/home/hadoop/.aws \ # 挂载AWS凭证 -v $WORKSPACE_LOCATION:/home/hadoop/workspace/ \ # 挂载本地工作区 --workdir /home/hadoop/workspace \ # 设置工作目录 -e AWS_PROFILE=$PROFILE_NAME \ # 指定AWS配置文件(可选) --name glue5_pytest \ # 容器名称 public.ecr.aws/glue/aws-glue-libs:5 \ # 镜像名称 -c "python3.11 -m pytest --disable-warnings" # 运行pytest命令
说明:
--workdir /home/hadoop/workspace:将容器工作目录设置为挂载的工作区python3.11 -m pytest:使用Python 3.11运行pytest--disable-warnings:禁用 pytest 警告输出(可选)hadoop(原版本为glue_user)⚠️ 这些容器镜像专为本地开发和测试设计,使用时需遵守以下安全要求:
容器应仅在安全、隔离的开发环境中运行。
有关早期版本AWS Glue容器的使用说明,请参考:
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务