.NET CoreでAzure Blobを試したサンプルコード

.NET Core 2.0のコンソールアプリでAzureのBlobを試しました。

このあたりのドキュメントを参考にしながら書いてみたサンプルコードを残しておきます。

ミニマムかなと思う次のことを試しましたが、ほとんど躓かずにできたかなと思います。ドキュメントがわかりやすくてありがたいです。

  • Blobコンテナの作成と削除
  • Blobの追加、更新、削除
  • Blobの取得
  • Blob一覧の取得

準備

コンソール アプリ (.NET Core)プロジェクトを作成して、NuGetでWindowsAzure.Storageをインストールします。

Install-Package WindowsAzure.Storage

NuGet Gallery | WindowsAzure.Storage 9.1.0

Blobサンプルを実行するエントリ(Program.cs)

接続文字列からストレージアカウントを作成してBlobサンプルを実行しています。

Blobを試す(BlobSample.cs)

実際のBlobサンプル部分です。

流れとしてはまずストレージアカウントからBlobクライアントを作成して、次にBlobクライアントからBlobコンテナを取得(作成)します。そして、Blobコンテナが持っているBlobを操作するメソッドを使ってごにょごにょする感じです。

Blobの追加もBlobの更新も要するにアップロードなので、どちらの場合もCloudBlockBlob.UploadTextAsyncメソッドやCloudBlockBlob.UploadFromStreamAsyncメソッドなどを使うみたいです。

// 追加も更新も同じ
var blob = container.GetBlockBlobReference("Blobの名前");
await blob.UploadTextAsync("Blobの中身");

Blobの一覧を取得するにはCloudBlobContainer.ListBlobsSegmentedAsyncメソッドを使いますが、デフォルトの動きでは1回に取得できるのは5,000個までとのことです。それ以上の場合は、BlobContinuationTokenを使って取得を繰り返すようにするみたいです。

この部分。

var token = default(BlobContinuationToken);
do {
    // Blobの一覧を取得
    var segment = await container.ListBlobsSegmentedAsync(token);

    token = segment.ContinuationToken;

    foreach (var blob in segment.Results.OfType<CloudBlockBlob>()) {
        // blobを使って何かする
    }
} while (token != null); // トークンがnullでないとまだ一覧取得できる

おわり。