Visual Studio Express 2013 for Desktopを使用して、C#コンソールアプリからAzure Blob Storageをアクセスしてみました。Azure Blob Storageは、テーブル、キュー、ファイル、BLOB、および Azure 仮想マシン ディスクを格納できます。今回は、BLOBに対して、コンテナの書き込み、ブロック BLOBのアップロードを行います。
ストレージ アカウントの作成
予め作成したおいたMicrosoftのアカウントを用いて、Azure 新ポータルにアクセスすると、Azureのダッシュボードが表示されます。ストレージ アカウントは、次に示すようにダッシュボードの左側のメニューで、「新規」→「データ+ストレージ」→「ストレージ アカウント」を選択して、表示した項目にグループリソース名などのデータを設定して作成ボタンを押す。
ストレージ アカウントの作成が完了すると、ダッシュボードにビン留めされているストレージアカウントをクリックすると、次のような画面が表示される。Azure Blob Storageは、サービスのBlobをクリックすると、作成されたコンテナが表示される。
C#アプリの開発環境の構築
Azure Blob StorageへアクセスするC#アプリの開発は、Visual Studio Express 2013 for Desktopを使用します。C#アプリは、Windows コンソール アプリケーションで作成し、プロジェクトのプロパティで対象フレームワークを「.NET Framework 4.5.2」に設定します。
C#アプリに必要なパッケージのインストール
Azure Blob Storageへのアクセスに必要な「.NET 用 Microsoft Azure ストレージ クライアント ライブラリ」と「.NET 用 Microsoft Azure Configuration Manager ライブラリ」を、NuGet を使用して次の手順でインストールします。NuGetを使用した “WindowsAzure.Storage”のインストールを次に示します。
- ソリューション エクスプローラーでプロジェクトを右クリックし、[NuGet パッケージの管理] をクリックします。
- “WindowsAzure.Storage” をオンラインで検索し、[インストール] をクリックしてストレージ クライアント ライブラリとその依存関係をインストールします。
- “ConfigurationManager” をオンラインで検索し、[インストール] をクリックして Azure Configuration Manager をインストールします。
Azure Blob Storageへのストレージ接続文字列の設定
クラウド内の Azure ストレージ アカウントに対して、作成したC#アプリが実行できるように、Visual Studio から app.config ファイルを開き、次に示す account-key をストレージアカウントのアクセス キーに置き換えた
<configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <appSettings> <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key" /> </appSettings> </configuration>
名前空間宣言の追加
次の using ステートメントを program.cs ファイルの先頭に追加します。
using Microsoft.Azure; // Namespace for CloudConfigurationManager using Microsoft.WindowsAzure.Storage; // Namespace for CloudStorageAccount using Microsoft.WindowsAzure.Storage.Blob; // Namespace for Blob storage types
C#アプリ作成および実行
コンテナを作成し、作成したコンテナにブロック BLOBをアップロードし、実行した結果は、Azure Blob Storageのダッシュボードで確認します。
ファイルをブロック blob にアップロードするには、コンテナーの参照を取得し、それを使用してブロック blob の参照を取得します。BLOB の参照を取得し、UploadFromStream メソッドを呼び出すと、データの任意のストリームを BLOB にアップロードできます。
static void Main(string[] args) { // Retrieve storage account from connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create the blob client. CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container. CloudBlobContainer container = blobClient.GetContainerReference("tomosoftcontainer"); // Create the container if it doesn't already exist. container.CreateIfNotExists(); // Retrieve storage account from connection string. storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create the blob client. blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve reference to a previously created container. container = blobClient.GetContainerReference("tomosoftcontainer"); // Retrieve reference to a blob named "myblob". CloudBlockBlob blockBlob = container.GetBlockBlobReference("Avada00Dwn.JPG"); // Create or overwrite the "myblob" blob with contents from a local file. using (var fileStream = System.IO.File.OpenRead(@"f:\Avada00Dwn.JPG")) { blockBlob.UploadFromStream(fileStream); } }
作成したC#アプリを実行すると、Azure Blob Storageのダッシュボードは次のような表示に変わります。コンテナ名は「tomosoftcontainer」、ブロック BLOBhは「Avada00Dwn.JPG」で表示されます。
なお、C#アプリの実行はファイルへのアクセスを行うため、管理者権限で実行する必要があります。
参照URL: