先搞懂Azure Blob的核心概念
在开始用之前,得先理清Blob存储的“骨架”——它是Azure专门用来存非结构化数据的服务(比如图片、视频、日志文件、备份数据这些没有固定格式的内容),核心由三个层级组成:
– 存储账户:Blob的“总容器”,所有Blob和容器都得归在某个存储账户下,相当于你的“云存储钱包”;
– 容器:用来分组管理Blob,类似电脑里的“文件夹”,比如可以建个“product-images”容器存商品图片;
– Blob:最终的“文件”,分三种类型——
– 块Blob(最常用):存大文件(比如视频、安装包),支持分块上传(最大5TB);
– 页Blob:主要用于VM磁盘(比如Azure VM的操作系统盘);
– 追加Blob:适合日志这类需要不断追加内容的文件(比如应用日志)。

记住:90%的业务场景用块Blob就够了,别纠结其他类型~
手把手创建第一个Blob存储账户
接下来实操创建存储账户,直接用Azure门户(最直观的方式):
1. 登录Azure Portal:打开portal.azure.com,用你的Azure账号登录(没账号的话先注册免费试用);
2. 搜索“存储账户”:在顶部搜索框输入“存储账户”,点第一个结果;
3. 点“创建”按钮:进入创建页面,填这些关键参数——
– 订阅:选你要绑定的Azure订阅(免费试用的话选“Azure免费订阅”);
– 资源组:要么选已有的,要么点“新建”(比如叫“BlobDemoRG”);
– 存储账户名称:必须是小写字母+数字,而且全球唯一(比如“myblobdemo202508”);
– 区域:选离你用户最近的区域(比如“East Asia”东亚,延迟低);
– 性能:选“标准”(大部分场景够了,“高级”适合需要低延迟的页Blob);
– 冗余:根据需求选——
– LRS(本地冗余存储):数据存在同一数据中心的3个机架,成本最低,适合非关键数据;
– GRS(异地冗余存储):数据复制到另一个区域,高可用,适合关键数据;
4. 确认创建:拉到页面底部点“查看+创建”,等几分钟(存储账户创建需要时间)。
提示:创建完成后,一定要先去“访问密钥”页面复制连接字符串(长这样:DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...
),后面上传数据要用到!
用三种方式上传下载数据
创建好存储账户,接下来传点数据试试~分享三种最常用的方式:
1. 门户直接上传(适合小文件)
- 进入存储账户→左侧“容器”→点“+ 容器”(比如叫“my-first-container”,权限选“私有”——默认私有最安全);
- 进入容器→点“上传”→拖放本地文件(比如“test.jpg”)→等进度条完成。
这种方式适合临时传小文件,不用写代码~
2. Azure CLI(适合批量操作)
先安装Azure CLI(官网下载),然后运行命令:
# 登录Azure(第一次用要输账号密码)
az login
# 上传文件到容器
az storage blob upload
--account-name myblobdemo202508
--container-name my-first-container
--name test.jpg
--file ./test.jpg
--account-key 你的账户密钥(或用连接字符串)
如果要批量上传文件夹里的所有文件,用--recursive
参数:
az storage blob upload-batch
--account-name myblobdemo202508
--source ./my-files
--destination my-first-container
3. Python SDK(适合代码集成)
先装SDK库:pip install azure-storage-blob
,然后写代码:
from azure.storage.blob import BlobServiceClient, BlobClient
import os
# 从环境变量拿连接字符串(别直接写代码里!)
connect_str = os.getenv("AZURE_BLOB_CONNECTION_STRING")
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
# 1. 上传文件
container_name = "my-first-container"
blob_name = "test-python.jpg"
file_path = "./test.jpg"
# 获取Blob客户端
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
# 上传(支持大文件自动分块)
with open(file_path, "rb") as data:
blob_client.upload_blob(data, overwrite=True) # overwrite=True覆盖已有文件
print(f"文件{file_path}上传成功!")
# 2. 下载文件
download_file_path = "./downloaded-test.jpg"
with open(download_file_path, "wb") as download_file:
download_file.write(blob_client.download_blob().readall())
print(f"文件下载到{download_file_path}!")
提示:连接字符串别硬编码!用环境变量(比如Windows下set AZURE_BLOB_CONNECTION_STRING=你的连接字符串
,Linux下export AZURE_BLOB_CONNECTION_STRING=你的连接字符串
),安全多了~
给Blob加上安全防护锁
Blob里存的可能是敏感数据(比如用户头像、备份文件),安全配置不能少!
1. 管好你的存储账户密钥
- 存储账户有2个密钥(primary和secondary),丢了就等于把存储账户公开了!
- 不要把密钥写在代码里、配置文件里——用环境变量或Azure Key Vault管理;
- 定期轮换密钥(在Azure门户“访问密钥”页面点“轮换密钥”),比如每3个月换一次。
2. 用SAS令牌限制访问(更灵活)
如果要给第三方临时访问Blob(比如让用户下载一个文件),别给账户密钥,用SAS令牌(共享访问签名):
– 进入容器→选要分享的Blob→点“生成SAS”;
– 设置过期时间(比如1天)、权限(比如只给“读取”权限);
– 复制生成的SAS URL(长这样:https://myblobdemo202508.blob.core.windows.net/my-first-container/test.jpg?sp=r&st=...
),发给对方。
这样即使SAS令牌泄露,过期后就没用了,比账户密钥安全!
3. 设置防火墙(只让信任的IP访问)
- 进入存储账户→左侧“防火墙和虚拟网络”;
- 选“允许选定的网络”→添加你的IP地址(比如你公司的公网IP);
- 保存后,只有这个IP能访问存储账户,其他人进不来~
让你的Blob存储更省钱
Azure Blob不便宜,学会优化成本能省一大笔!
1. 用对分层存储(核心技巧)
Blob有三个存储层,选对了能省80%成本!看表格:
层类型 | 适用场景 | 存储成本(相对) | 访问成本(相对) | 最小存储时间 |
---|---|---|---|---|
热层 | 频繁访问(每天多次,比如网站图片) | 最高 | 最低 | 无 |
冷层 | 偶尔访问(每月几次,比如月度报表) | 较低(约热层的1/3) | 较高(约热层的2倍) | 30天 |
归档层 | 极少访问(每年几次,比如年度备份) | 最低(约热层的1/10) | 最高(约热层的5倍) | 180天 |
操作方法:进入存储账户→“生命周期管理”→“+ 添加规则”→设置“从热层移到冷层”(比如“Blob创建后30天”),或“从冷层移到归档层”(比如“Blob创建后180天”)。
2. 删除未使用的资源
- 定期清理没用的容器(比如测试用的“my-test-container”);
- 删掉过期的Blob(比如去年的日志文件);
- 不用的存储账户及时删除(在Azure门户点“删除”)。
排查Blob使用中的常见坑
新手常踩的坑,提前避坑!
1. “Blob不存在”错误
- 90%是大小写错了:Azure Blob的容器名、Blob名严格区分大小写!比如你创建的容器是“ProductImages”,代码里写“productimages”,肯定找不到;
- 检查Blob路径:比如容器是“my-container”,Blob是“docs/test.pdf”,路径要写全。
2. 上传大文件超时
- 块Blob默认分块大小是4MB,大文件(比如10GB)要调大分块大小:
blob_client.upload_blob(data, chunk_size=10*1024*1024) # 10MB一块
- 用
upload_blob
的max_concurrency
参数(比如max_concurrency=10
),多线程上传,更快。
3. 无法访问Blob(403错误)
- 检查Blob权限:容器是“私有”的话,必须用账户密钥或SAS令牌访问;
- 检查防火墙设置:如果设了“允许选定的网络”,确认你的IP在列表里;
- 检查SAS令牌权限:比如你给的是“读取”权限,却想上传文件,肯定报错。
最后再提醒几个小技巧
- 用Azure Storage Explorer(桌面工具)管理Blob:比门户更方便,支持批量操作、预览文件;
- 开启诊断日志:在存储账户“监控”→“诊断设置”,记录访问日志,排查问题;
- 测试性能:用
az storage blob upload
命令加--debug
参数,看上传速度慢不慢(可能是区域选得远,换个近的区域)。
怎么样?从创建到安全,从上传到优化,是不是把Azure Blob的核心用法都覆盖了?赶紧去Azure portal试一遍,遇到问题再回来查坑点~
原创文章,作者:,如若转载,请注明出处:https://zube.cn/archives/235