Skills Development Azure Blob Storage SDK in Rust

Azure Blob Storage SDK in Rust

v20260423
azure-storage-blob-rust
This is a comprehensive client library for interacting with Azure Blob Storage, Microsoft's scalable object storage solution for the cloud. It allows developers to perform core operations in Rust, such as uploading, downloading, listing, creating, and managing blobs and containers. Ideal for building cloud-native applications that require persistent, scalable data storage.
Get Skill
167 downloads
Overview

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.
Info
Category Development
Name azure-storage-blob-rust
Version v20260423
Size 3.51KB
Updated At 2026-04-24
Language