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

使用AWS Glue镜像glue_libs_4.0.0_image_01时遇权限拒绝错误求助

解决AWS Glue Libs容器中权限拒绝问题

问题根源

绑定挂载的./test和./libs目录在容器内继承了宿主机的用户权限,而容器默认以glue_user运行,该用户对挂载目录没有写入权限;同时在/home/glue_user/workspace下创建deps目录时,也可能因glue_user对该目录的权限不足导致失败。

解决方案

1. 匹配宿主机用户UID/GID运行容器

在docker run命令中添加--user $(id -u):$(id -g)参数,让容器内进程使用与宿主机当前用户相同的UID和GID,匹配挂载目录的权限:

docker run \
    --user $(id -u):$(id -g) \
    --mount=type=bind,source=./test,target=/home/glue_user/workspace/test \
    --mount=type=bind,source=./libs,target=/home/glue_user/workspace/libs \
    -w /home/glue_user/workspace \
    -e DISABLE_SSL=true \
    -e "PYTHONPATH=$PYTHONPATH:/home/glue_user/workspace/deps" \
    --rm -p 4040:4040 \
    -p 18080:18080 \
    --name glue_unit_tests docker-default-virtual.${{ vars.ARTIFACTORY_HOST }}/amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
    -c "mkdir -p deps/ && pip install -r test/requirements.txt -r libs/requirements.txt -t deps/; cd test && pytest || exit 1"

注意:CI流水线中运行时,需确保环境支持获取当前用户UID/GID,或提前配置对应变量。

2. 切换到root用户执行操作(不推荐生产环境)

以root用户启动容器,完成依赖安装后将权限转回glue_user:

docker run \
    --user root \
    --mount=type=bind,source=./test,target=/home/glue_user/workspace/test \
    --mount=type=bind,source=./libs,target=/home/glue_user/workspace/libs \
    -w /home/glue_user/workspace \
    -e DISABLE_SSL=true \
    -e "PYTHONPATH=$PYTHONPATH:/home/glue_user/workspace/deps" \
    --rm -p 4040:4040 \
    -p 18080:18080 \
    --name glue_unit_tests docker-default-virtual.${{ vars.ARTIFACTORY_HOST }}/amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
    -c "mkdir -p deps/ && pip install -r test/requirements.txt -r libs/requirements.txt -t deps/; chown -R glue_user:glue_user /home/glue_user/workspace/deps; cd test && su glue_user -c 'pytest' || exit 1"

3. 修改pytest缓存目录到非挂载路径

指定--cache-dir参数将缓存写入容器内的临时路径,避开挂载的test目录:

docker run \
    --mount=type=bind,source=./test,target=/home/glue_user/workspace/test \
    --mount=type=bind,source=./libs,target=/home/glue_user/workspace/libs \
    -w /home/glue_user/workspace \
    -e DISABLE_SSL=true \
    -e "PYTHONPATH=$PYTHONPATH:/home/glue_user/workspace/deps" \
    --rm -p 4040:4040 \
    -p 18080:18080 \
    --name glue_unit_tests docker-default-virtual.${{ vars.ARTIFACTORY_HOST }}/amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
    -c "sudo mkdir -p deps/ && sudo chown glue_user:glue_user deps/ && pip install -r test/requirements.txt -r libs/requirements.txt -t deps/; cd test && pytest --cache-dir=/tmp/.pytest_cache || exit 1"

4. 使用虚拟环境替代直接安装到deps目录

创建虚拟环境隔离依赖,无需手动设置PYTHONPATH:

docker run \
    --mount=type=bind,source=./test,target=/home/glue_user/workspace/test \
    --mount=type=bind,source=./libs,target=/home/glue_user/workspace/libs \
    -w /home/glue_user/workspace \
    -e DISABLE_SSL=true \
    --rm -p 4040:4040 \
    -p 18080:18080 \
    --name glue_unit_tests docker-default-virtual.${{ vars.ARTIFACTORY_HOST }}/amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
    -c "python -m venv venv && source venv/bin/activate && pip install -r test/requirements.txt -r libs/requirements.txt pytest; cd test && pytest || exit 1"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:44:54