本地文件上传至Azure容器时触发ResourceNotFoundError(容器不存在)问题求助
排查并解决Azure容器上传的ContainerNotFound错误
咱们一步步拆解这个「容器不存在」的错误,逐个排查解决:
1. 存储账户名配置错误(最可能的根源)
先看你的config.yaml里的连接字符串:
azure_storage_connectionstring: "DefaultEndpointsProtocol=https;AccountName=container_name;AccountKey=XYZ;EndpointSuffix=core.windows.net"
这里犯了一个关键错误:AccountName应该填你的Azure存储账户名称,而不是容器名!你现在把容器名填到了存储账户的位置,导致代码连到了错误的(甚至不存在的)存储账户,自然找不到目标容器。
比如你的存储账户实际叫my-project-storage,那连接字符串里的AccountName要改成my-project-storage。
2. 目标容器确实未创建
就算存储账户配置正确,如果你的Azure存储账户里根本没有创建container_name这个容器,也会触发这个错误。你可以:
- 登录Azure门户,找到对应的存储账户,进入「容器」页面,确认目标容器是否存在;
- 如果不存在,要么在门户手动创建,要么在代码里添加自动创建逻辑(需要你的账户密钥拥有容器创建权限)。修改
upload函数如下:
def upload(files, connection_string, container_name): container_client = ContainerClient.from_connection_string(connection_string, container_name) # 先检查容器是否存在,不存在则自动创建 if not container_client.exists(): container_client.create_container() for file in files: blob_client = container_client.get_blob_client(file.name) with open(file.path, "rb") as data: blob_client.upload_blob(data)
3. 容器名称拼写或格式错误
Azure存储容器名称有严格规则:必须全小写,只能包含字母、数字和短横线(不能以短横线开头或结尾)。检查config.yaml里的container_name是否符合规则,且和Azure门户里的容器名完全一致(大小写敏感)。
4. 额外验证:文件路径是否正确
虽然这不是当前错误的直接原因,但建议确认source_folder和get_files里的路径是否正确,比如config["source_folder"] + "/file"是否指向实际存在的文件目录,避免后续出现上传空列表的问题。
修改完存储账户配置,再加上容器存在性检查的逻辑,应该就能顺利解决这个错误了。
内容的提问来源于stack exchange,提问作者Kevin Nash
相关产品推荐
相关产品推荐

