使用Python在Azure存储创建容器遇连接错误求助
解决Azure Blob容器创建失败的连接问题
看起来你的问题根源出在存储账户名里一个微小但致命的错误,咱们一步步来排查修复:
首先看报错信息里的主机地址:myaccount%20.blob.core.windows.net,这里的%20是URL编码后的空格字符——Azure存储账户名根本不允许包含空格,这直接导致DNS解析失败,连不上存储服务。
第一步:检查存储账户名的拼写和格式
确认你代码里的account_name='myaccount'没有隐藏的空格(比如复制粘贴时不小心带了前后空格)。可以在代码里加一行验证:
account_name = 'myaccount' print(repr(account_name)) # 用repr能显示出隐藏的空格或特殊字符
如果输出是'myaccount '(末尾带空格)或者' myaccount'(开头带空格),把空格删掉就好。
第二步:验证存储账户密钥的正确性
虽然报错是连接问题,但也有可能是复制密钥时带了多余的空格或换行符。建议直接去Azure门户里重新复制正确的账户名和密钥,确保没有额外字符。
第三步:考虑升级Azure存储SDK
你当前用的BlockBlobService是旧版SDK的API,如果你最近更新过SDK,可能存在兼容性问题。可以尝试切换到新版SDK的BlobServiceClient,API更稳定:
from azure.storage.blob import BlobServiceClient # 替换成你的连接字符串(从Azure门户获取) connection_string = "DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net" blob_service_client = BlobServiceClient.from_connection_string(connection_string) container_name = 'decipher' blob_service_client.create_container(container_name)
第四步:排查网络环境
如果以上都没问题,那可能是你的网络无法解析Azure存储域名——比如公司防火墙限制了访问,或者本地DNS服务器异常。可以在终端里ping一下正确的存储账户域名(比如myaccount.blob.core.windows.net),看看能不能正常解析和连通。
最后再提醒下:Azure存储账户名只能包含小写字母和数字,长度在3-24之间,绝对不能有空格或特殊字符,这一点一定要遵守哦。
内容的提问来源于stack exchange,提问作者Apoorv Upadhyaya
相关产品推荐
相关产品推荐

