|
Add this skill
npx mdskills install sickn33/azure-storage-blob-rustWell-structured SDK reference with clear examples, but lacks agent-specific instructions
1---2name: azure-storage-blob-rust3description: |4 Azure Blob Storage SDK for Rust. Use for uploading, downloading, and managing blobs and containers.5 Triggers: "blob storage rust", "BlobClient rust", "upload blob rust", "download blob rust", "container rust".6package: azure_storage_blob7---89# Azure Blob Storage SDK for Rust1011Client library for Azure Blob Storage — Microsoft's object storage solution for the cloud.1213## Installation1415```sh16cargo add azure_storage_blob azure_identity17```1819## Environment Variables2021```bash22AZURE_STORAGE_ACCOUNT_NAME=<storage-account-name>23# Endpoint: https://<account>.blob.core.windows.net/24```2526## Authentication2728```rust29use azure_identity::DeveloperToolsCredential;30use azure_storage_blob::{BlobClient, BlobClientOptions};3132let credential = DeveloperToolsCredential::new(None)?;33let blob_client = BlobClient::new(34 "https://<account>.blob.core.windows.net/",35 "container-name",36 "blob-name",37 Some(credential),38 Some(BlobClientOptions::default()),39)?;40```4142## Client Types4344| Client | Purpose |45|--------|---------|46| `BlobServiceClient` | Account-level operations, list containers |47| `BlobContainerClient` | Container operations, list blobs |48| `BlobClient` | Individual blob operations |4950## Core Operations5152### Upload Blob5354```rust55use azure_core::http::RequestContent;5657let data = b"hello world";58blob_client59 .upload(60 RequestContent::from(data.to_vec()),61 false, // overwrite62 u64::try_from(data.len())?,63 None,64 )65 .await?;66```6768### Download Blob6970```rust71let response = blob_client.download(None).await?;72let content = response.into_body().collect_bytes().await?;73println!("Content: {:?}", content);74```7576### Get Blob Properties7778```rust79let properties = blob_client.get_properties(None).await?;80println!("Content-Length: {:?}", properties.content_length);81```8283### Delete Blob8485```rust86blob_client.delete(None).await?;87```8889## Container Operations9091```rust92use azure_storage_blob::BlobContainerClient;9394let container_client = BlobContainerClient::new(95 "https://<account>.blob.core.windows.net/",96 "container-name",97 Some(credential),98 None,99)?;100101// Create container102container_client.create(None).await?;103104// List blobs105let mut pager = container_client.list_blobs(None)?;106while let Some(blob) = pager.try_next().await? {107 println!("Blob: {}", blob.name);108}109```110111## Best Practices1121131. **Use Entra ID auth** — `DeveloperToolsCredential` for dev, `ManagedIdentityCredential` for production1142. **Specify content length** — required for uploads1153. **Use `RequestContent::from()`** — to wrap upload data1164. **Handle async operations** — use `tokio` runtime1175. **Check RBAC permissions** — ensure "Storage Blob Data Contributor" role118119## RBAC Permissions120121For Entra ID auth, assign one of these roles:122- `Storage Blob Data Reader` — read-only123- `Storage Blob Data Contributor` — read/write124- `Storage Blob Data Owner` — full access including RBAC125126## Reference Links127128| Resource | Link |129|----------|------|130| API Reference | https://docs.rs/azure_storage_blob |131| Source Code | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/storage/azure_storage_blob |132| crates.io | https://crates.io/crates/azure_storage_blob |133
Full transparency — inspect the skill content before installing.