azure-storage-blob-rust について
Azure Blob Storage を利用する Rust アプリケーション向けのスキルです。認証に加え、Blob やコンテナーのアップロード、ダウンロード、プロパティ取得、削除の例を示します。
主な機能
- 01Blob のアップロードとダウンロード
- 02Blob プロパティの取得
- 03Blob の削除
- 04コンテナー管理と Blob の一覧表示
- 05Entra ID 認証の例
活用シーン
- 01指定した Blob へのデータアップロード
- 02認可された Blob のダウンロード
- 03Blob プロパティの確認
- 04コンテナー内容の一覧表示や管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill azure-storage-blob-rustインストール後、Claude Code で/azure-storage-blob-rustを入力して読み込まれたか確認します。
詳細
Rust 向け Azure Blob Storage SDK
Azure Blob Storage 用クライアントライブラリです。Azure Blob Storage は、Microsoft のクラウド向けオブジェクトストレージソリューションです。
以下の例を使用するには、互換性を確認したクレートセットを使用し、すべてのリソースプレースホルダーを置き換える必要があります。デモ用の書き込みに本番データを使用しないでください。
インストール
cargo add azure_storage_blob@=1.1.0 azure_identity@=1.0.0 azure_core@=1.1.0
環境変数
export AZURE_STORAGE_ACCOUNT_NAME="<storage-account-name>"
# Endpoint: https://<account>.blob.core.windows.net/
認証
use azure_identity::DeveloperToolsCredential;
use azure_core::http::Url;
use azure_storage_blob::clients::{BlobClient, BlobClientOptions};
let credential = DeveloperToolsCredential::new(None)?;
let blob_client = BlobClient::new(
Url::parse("https://<account>.blob.core.windows.net/container-name/blob-name")?,
Some(credential.clone()),
Some(BlobClientOptions::default()),
)?;
クライアントの種類
| クライアント | 用途 |
|---|---|
BlobServiceClient | アカウントレベルの操作、コンテナーの一覧表示 |
BlobContainerClient | コンテナーの操作、Blob の一覧表示 |
BlobClient | 個々の Blob の操作 |
主な操作
Blob のアップロード
use azure_core::http::RequestContent;
use azure_storage_blob::models::BlobClientUploadOptions;
let data = b"hello world";
blob_client
.upload(
RequestContent::from(data.to_vec()),
Some(BlobClientUploadOptions::if_not_exists()), // fail rather than overwrite an existing blob
)
.await?;
Blob のダウンロード
let response = blob_client.download(None).await?;
// Check the approved size before fetching; use download_into with a bounded buffer for large data.
let content = response.body.collect().await?;
// Process authorized bytes; do not log the payload.
Blob のプロパティの取得
let properties = blob_client.get_properties(None).await?;
// Read the version-specific response header trait; properties is a response, not a content_length field.
// Do not infer a body/size limit from successful metadata access alone.
Blob の削除
blob_client.delete(None).await?;
コンテナーの操作
use azure_storage_blob::clients::BlobContainerClient;
use futures::TryStreamExt;
let container_client = BlobContainerClient::new(
Url::parse("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(page) = pager.try_next().await? {
let listing = page.into_model()?;
// Process this listing page; apply an explicit maximum-page budget.
}
ベストプラクティス
- Entra ID 認証を使用する — 開発環境では
DeveloperToolsCredential、本番環境ではManagedIdentityCredentialを使用します - 上書き時の動作を確認する — 確認済みのアップロード API はオプションを使用します。
if_not_existsにより、意図しない置き換えを防止できます RequestContent::from()を使用する — アップロードデータをラップします- 非同期操作を処理する —
tokioランタイムを使用します - RBAC のアクセス許可を確認する — 「Storage Blob Data Contributor」ロールが付与されていることを確認します
RBAC のアクセス許可
Entra ID 認証では、次のいずれかのロールを割り当てます。
Storage Blob Data Reader— 読み取り専用Storage Blob Data Contributor— 読み取り/書き込みStorage Blob Data Owner— Blob データへのアクセス、およびサポートされている所有権/ACL 管理。このロールでは、一般的な Azure RBAC ロール割り当て権限は付与されません
この例の API は BlobClient 1.1.0 に準拠しています。それ以前のリリースでは、コンストラクターやアップロードのシグネチャが異なります。互換性のある Azure クレートのバージョンを使用し、混在させないでください。
確認済みのサンプルセットでは、azure_storage_blob 1.1.0 と互換性のある Azure core/credential クレートを使用しています。Cargo.lock を記録してコミットしてください。ソース/API のレビューは、コンパイルや実サービスを使ったテストではありません。
参考リンク
| リソース | リンク |
|---|---|
| API リファレンス | https://docs.rs/azure_storage_blob |
| ソースコード | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/storage/azure_storage_blob |
| crates.io | https://crates.io/crates/azure_storage_blob |
使用する場面
Rust アプリケーションで、指定した Azure Blob をアップロード/ダウンロードする場合、そのプロパティを読み取る場合、または許可されたコンテナーを管理する場合に使用します。
制限事項
- 例は、互換性のあるバージョンに固定された Azure クレートと、必要な Tokio/Serde/Futures 依存関係を使う非同期アプリケーションコード内の断片です。使用前に、選択したバージョンの API を確認してください。公式のソース/リファレンスに照らしてレビューされていますが、ここではコンパイルもクラウドアカウントに対する実行も行っていません。
- 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、対応するスコープが必要です。クリーンアップでは、明示的に特定された破棄可能なリソースのみを削除してください。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレット値をログに記録しないでください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、アクセス許可、安全上の境界、または成功条件が不足している場合は、作業を中止して確認を求めてください。