Azure Blob 存储 Python SDK
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/azure-storage-blob-py-zh。
技能介绍
要解决什么问题
在 Azure 上存取图片、日志、备份等非结构化数据时,若仍依赖连接字符串或账户密钥,审计与密钥轮换很难与 Microsoft Entra ID 对齐;大文件上传、层级列举和 Web 内容类型也容易在示例代码里被忽略,导致生产环境资源泄漏或性能问题。
技能如何组织内容
本技能围绕 azure-storage-blob Python SDK,按「鉴权 → 客户端层级 → 核心工作流 → 进阶主题」展开:
- 鉴权与生命周期:强调
DefaultAzureCredential(本地与云端统一)、生产环境用AZURE_TOKEN_CREDENTIALS限定凭据链;同步/异步客户端与异步凭据均用上下文管理器释放 HTTP 与令牌缓存。 - 三层客户端:
BlobServiceClient(账户级)→ContainerClient(容器)→BlobClient(单个 blob),对应创建容器、上传/下载/列出/删除等核心流程。 - 生产向细节:用户委托 SAS(Entra 签名,不用账户密钥)、
max_concurrency大文件传输、readinto()省内存、walk_blobs()层级列举、重传时overwrite=True、为 Web 服务设置内容类型;另含 blob 属性/元数据与 异步客户端 说明。
技能内 references/capabilities.md 映射能力索引,references/non-hero-scenarios.md 补充非主路径示例。
适用边界与注意点
- 同步与异步二选一:同一路径不要混用
azure.storage.blob与azure.storage.blob.aio。 - 文档中的片段可能省略
with/async with写法,上线代码应始终包裹客户端。 - 本地开发优先 Entra 链式凭据;在 Azure 内运行时再按环境选用托管标识等工作负载凭据,而非回退到长期密钥。
使用场景
- 在 Azure 上跑的 Python 服务需要把用户上传文件写入指定容器,并用 DefaultAzureCredential 完成鉴权而非连接字符串
- 数据管道要把本地或内存中的大文件流式上传到 Blob,并在大文件场景下配置 max_concurrency 与 overwrite=True
- 需要给外部或前端提供限时下载链接,用 Entra 用户委托密钥签发 SAS,避免使用存储账户密钥
- 运维或批处理任务要按目录层级枚举容器内 blob(walk_blobs),并批量下载或删除过期对象
适合人员
- 在 Azure App Service 或容器上维护 Python 后端、要把附件与日志落到 Blob 并符合 Entra 审计要求的应用工程师
- 编写 ETL 或备份脚本、需用 readinto() 控制内存并处理 GB 级 blob 传输的数据工程师
- 负责存储安全策略、要在代码评审中禁止连接字符串并统一推广用户委托 SAS 的云平台或安全工程师
- 正在把同步 blob 客户端迁移为 azure.storage.blob.aio、且要求全路径统一异步与上下文管理器的维护者