以下为本文档的中文说明

该技能提供了Azure Blob Storage的Rust SDK使用指南,用于上传、下载和管理Blob及容器。其核心功能是帮助Rust开发者快速集成Azure的对象存储服务——微软的云端对象存储解决方案。技能涵盖了从安装配置到认证授权再到各类操作的完整使用流程。安装方式是通过Cargo添加azure_storage_blob和azure_identity包。技能详细介绍了环境变量的配置,需要设置存储账户名称,并说明端点格式为https://.blob.core.windows.net/。认证方面,技能展示了如何使用DeveloperToolsCredential进行开发环境认证,该凭证会自动尝试多种认证方式(Azure CLI、Visual Studio Code、托管标识等)。技能还分类介绍了多种客户端类型:BlobServiceClient用于管理存储账户级别的操作;BlobContainerClient用于管理容器级别的操作;BlobClient用于单个Blob的上传、下载和删除操作。使用场景包括构建需要云端文件存储的Rust应用、实现文件的上传下载功能、管理容器生命周期,以及实现Blob的元数据管理和访问控制。核心原则是“类型安全与异步优先”——Rust SDK充分利用了Rust的类型系统和异步能力,提供编译期类型检查和高效的非阻塞I/O操作,确保代码的安全性和性能。


Azure Blob Storage SDK for Rust

Client library for Azure Blob Storage — Microsoft’s object storage solution for the cloud.

Installation

cargo add azure_storage_blob azure_identity

Environment Variables

AZURE_STORAGE_ACCOUNT_NAME=<storage-account-name>
# Endpoint: https://<account>.blob.core.windows.net/

Authentication

use azure_identity::DeveloperToolsCredential;
use azure_storage_blob::{BlobClient, BlobClientOptions};

let credential = DeveloperToolsCredential::new(None)?;
let blob_client = BlobClient::new(
    "https://<account>.blob.core.windows.net/",
    "container-name",
    "blob-name",
    Some(credential),
    Some(BlobClientOptions::default()),
)?;

Client Types

Client Purpose
BlobServiceClient Account-level operations, list containers
BlobContainerClient Container operations, list blobs
BlobClient Individual blob operations

Core Operations

Upload Blob

use azure_core::http::RequestContent;

let data = b"hello world";
blob_client
    .upload(
        RequestContent::from(data.to_vec()),
        false,  // overwrite
        u64::try_from(data.len())?,
        None,
    )
    .await?;

Download Blob

let response = blob_client.download(None).await?;
let content = response.into_body().collect_bytes().await?;
println!("Content: {:?}", content);

Get Blob Properties

let properties = blob_client.get_properties(None).await?;
println!("Content-Length: {:?}", properties.content_length);

Delete Blob

blob_client.delete(None).await?;

Container Operations

use azure_storage_blob::BlobContainerClient;

let container_client = BlobContainerClient::new(
    "https://<account>.blob.core.windows.net/",
    "container-name",
    Some(credential),
    None,
)?;

// Create container
container_client.create(None).await?;

// List blobs
let mut pager = container_client.list_blobs(None)?;
while let Some(blob) = pager.try_next().await? {
    println!("Blob: {}", blob.name);
}

Best Practices

  1. Use Entra ID authDeveloperToolsCredential for dev, ManagedIdentityCredential for production
  2. Specify content length — required for uploads
  3. Use RequestContent::from() — to wrap upload data
  4. Handle async operations — use tokio runtime
  5. Check RBAC permissions — ensure “Storage Blob Data Contributor” role

RBAC Permissions

For Entra ID auth, assign one of these roles:

  • Storage Blob Data Reader — read-only
  • Storage Blob Data Contributor — read/write
  • Storage Blob Data Owner — full access including RBAC

Reference Links

Resource Link
API Reference https://docs.rs/azure_storage_blob
Source Code https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/storage/azure_storage_blob
crates.io https://crates.io/crates/azure_storage_blob

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐