使用Python SDK创建Azure存储账户后创建Blob容器遇ResourceNotFound错误
解决Azure存储账户创建后Blob容器创建时的ResourceNotFound错误
我之前也碰到过一模一样的问题,这个错误大概率是存储账户后台初始化未完成,或者参数配置出了问题。下面给你几个排查和解决的方向:
1. 给存储账户留足生效时间
Azure存储账户创建后,后台要完成DNS注册、资源配置等一系列操作,这个过程通常需要2-5分钟(高峰时段可能更久)。如果刚创建完账户就立刻调用创建容器的API,十有八九会碰到这个资源找不到的错误。
解决办法是给代码加个重试逻辑,用指数退避策略来应对延迟:
from tenacity import retry, stop_after_attempt, wait_exponential @retry(stop=stop_after_attempt(5), wait=wait_exponential(multiplier=1, min=2, max=10)) def create_blob_container(self, storage_account_name, storage_account_key, version): try: account = BlockBlobService(account_name=storage_account_name, account_key=storage_account_key.value) container_name = f"container-{version}" account.create_container(container_name) print(f"容器 {container_name} 创建成功") except Exception as e: print(f"创建容器失败,重试中:{str(e)}") raise
2. 校验存储账户名称和密钥的正确性
- 确认
storage_account_name完全无误:Azure存储账户名是全局唯一的,只能用小写字母和数字,别出现拼写错误。 - 确认
storage_account_key.value是有效的访问密钥:可以去Azure门户的存储账户→「访问密钥」里复制主密钥或辅助密钥,注意别带多余的空格或换行符。
你可以先做个简单的连接测试,验证账户信息是否正确:
account = BlockBlobService(account_name=storage_account_name, account_key=storage_account_key.value) # 尝试列出容器,检查连接是否正常 containers = account.list_containers() print(f"当前存储账户下的容器数量:{len(list(containers))}")
3. 指定正确的存储终结点
如果你的存储账户是在特殊区域(比如中国区Azure),或者配置了私有链接,需要在创建BlockBlobService时指定对应的终结点后缀:
比如中国区的终结点后缀是core.chinacloudapi.cn:
account = BlockBlobService( account_name=storage_account_name, account_key=storage_account_key.value, endpoint_suffix="core.chinacloudapi.cn" )
如果是私有链接场景,要指定custom_domain参数指向你的私有终结点地址。
4. 检查存储账户的状态
去Azure门户里看看存储账户的状态,确认它处于「已部署」状态,没有报错或警告。如果账户还在「创建中」或者创建失败,得先解决账户本身的问题。
内容的提问来源于stack exchange,提问作者Rahul Goud
相关产品推荐
相关产品推荐

