AgentSkillsCN

azure-storage-blob-rust

Azure Blob Storage Rust SDK。用于上传、下载以及管理 Blob 和容器。触发器包括:“blob storage rust”、“BlobClient rust”、“upload blob rust”、“download blob rust”、“contain

SKILL.md
--- frontmatter
name: azure-storage-blob-rust
description: Azure Blob Storage SDK for Rust. Use for uploading, downloading, and managing blobs and containers. Triggers: "blob storage rust", "BlobClient rust", "upload blob rust", "download blob rust", "contain
category: Development & Code Tools
source: antigravity
tags: [api, ai, azure, rag, cro]
url: https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-storage-blob-rust

Azure Blob Storage SDK for Rust

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

Installation

sh
cargo add azure_storage_blob azure_identity

Environment Variables

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

Authentication

rust
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

ClientPurpose
BlobServiceClientAccount-level operations, list containers
BlobContainerClientContainer operations, list blobs
BlobClientIndividual blob operations

Core Operations

Upload Blob

rust
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

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

Get Blob Properties

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

Delete Blob

rust
blob_client.delete(None).await?;

Container Operations

rust
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