.NET CoreでAzure Blobを試したサンプルコード
.NET Core 2.0のコンソールアプリでAzureのBlobを試しました。
- Azure クイックスタート - .NET を使用して Azure Blob Storage との間でオブジェクトを転送する | Microsoft Docs
- .NET を使用して Azure Blob Storage (オブジェクト ストレージ) を使用する | Microsoft Docs
- BLOB Storage と Visual Studio 接続済みサービスの概要 (ASP.NET Core) | Microsoft Docs
このあたりのドキュメントを参考にしながら書いてみたサンプルコードを残しておきます。
ミニマムかなと思う次のことを試しましたが、ほとんど躓かずにできたかなと思います。ドキュメントがわかりやすくてありがたいです。
- 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でないとまだ一覧取得できる
おわり。