如何使用Python编写的Azure自动化Runbook访问Azure文件共享中的文件
Azure自动化Runbook访问Azure文件共享解决方案
错误原因
你当前使用的BlobServiceClient是Azure Blob存储对应的SDK类,仅可操作Blob容器资源,无法访问Azure文件共享,需要使用文件存储专用的SDK,同时完成自动化账户的权限配置。
步骤1:安装Python依赖包
首先在Azure自动化账户中安装文件存储SDK:
- 进入自动化账户控制台 -> 共享资源 -> Python 包 -> 添加 Python 包
- 搜索安装
azure-storage-file-share包,选择匹配你Runbook的Python版本即可
步骤2:安全存储连接字符串
禁止明文写连接字符串,存储到自动化账户加密变量中:
- 进入自动化账户 -> 共享资源 -> 变量 -> 添加变量
- 变量名设为
FileShareConnStr,值填写存储账户的访问连接字符串,类型选字符串,勾选加密后保存
步骤3:替换正确的Runbook代码
from azure.storage.fileshare import ShareServiceClient from azure.identity import DefaultAzureCredential from azure.mgmt.automation import AutomationClient import os # 读取自动化账户运行环境内置参数 subscription_id = os.environ["SUBSCRIPTION_ID"] rg_name = os.environ["RESOURCE_GROUP_NAME"] auto_account_name = os.environ["AUTOMATION_ACCOUNT_NAME"] # 读取加密存储的连接字符串 cred = DefaultAzureCredential() auto_client = AutomationClient(cred, subscription_id) conn_str = auto_client.variable.get(rg_name, auto_account_name, "FileShareConnStr").value # 初始化文件共享客户端,替换为你实际的文件共享名称 share_name = "你的文件共享名称" share_client = ShareServiceClient.from_connection_string(conn_str).get_share_client(share_name) # 遍历文件共享根目录下的所有文件和文件夹 for item in share_client.list_directories_and_files(): print(item.name) # 读取指定文件内容示例,替换为你实际的文件路径 file_client = share_client.get_file_client("testdir/test.txt") content = file_client.download_file().readall() print(content.decode("utf-8"))
测试场景可跳过变量读取步骤,直接将存储账户连接字符串赋值给
conn_str变量快速验证,生产环境必须使用加密变量存储敏感信息。
步骤4:配置托管标识权限
确保自动化账户的系统分配托管标识有存储账户的访问权限:
- 进入目标存储账户 -> 访问控制(IAM) -> 添加角色分配
- 角色选择存储文件数据共享参与者,分配对象选择自动化账户的系统分配托管标识,保存后等待5分钟权限生效即可
内容的提问来源于stack exchange,提问作者rainbow12
相关产品推荐
相关产品推荐

