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

以非root用户运行SageMaker ProcessingJob并写入相关文件夹的方法

SageMaker ProcessingJob非root用户写入权限解决方案

方案1:通过启动脚本动态修改权限

SageMaker会在容器启动后挂载/opt/ml/processing目录,因此可以编写一个入口脚本,先以root身份修改目录权限,再切换到nonroot用户执行任务:

  1. 创建entrypoint.sh脚本:
#!/bin/bash
# 递归修改目录所属用户组为nonroot
chown -R nonroot:nonroot /opt/ml/processing
# 切换到nonroot用户执行处理脚本
su nonroot -c "python your_processing_script.py"
  1. 在Dockerfile中配置该脚本为入口,并赋予执行权限:
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# 以root身份启动入口脚本,确保有权限修改目录
USER root
ENTRYPOINT ["/entrypoint.sh"]

方案2:预创建目录并设置权限

在Dockerfile中提前创建/opt/ml/processing及其子目录,并将权限赋予nonroot用户,部分场景下可解决挂载后权限被覆盖的问题:

# 创建SageMaker所需的目录结构
RUN mkdir -p /opt/ml/processing/data /opt/ml/processing/output
# 修改目录权限给nonroot用户
RUN chown -R nonroot:nonroot /opt/ml/processing
# 切换到nonroot用户
USER nonroot

方案3:利用EC2实例的卷配置(可选)

如果ProcessingJob使用托管EC2实例,可在创建Job时通过volume_configuration配置挂载目录的权限,但该方法不如前两种直接,仅适用于特定场景。


原问题中的权限示例:

2022-11-30T10:20:13.567+01:00   + ls -la /opt/ml/processing

2022-11-30T10:20:13.567+01:00   total 24

2022-11-30T10:20:13.567+01:00   drwxr-xr-x 6 root root 4096 Nov 30 09:20 .

2022-11-30T10:20:13.567+01:00   drwxr-xr-x 5 root root 4096 Nov 30 09:20 ..

2022-11-30T10:20:13.567+01:00   drwxr-xr-x 2 root root 4096 Nov 30 09:20 data

2022-11-30T10:20:13.568+01:00   drwxr-xr-x 2 root root 4096 Nov 30 09:20 output

内容的提问来源于stack exchange,提问作者Michal R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:20:24