Linux虚拟机通过Python SDK连接Azure私有Blob失败求助
问题:Linux虚拟机通过Python SDK连接同虚拟网络的私有Blob存储失败
从同一虚拟网络内的Linux虚拟机,使用Python SDK连接私有Blob存储,代码如下:
from azure.storage.blob import ContainerClient,BlobServiceClient service_client = BlobServiceClient(url,sas_token) container_client = service_client.get_container_client(container_name) blobs = container_client.list_blobs(name_starts_with='Inbound/Canvas/Extraction/') for blob in blobs: # split filename and the path blob_name = blob.name.rsplit('/', 1) print(blob_name)
执行后出现以下错误:
azure.core.exceptions.ServiceRequestError: <urllib3.connection.HTTPSConnection object at 0x7fbbf7de5070>: Failed to establish a new connection: [Errno -2] Name or service not known
排查与解决步骤
- 检查私有端点配置:确认已为Blob存储账户创建私有端点,且端点的虚拟网络、子网与Linux虚拟机完全匹配;同时确认
privatelink.blob.core.windows.net私有DNS区域已关联到该虚拟网络,确保域名解析指向私有IP。 - 验证域名解析:在Linux虚拟机上执行
nslookup <你的Blob账户名>.blob.core.windows.net,查看返回的IP是否为私有端点的IP。若解析失败,检查虚拟机DNS服务器配置,确保能访问私有DNS区域。 - 确认URL格式:
BlobServiceClient初始化时的url必须使用标准格式https://<账户名>.blob.core.windows.net,不要使用自定义域名,保证私有端点能匹配解析。 - 测试网络连通性:在虚拟机上运行
curl -v https://<账户名>.blob.core.windows.net,检查是否能建立HTTPS连接。若失败,排查网络安全组(NSG)规则:确保虚拟机出站允许443端口流量,私有端点入站允许443端口流量。 - 验证SAS令牌:确认SAS令牌包含
list权限(即权限字符包含l),且令牌未过期,目标容器名称与代码中container_name一致。
内容的提问来源于stack exchange,提问作者Nirmal
相关产品推荐
相关产品推荐

