知记
  • 编程
  • 实用工具
  1. 知记首页
  2. 编程

Azure Blob存储服务全流程使用指南:从创建到优化实战

6天前 • 编程 • 阅读 3

先搞懂Azure Blob的核心概念

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

Azure 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

云存储使用存储账户创建数据安全管理
赞 (0)
0
生成海报
知记

Copyright © 2025 鄂ICP备2025114066号-1