Visual Studio Express 2013 for Desktopを使用して、C#コンソールアプリからAzure Blob Storageをアクセスしてみました。Azure Blob Storageは、テーブル、キュー、ファイル、BLOB、および Azure 仮想マシン ディスクを格納できます。今回は、BLOBに対して、コンテナの書き込み、ブロック BLOBのアップロードを行います。

ストレージ アカウントの作成

予め作成したおいたMicrosoftのアカウントを用いて、Azure 新ポータルにアクセスすると、Azureのダッシュボードが表示されます。ストレージ アカウントは、次に示すようにダッシュボードの左側のメニューで、「新規」→「データ+ストレージ」→「ストレージ アカウント」を選択して、表示した項目にグループリソース名などのデータを設定して作成ボタンを押す。

ストレージ アカウントの作成

ストレージ アカウントの作成が完了すると、ダッシュボードにビン留めされているストレージアカウントをクリックすると、次のような画面が表示される。Azure Blob Storageは、サービスのBlobをクリックすると、作成されたコンテナが表示される。

Azure Blob Storage

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”のインストールを次に示します。

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、[NuGet パッケージの管理] をクリックします。
  2. “WindowsAzure.Storage” をオンラインで検索し、[インストール] をクリックしてストレージ クライアント ライブラリとその依存関係をインストールします。
  3. “ConfigurationManager” をオンラインで検索し、[インストール] をクリックして Azure Configuration Manager をインストールします。

WindowsAzure.Storageのインストール"

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#アプリの実行はファイルへのアクセスを行うため、管理者権限で実行する必要があります。

C#アプリの実行結果

参照URL: