Azure Storage シリーズ(3)Blobパラメータ設定の説明

  1. はじめに

前回、Azure Blobストレージを操作する.NET Core Webプロジェクトでコードを使用した。続いて、この記事ではAzure.Storageのクラスとメソッドについて詳しく見ていきます。


Azure Blob Storageストレージシリーズ:

1,Azure Storage シリーズ(1)導入紹介

2,Azure Storage シリーズ(2).NET Core WebプロジェクトでBlobストレージを操作する

3,Azure Storage シリーズ(3)Blobパラメータ設定の説明

4,Azure Storage シリーズ(4).NetでTable Storageを使用する

5,Azure Storage シリーズ(5)Azure.Cosmos.TableライブラリでTable Storageを使用する

6,Azure Storage シリーズ(6)Azure Queue Storageを使用する

  1. 本論

1. Blob接続文字列の構成

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "AzureBlobStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=cnbateblogaccount;AccountKey=FU01h022mn1JjONp+ta0DAXOO7ThK3diY891n9nycsTLGZF83nJpGVCVFhGOfV0wndOOQ==;EndpointSuffix=core.windows.net"
}

「AzureBlobStorageConnectionString」は、アプリケーションがAzureストレージアカウントに対して要求を行う際に、アクセスキーによって認証されます。アクセスキーは安全な方法(例えばAzure Key Vaultを使用)で保存し、共有してはなりません。定期的にアクセスキーを再生成することを推奨します。

Azureは2つのアクセスキーを提供しており、一方を再生成してももう一方で接続を維持できます。

2. BlobServiceClientとBlobServiceの登録

BlobServiceClient

 services.AddSingleton(x => new BlobServiceClient(Configuration.GetValue<string>("AzureBlobStorageConnectionString")));

ブロブサービスを作成し、appsettingsのキー「AzureBlobStorageConnection」の値をコンストラクタに渡します。

BlobService

services.AddSingleton<IBlobSergvice, BlobService>();

3. BlobServiceのメソッド

3.1 ブロブ情報を取得する

#region 01, ブロブを取得する、名前で+async Task<BlobInfo> GetBlobAsync(string name)
/// <summary>
/// 名前でブロブを取得する
/// </summary>
/// <param name="name">ブロブの名前</param>
/// <returns></returns>
public async Task<Azure.Storage.Models.BlobInfo> GetBlobAsync(string name)
{
   var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");

   var blobClient = containerClient.GetBlobClient(name);
   var blobDownLoadInfo = await blobClient.DownloadAsync();
   return new Azure.Storage.Models.BlobInfo(blobDownLoadInfo.Value.Content, blobDownLoadInfo.Value.ContentType);
 }
 #endregion

ブロブストレージ情報の具体的な実装方法です。

  1. 「picturecontainer」という名前でContainerClientを取得し、必要なブロブ名でBlobClientを取得します。
  2. 非同期メソッド「DownloadAsync」を使用してブロブオブジェクトをダウンロードし、その中のメタデータや属性などの情報を取得します。
  3. 最後に、BlobInfoオブジェクトを返却し、コンストラクタにContentとContentTypeを渡します。

3.2 ブロブ情報を取得する

#region 02, すべてのブロブ名を取得する+async Task<IEnumerable<string>> ListBlobsNameAsync()
/// <summary>
/// すべてのブロブ名を取得する
/// </summary>
/// <returns></returns>
public async Task<IEnumerable<string>> ListBlobsNameAsync()
{
    var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
    var items = new List<string>();

    await foreach (var blobItem in containerClient.GetBlobsAsync())
    {
        items.Add(blobItem.Name);
    }
    return items;
}
#endregion

ブロブストレージ情報の具体的な実装方法です。

  1. 「picturecontainer」という名前でContainerClientを取得し、必要なブロブ名でBlobClientを取得します。
  2. 非同期foreachでContainerClientのGetBlobsAsyncメソッドを呼び出します。このメソッドには複数のデフォルトパラメータがあります。
  • BlobTraits(ブロブ特性):すべての特性を持つブロブを取得する
  • BlobStates(ブロブ状態):すべての状態を持つブロブを含むフラグ
  • prefix(接頭辞):結果をフィルターし、指定された接頭辞で始まるブロブのみを返す文字列
  • cancellationToken:操作をキャンセルする通知を伝播する
  1. 各ブロブの名前をリストに追加します。

3.3 ファイルパスとファイル名に基づいてファイルをアップロードする

#region 03, ファイルをアップロードする、ファイルパスとファイル名に基づく+async Task UploadFileBlobAsync(string filePath, string filename)
/// <summary>
/// ファイルをアップロードする、ファイルパスとファイル名に基づく
/// </summary>
/// <param name="filePath">ファイルパス</param>
/// <param name="filename">ファイル名</param>
/// <returns></returns>
public async Task UploadFileBlobAsync(string filePath, string filename)
{
    var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
    var blobClient = containerClient.GetBlobClient(filename);
    await blobClient.UploadAsync(filePath, new BlobHttpHeaders { ContentType = filePath.GetContentType() });
 }
 #endregion

ブロブデータの具体的な実装方法です。

  1. 「picturecontainer」という名前でContainerClientを取得し、必要なブロブ名でBlobClientを取得します。
  2. 非同期でファイルをアップロードし、ファイルパスを指定し、BlobHttpHeadersでコンテンツタイプを指定します。

3.4 ファイルのストリームをアップロードする

#region 04, ファイルのストリームをアップロードする、ファイル内容とファイル名に基づく+async Task UploadContentBlobAsync(string content, string filename)
/// <summary>
/// ファイルのストリームをアップロードする、ファイル内容とファイル名に基づく
/// </summary>
/// <param name="content">ファイル内容</param>
/// <param name="filename">ファイル名</param>
/// <returns></returns>
public async Task UploadContentBlobAsync(string content, string filename)
{
   var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
   var blobClient = containerClient.GetBlobClient(filename);
   var bytes = Encoding.UTF8.GetBytes(content);
   await using var memoryStream = new MemoryStream(bytes);
   await blobClient.UploadAsync(memoryStream, new BlobHttpHeaders() { ContentType = filename.GetContentType() });
 }
 #endregion

ブロブデータの具体的な実装方法です。

  1. 「picturecontainer」という名前でContainerClientを取得し、必要なブロブ名でBlobClientを取得します。
  2. アップロードする文字列をバイトストリームに変換します。
  3. 非同期でバイトストリームをアップロードし、BlobHttpHeadersでコンテンツタイプを指定します。

3.5 ブロブデータを削除する

 #region 05, ブロブを削除する+async Task DeleteBlobAsync(string blobName)
 /// <summary>
 /// ブロブを削除する
 /// </summary>
 /// <param name="blobName">ブロブ名</param>
 /// <returns></returns>
 public async Task DeleteBlobAsync(string blobName)
 {
     var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
     var blobClient = containerClient.GetBlobClient(blobName);
     await blobClient.DeleteIfExistsAsync();
 } 
 #endregion

ブロブ削除の具体的な実装方法です。

  1. 「picturecontainer」という名前でContainerClientを取得し、必要なブロブ名でBlobClientを取得します。
  2. 非同期メソッド「DeleteIfExistsAsync」を呼び出してブロブを削除します。

以上で、ブロブの作成、削除、検索に関する方法は終了しました。

  1. 結論

今日は内容が少なく、前回のブロブ操作に関するメソッドを示しただけです。ブロブ操作について説明しました。皆さんはマイクロソフトの公式ドキュメント:Azure Storage Blobsを参照してください。次回からは、ストレージの新しい内容であるAzure Table Storageについて紹介します。

github:https://github.com/yunqian44/Azure.Storage.git

著者:Allen

著作権:本文の明確な場所に著者と出典を記載してください。誤りを見つけた場合は、ご指摘をお願いします。

タグ: Azure.Storage BlobStorage BlobServiceClient BlobHttpHeaders Azure.KeyVault

10月10日 08:01 投稿