Azure Blob Storage TypeScript 技能
为 TypeScript/JavaScript 应用提供 Azure Blob Storage 的上传、下载与管理实现范式。
文档推荐 Entra ID、用户委托 SAS、HTTPS、短期令牌和最小权限,并披露了密钥、连接字符串及 SAS 的数据流;但仍展示账户密钥、匿名访问、账户级全权限 SAS,并直接打印 SAS URL,缺少用户确认、密钥泄露后的撤销/回滚流程和更严格的敏感数据处理约束,因此扣分。
涵盖安装、认证、容器、Blob、流式传输、SAS 和错误处理,且错误示例包含状态码反馈;但未提供该技能关键路径的专门测试,主文档与引用资料在 uploadStream 参数、浏览器上传 API 等处存在疑似不一致,部分环境和类型假设未验证,因此静态评分受限。
触发词、目标 SDK、Node.js 与浏览器差异及主要使用场景较清楚;但未明确非适用范围、权限前置条件、版本兼容边界或中文使用说明,也未说明中国大陆网络访问 Azure 端点可能存在的环境限制,因此扣分。
文档按安装、认证、操作、SAS、流式模式和最佳实践分层,带 MIT 许可、作者和 1.0.0 版本,并提供引用资料;但当前版本仅写作 12.x,缺少变更日志、明确维护责任、更新路径、FAQ 和系统化限制说明,因此扣分。
能够覆盖 Blob Storage 常见上传、下载、列举、删除、复制、元数据、流式处理及 SAS 生成任务,示例数量充足;但示例存在潜在 API/类型错误,未给出可验证的完整项目输出或测试结果,用户仍可能需要较多校正,因此按静态上限评分。
引用资料链接到 Azure SDK 官方仓库和官方文档,仓库还提供通用 CI、评估工作流和测试代码;但没有该技能专属的验收标准、测试覆盖或执行结果,且本次未执行代码,只能给予有限可审计性。
- 不要将账户密钥、连接字符串或 SAS 令牌打印到日志、客户端代码或长期存储中;优先使用用户委托 SAS、HTTPS、短过期时间和最小权限。
- 在采用示例前核对当前 @azure/storage-blob 版本的真实 API,尤其是 uploadStream、浏览器上传、并发参数和响应流类型。
- 删除、覆盖、复制和生成写入型 SAS 可能造成外部数据影响;应在应用层加入明确确认、范围限制、审计和恢复策略。
- Azure 服务端点、身份认证和网络访问可能受中国大陆网络及企业策略影响,部署前需验证可达性。
它能做什么 & 适用场景
该技能面向使用 @azure/storage-blob 的 TypeScript/JavaScript 开发者,覆盖 Azure Blob Storage 的客户端创建、身份验证和常见存储操作。它提供容器与 Blob 的创建、列举、删除、复制、属性和元数据管理示例,也涵盖块 Blob、追加 Blob、页 Blob、SAS 令牌及流式传输。内容同时说明 Node.js 与浏览器能力差异,并给出错误处理和实践建议。它适合需要快速建立 Azure Blob Storage 集成的编码代理场景,但不是独立运行的存储服务。
提供安装 @azure/storage-blob 与 @azure/identity 的步骤,指导代理读取 Azure 存储账户环境变量并创建 BlobServiceClient、ContainerClient 和 BlobClient。它给出容器创建、列举和删除,Blob 上传、下载、列举、删除和复制,以及属性、元数据和 HTTP 标头管理的 TypeScript/JavaScript 代码。它还展示 Microsoft Entra 凭据、连接字符串、共享密钥和 SAS 令牌认证,SAS 生成,以及块 Blob、追加 Blob和页 Blob 的使用方式。内容包括 Node.js 文件与流操作、浏览器上传、RestError 状态码处理和平台差异。
- TypeScript 后端开发者需要将文本、Buffer 或本地文件上传到 Azure Blob Storage 时。
- Node.js 应用需要使用流式传输处理大型文件,并显示上传进度时。
- 浏览器应用需要通过 SAS 令牌执行客户端 Blob 上传时。
- 开发者需要列举容器或 Blob、按前缀筛选并管理虚拟目录时。
- 日志或审计系统需要追加 Blob,或虚拟磁盘场景需要页 Blob 时。
优缺点一览
- 覆盖容器、Blob、认证、SAS、元数据、错误处理和 Node.js/浏览器差异。
- 示例直接对应 @azure/storage-blob 的主要客户端和操作。
- 包含流式上传、文件下载、分页 Blob 和多种 Blob 类型的具体模式。
- README 显示该 TypeScript 技能有 17 个测试场景。
- 要求 Node.js 18 或更高版本,并依赖 Azure SDK 包。
- 共享密钥、SAS 生成以及文件和流方法部分仅适用于 Node.js。
- 示例依赖 Azure 存储账户、环境变量和相应权限;技能本身不提供资源 provisioning。
- 集合处于积极开发阶段,内容和测试仍可能更新。
如何安装
在项目中运行:
npx skills add microsoft/skills
在安装向导中选择需要的技能。集合技能会安装到所选编码代理的目录,例如 GitHub Copilot 使用的 .github/skills/,多代理场景下也可建立符号链接。该技能的仓库路径为 .github/plugins/azure-sdk-typescript/skills/azure-storage-blob-ts/SKILL.md。使用 SDK 时,项目依赖安装命令为:
npm install @azure/storage-blob @azure/identity
如何使用
将该技能提供给编码代理后,可使用明确触发词,例如:“请用 @azure/storage-blob 和 DefaultAzureCredential 创建 BlobServiceClient,上传文件并处理 RestError。”也可以直接请求“上传、下载、列举或管理 Azure Blob Storage 中的 Blob”。实际账户名称、凭据、连接字符串或 SAS 值需要由项目环境提供;技能未定义独立的配置文件或运行命令。