mcpField
A
azure-storage-blob-rust

azure-storage-blob-rust

github.com/sickn33クラウド・DevOps48.7k56 回インストール今日更新
リポジトリ

azure-storage-blob-rust について

Azure Blob Storage を利用する Rust アプリケーション向けのスキルです。認証に加え、Blob やコンテナーのアップロード、ダウンロード、プロパティ取得、削除の例を示します。

主な機能

  1. 01Blob のアップロードとダウンロード
  2. 02Blob プロパティの取得
  3. 03Blob の削除
  4. 04コンテナー管理と Blob の一覧表示
  5. 05Entra ID 認証の例

活用シーン

  1. 01指定した Blob へのデータアップロード
  2. 02認可された Blob のダウンロード
  3. 03Blob プロパティの確認
  4. 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.
}

ベストプラクティス

  1. Entra ID 認証を使用する — 開発環境では DeveloperToolsCredential、本番環境では ManagedIdentityCredential を使用します
  2. 上書き時の動作を確認する — 確認済みのアップロード API はオプションを使用します。if_not_exists により、意図しない置き換えを防止できます
  3. RequestContent::from() を使用する — アップロードデータをラップします
  4. 非同期操作を処理する — tokio ランタイムを使用します
  5. 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.iohttps://crates.io/crates/azure_storage_blob

使用する場面

Rust アプリケーションで、指定した Azure Blob をアップロード/ダウンロードする場合、そのプロパティを読み取る場合、または許可されたコンテナーを管理する場合に使用します。

制限事項

  • 例は、互換性のあるバージョンに固定された Azure クレートと、必要な Tokio/Serde/Futures 依存関係を使う非同期アプリケーションコード内の断片です。使用前に、選択したバージョンの API を確認してください。公式のソース/リファレンスに照らしてレビューされていますが、ここではコンパイルもクラウドアカウントに対する実行も行っていません。
  • 最小権限の原則に従い、認可されたテナント、リソース、ID を使用してください。書き込み、上書き、削除、バックアップの取得、アカウントの変更には、対応するスコープが必要です。クリーンアップでは、明示的に特定された破棄可能なリソースのみを削除してください。リクエスト、再試行、ダウンロードするバイト数に上限を設け、ペイロード、認証情報、シークレット値をログに記録しないでください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、アクセス許可、安全上の境界、または成功条件が不足している場合は、作業を中止して確認を求めてください。

コメント