Microsoft Azure Storage BLOBを使ってみる

Azureのストレージ

BLOB、テーブル、キュー、ファイルと4種類あり、用途に合わせて使えるようになっています。今回はBLOBを使ってみます。BLOBはどんなデータも入れることができ、画像などの配信にも利用することができます。

準備

コンテナの作成

BLOBはコンテナというグループの中にいれます。
Azureのポータルからストレージとコンテナーを作成しておきます。

コンテナーはストレージのコンテナーのタブより追加ボタンを押すと作成できます。

createcontainer.png

testcontaierというプライベートなコンテナーを作成。

testcontaier.png

nuget からライブラリをインストール

Microsoft Azure Storage クライアント ライブラリがあり、非常に簡単に使えるようになっています。

1
Install-Package WindowsAzure.Storage -Version 4.3.0

確認用に

VisualStudio上からも確認できますが、ストレージの操作はAzure Storage Explorer を入れておくと便利です。手動でファイルをアップロードしたい場合はこれを使うのがよさそうです。

さっそく使ってみる

using

1
2
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;

BLOBに接続してコンテナーの参照取得

1
2
3
4
5
6
//アカウントキーはアクセスキーの管理より確認
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=ストレージアカウント名;AccountKey=アカウントキー");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("testcontainer");

アップロードとダウンロード

あとはGetBlockBlobReferenceでパスの参照を取得してアップロードしたりダウンロードしたりします。

1
2
3
4
5
6
7
8
9
10
CloudBlockBlob blockBlob = container.GetBlockBlobReference("test.jpg");
//アップロード
using (var fileStream = System.IO.File.OpenRead("アップロード元のパス"))
{
blockBlob.UploadFromStream(fileStream);
}
//ダウンロード
blockBlob.DownloadToFile("ダウンロード先のパス", System.IO.FileMode.CreateNew);

メソッドはもちろん非同期対応もしています。

Azure Storage Explorerから確認するとこのようになっています。
storageexplorer.jpg

フォルダについて

パスを/で区切るとフォルダになるようでした。
フォルダの参照はGetDirectoryReferenceで取得できます。
参照を取得したあと中身の一覧はListBlobs()で取得できます。

感想

Windowsのファイルシステムに近い感覚で使用でき、思ったより使い勝手がよさそうです。
他にもいろいろできるようなのでぜひ使ってみてください。
https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-how-to-use-blobs/