Visual Studio で Azure クラウド サービスのロールを構成する

Note

この記事は Azure Cloud Services (クラシック) に適用されます。これは新規のお客様向けには非推奨となっており、2024 年 8 月 31 日に廃止されます。 このテクノロジを使用して構築された既存のサービスは、引き続き Azure Cloud Services (延長サポート) を通じてサポートされます。 新しい開発では、Azure App ServiceAzure FunctionsAzure Container Apps など、特定の目的に合わせて設計された新しいサービスの種類を使用することをお勧めします。 利用可能なサービスの最新の一覧については、「Azure 製品のディレクトリ」を参照してください。

Azure クラウド サービスには、worker ロールまたは Web ロールを割り当てることができます。 それぞれのロールについて、そのセットアップ方法を定義すると共に、実行方法を構成する必要があります。

クラウド サービスに関する情報は、次のファイルに格納されます。

  • ServiceDefinition.csdef: サービス定義ファイルは、必要なロール、エンドポイント、仮想マシンのサイズを含む、クラウド サービスのランタイム設定を定義するものです。 ServiceDefinition.csdef に格納されたデータはいずれも、ロールの実行中には変更できません。
  • ServiceConfiguration.cscfg: サービス構成ファイルでは、実行されるロールのインスタンス数とロールに対して定義される設定の値を構成します。 ServiceConfiguration.cscfg に格納されたデータは、ロールの実行中に変更できます。

ロールの実行方法を制御する設定にさまざまな値を指定して使い分けられるように、サービス構成は複数定義することができます。 デプロイメント環境ごとに異なるサービス構成を使用できます。 たとえば、ローカル サービス構成でローカルの Azure Storage エミュレーターを使用するためにストレージ アカウントの接続文字列を設定し、クラウドで Azure Storage を使用するためにサービス構成を別途作成できます。

Visual Studio で Azure クラウド サービスを作成すると、2 つのサービス構成が自動的に作成されて Azure プロジェクトに追加されます。

  • ServiceConfiguration.Cloud.cscfg
  • ServiceConfiguration.Local.cscfg

前提条件

Azure クラウド サービスを構成する

次の手順に示すように、Azure クラウド サービスの構成は、Visual Studio のソリューション エクスプローラーから行うことができます。

  1. Visual Studio で Azure クラウド サービス プロジェクトを開くか新たに作成します。

  2. ソリューション エクスプローラーでそのプロジェクトを右クリックし、コンテキスト メニューから [プロパティ] を選択します。

    Solution Explorer project context menu

  3. プロジェクトのプロパティ ページで [開発] タブを選択します。

    Project properties page - development tab

  4. [サービスの構成] ボックスの一覧で、編集するサービス構成の名前を選択します (このロールのすべてのサービス構成を変更する場合は、[すべての構成] を選択してください)。

    重要

    設定の対象が "すべての構成" に限定されるプロパティが一部存在します。特定のサービス構成を選択した場合、それらのプロパティは無効になります。 これらのプロパティを編集するには、[すべての構成] を選択する必要があります。

    Service Configuration list for an Azure cloud service

ロール インスタンス数の変更

クラウド サービスのパフォーマンスを高めるには、実行するロールのインスタンスの数を、ユーザー数や特定のロールに必要な負荷に応じて変更します。 Azure でクラウド サービスを実行すると、ロールのインスタンスごとに仮想マシンが作成されます。 このことが、そのクラウド サービスのデプロイの料金に影響します。 課金の詳細については、「Microsoft Azure の課金内容の確認」を参照してください。

  1. Visual Studio で Azure クラウド サービス プロジェクトを開くか新たに作成します。

  2. ソリューション エクスプローラーでプロジェクト ノードを展開します。 更新するロールを [ロール] ノードで右クリックし、コンテキスト メニューから [プロパティ] を選択します。

    Solution Explorer Azure role context menu

  3. [構成] タブを選択します。

    Configuration tab

  4. [サービスの構成] の一覧で、更新するサービス構成を選択します。

    Service Configuration list 1

  5. [インスタンス数] テキスト ボックスに、このロールで開始するインスタンスの数を入力します。 Azure にクラウド サービスを発行すると、それぞれのインスタンスが個別の仮想マシンで実行されます。

    Updating the Instance Count

  6. Visual Studio のツール バーの [保存] を選択します。

ストレージ アカウント用の接続文字列の管理

接続文字列は、サービス構成で追加、削除、変更することができます。 たとえば、 UseDevelopmentStorage=trueという値を持つローカル サービス構成には、ローカル接続文字列を使用します。 それに加えて、Azure のストレージ アカウントを使用するクラウド サービス構成も必要になることが考えられます。

警告

ストレージ アカウント接続文字列の Azure Storage アカウント キー情報を入力する場合、その情報はローカルのサービス構成ファイルに格納されます。 ただしこの情報は現在、暗号化されたテキストとして保存されません。

サービス構成ごとに値を使い分ければ、クラウド サービスを Azure に発行する段階でコードに変更を加えたり、複数の異なる接続文字列をクラウド サービスで使用したりせずに済みます。 コード内の接続文字列には同じ名前を使用できます。クラウド サービスをビルドまたは発行するときに選択したサービス構成によって異なる値が適用されます。

  1. Visual Studio で Azure クラウド サービス プロジェクトを開くか新たに作成します。

  2. ソリューション エクスプローラーでプロジェクト ノードを展開します。 更新するロールを [ロール] ノードで右クリックし、コンテキスト メニューから [プロパティ] を選択します。

    Solution Explorer Azure role context menu

  3. [Settings](設定) タブを選択します。

    Settings tab

  4. [サービスの構成] の一覧で、更新するサービス構成を選択します。

    Service Configuration

  5. 接続文字列を追加するには、[設定の追加] を選択します。

    Add connection string

  6. 新しい設定が一覧に追加されたら、必要な情報でその行を更新します。

    New connection string

    • [名前]: 接続文字列に使用する名前を入力します。
    • 種類: ドロップダウン リストから [接続文字列] を選択します。
    • [値]: 接続文字列は [値] セルに直接入力するか、省略記号 (...) を選択して [ストレージ接続文字列の作成] ダイアログで作成することができます。
  7. [ストレージ接続文字列の作成] ダイアログで [接続方法] のオプションを選択します。 選択したオプションに応じて次の手順に従います。

    • [Microsoft Azure ストレージ エミュレーター]: このオプションを選択した場合、ダイアログ上の他の設定は Azure にのみ該当するため無効になります。 [OK] を選択します。
    • サブスクリプション: このオプションを選択する場合、ドロップダウン リストから Microsoft アカウントを選択してサインインするか、または Microsoft アカウントを追加します。 Azure サブスクリプションとストレージ アカウントを選択します。 [OK] を選択します。
    • [手動で入力された資格情報]: ストレージ アカウント名を入力し、プライマリ キーまたはセカンダリ キーを入力します。 [接続] のオプションを選択します (通常は HTTPS を推奨)。[OK] を選択します。
  8. 接続文字列を削除するには、接続文字列を選択し、[設定の削除] を選択します。

  9. Visual Studio のツール バーの [保存] を選択します。

接続文字列にプログラムからアクセスする

次の手順では、C# を使って接続文字列にプログラムからアクセスする方法について説明します。

  1. 設定を使う予定のある C# ファイルに次の using ディレクティブを追加します。

    using Microsoft.WindowsAzure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.ServiceRuntime;
    
  2. 次のコードは、接続文字列にアクセスする方法の例を示しています。 <ConnectionStringName> プレースホルダーは、適切な値に置き換えてください。

    // Setup the connection to Azure Storage
    var storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("<ConnectionStringName>"));
    

Azure クラウド サービスで使用するカスタム設定を追加する

特定のサービス構成に使用する文字列の名前と値は、サービス構成ファイルのカスタム設定で追加できます。 コードの中でカスタム設定の値を読み取ってその値を基にロジックを制御することで、クラウド サービスの機能を構成することができます。 これらのサービス構成の値を変更するために、サービス パッケージをリビルドする必要はありません。クラウド サービスの実行中に値を変更することもできます。 設定が変更されたことは、その通知をコードで受け取ることによって確認できます。 詳細については、RoleEnvironment.Changing イベントを参照してください。

カスタム設定は、目的のサービス構成を対象に追加、削除、変更することができます。 文字列の値はサービス構成ごとに使い分けることができます。

サービス構成ごとに値を使い分ければ、クラウド サービスを Azure に発行する段階でコードに変更を加えたり、複数の異なる文字列をクラウド サービスで使用したりせずに済みます。 コード内の文字列には同じ名前を使用できます。クラウド サービスをビルドまたは発行するときに選択したサービス構成によって異なる値が適用されます。

  1. Visual Studio で Azure クラウド サービス プロジェクトを開くか新たに作成します。

  2. ソリューション エクスプローラーでプロジェクト ノードを展開します。 更新するロールを [ロール] ノードで右クリックし、コンテキスト メニューから [プロパティ] を選択します。

    Solution Explorer Azure role context menu

  3. [Settings](設定) タブを選択します。

    Settings tab

  4. [サービスの構成] の一覧で、更新するサービス構成を選択します。

    Service Configuration list 2

  5. カスタム設定を追加するには、[設定の追加] を選択します。

    Add custom setting

  6. 新しい設定が一覧に追加されたら、必要な情報でその行を更新します。

    New custom setting

    • [名前]: 設定の名前を入力します。
    • 種類: ドロップダウン リストから [文字列] を選択します。
    • [値]: 文字列の値を入力します。 この値は [値] セルに直接入力するか、省略記号 (...) を選択して [文字列の編集] ダイアログで入力することができます。
  7. カスタム設定を削除するには、設定を選択し、[設定の削除] を選択します。

  8. Visual Studio のツール バーの [保存] を選択します。

カスタム設定の値にプログラムからアクセスする

次の手順では、C# を使ってカスタム設定にプログラムからアクセスする方法について説明します。

  1. 設定を使う予定のある C# ファイルに次の using ディレクティブを追加します。

    using Microsoft.WindowsAzure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.ServiceRuntime;
    
  2. 次のコードは、カスタム設定にアクセスする方法の例を示しています。 <SettingName> プレースホルダーは、適切な値に置き換えてください。

    var settingValue = RoleEnvironment.GetConfigurationSettingValue("<SettingName>");
    

各ロール インスタンスのローカル ストレージの管理

ローカル ファイル システム ストレージは、ロールのインスタンスごとに追加できます。 このストレージに保存されるデータには、それを保存するロールのインスタンス以外からアクセスしたり、他のロールからアクセスしたりすることはできません。

  1. Visual Studio で Azure クラウド サービス プロジェクトを開くか新たに作成します。

  2. ソリューション エクスプローラーでプロジェクト ノードを展開します。 更新するロールを [ロール] ノードで右クリックし、コンテキスト メニューから [プロパティ] を選択します。

    Solution Explorer Azure role context menu

  3. [ローカル ストレージ] タブを選択します。

    Local storage tab

  4. このローカル ストレージの設定はすべてのサービス構成が対象となります。[サービス構成] リストでは必ず [すべての構成] を選択してください。 それ以外の値を選択すると、このページのすべての入力フィールドが無効になります。

    Service Configuration list 3

  5. ローカル ストレージのエントリを追加するには、[ローカル ストレージの追加] を選択します。

    Add local storage

  6. 新しいローカル ストレージのエントリが一覧に追加されたら、必要な情報でその行を更新します。

    New local storage entry

    • [名前]: 新しいローカル ストレージに使用する名前を入力します。
    • [サイズ (MB)]: 新しいローカル ストレージに必要なサイズを MB 単位で入力します。
    • [ロールのリサイクル時に消去]: このロール用の仮想マシンがリサイクルされたときに、新しいローカル ストレージのデータを削除するには、このオプションを選択します。
  7. ローカル ストレージのエントリを削除するには、そのエントリを選択し、[ローカル ストレージの削除] を選択します。

  8. Visual Studio のツール バーの [保存] を選択します。

ローカル ストレージにプログラムからアクセスする

このセクションでは、C# を使ったテスト用テキスト ファイル (MyLocalStorageTest.txt) の書き込みを通じて、ローカル ストレージにプログラムからアクセスする方法について説明します。

ローカル ストレージにテキスト ファイルを書き込む

以下のコード例は、ローカル ストレージにテキスト ファイルを書き込む方法を示しています。 <LocalStorageName> プレースホルダーは、適切な値に置き換えてください。

// Retrieve an object that points to the local storage resource
LocalResource localResource = RoleEnvironment.GetLocalResource("<LocalStorageName>");

//Define the file name and path
string[] paths = { localResource.RootPath, "MyLocalStorageTest.txt" };
String filePath = Path.Combine(paths);

using (FileStream writeStream = File.Create(filePath))
{
    Byte[] textToWrite = new UTF8Encoding(true).GetBytes("Testing Web role storage");
    writeStream.Write(textToWrite, 0, textToWrite.Length);
}

ローカル ストレージに書き込まれたファイルを探す

前のセクションのコードによって作成されたファイルを確認するには、次の手順を実行します。

  1. Windows 通知領域で Azure アイコンを右クリックし、コンテキスト メニューから [Show Compute Emulator UI (コンピューティング エミュレーター UI の表示)] を選択します。

    Show Azure compute emulator

  2. Web ロールを選択します。

    Azure compute emulator

  3. [Microsoft Azure コンピューティング エミュレーター] メニューの [ツール]>[Open local store (ローカル ストアを開く)] を選択します。

    Open local store menu item

  4. Windows エクスプローラー ウィンドウが表示されたら、[検索] ボックスに「`MyLocalStorageTest.txt``」と入力し、Enter キーを押して検索を開始します。

Visual Studio における Azure プロジェクトの詳細については、「 Azure プロジェクトの構成」を参照してください。 クラウド サービスのスキーマの詳細については、「 スキーマ リファレンス」を参照してください。