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

AzureML Notebook挂载数据集时遇权限拒绝错误求助

AzureML数据集挂载权限拒绝问题排查与解决

问题场景

在AzureML中使用包含2个CSV文件的数据集,通过Notebook提交作业挂载数据集时,在run.wait_for_completion()处抛出权限拒绝错误,作业执行失败。

权限拒绝错误截图

涉及代码

Notebook主脚本

from azureml.core import Workspace, Experiment, Dataset, ScriptRunConfig, Environment

# set workspace
ws = Workspace.from_config()

dataset = Dataset.get_by_name(ws, "<dataset-name>")
compute_target = ws.compute_targets["<compute-name>"]
env = Environment.get(ws, "<environment-name>")
exp = Experiment(ws, "<experiment-name>")

# mount dataset 
input_data = dataset.as_mount()

src = ScriptRunConfig(source_directory="test",
                    script='test.py',
                    arguments=['--data_folder', input_data],
                    compute_target=compute_target,
                    environment=env)

# submit job
run = exp.submit(config=src)

# monitor run
run.wait_for_completion()

test.py脚本

import pandas as pd
import argparse
import os

ap = argparse.ArgumentParser()
ap.add_argument("-d", "--data_folder", type=str)
args = ap.parse_args()

def main():
    data1 = pd.read_csv(os.path.join(args.data_folder, 'file1.csv'))
    data2 = pd.read_csv(os.path.join(args.data_folder, 'file2.csv'))

if __name__ == "__main__":
    main()

解决建议

  • 检查数据集关联存储的权限
    进入Azure门户找到数据集对应的存储账户,进入容器的「访问控制(IAM)」页面,给提交作业的身份(用户账户或计算目标的托管身份)分配「存储Blob数据读取者」角色;同时在AzureML Studio的数据集「访问控制」中,确保该身份有读取权限。

  • 替换挂载方式为下载模式
    挂载模式可能存在权限上下文问题,把Notebook中的input_data = dataset.as_mount()改成input_data = dataset.as_download(),作业会自动将数据集下载到计算目标本地,避免挂载权限问题。

  • 验证计算目标的身份权限
    如果用的是计算集群,进入集群配置页面开启系统分配托管身份,再给这个身份分配存储Blob数据读取者角色;如果是计算实例,确认当前用户有权限访问数据集对应的存储。

  • 补充环境依赖包
    确保AzureML环境包含azureml-dataset-runtime包,这是数据集访问的必要依赖:

    env = Environment.get(ws, "<environment-name>")
    env.python.conda_dependencies.add_pip_package("azureml-dataset-runtime[pandas]")
    env.register(ws)
    
  • 调试实际访问路径
    在test.py中添加路径打印代码,确认作业实际访问的路径和文件列表:

    def main():
        print(f"Data folder path: {args.data_folder}")
        print(f"Files in folder: {os.listdir(args.data_folder)}")
        data1 = pd.read_csv(os.path.join(args.data_folder, 'file1.csv'))
        data2 = pd.read_csv(os.path.join(args.data_folder, 'file2.csv'))
    

    提交作业后查看日志,确认路径是否正确、文件是否存在,以及具体的权限报错信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:20:44