ラベルを使用して環境ごとの構成値を提供します。

多くのアプリケーションでは、異なる環境に対して異なる構成を使用する必要があります。 アプリケーションに、バックエンド データベースに使用する接続文字列を定義する構成値があるとします。 アプリケーション開発者は、運用環境で使用されているものとは異なるデータベースを使用します。 アプリケーションを開発環境から運用環境に移行するときに、アプリケーションで使用されているデータベース接続文字列を変更する必要があります。

Azure App Configuration では、"ラベル" を使用することで、同じキーに対して異なる値を定義できます。 たとえば、開発環境用と運用環境用で異なる値を持つ 1 つのキーを定義できます。 App Configuration に接続するときに読み込むラベルを指定できます。

この機能を示すために、「クイックスタート: Azure App Configuration を使用して ASP.NET Core アプリを作成する」で作成した Web アプリを、開発と運用で異なる構成設定を使用するように変更します。 先に進む前にクイックスタートを完了してください。

構成値を追加するときにラベルを指定する

Azure portal で [構成エクスプローラー] に移動し、クイックスタートで作成した TestApp:Settings:FontColor キーを見つけます。 そのコンテキスト メニューを選択して、 [値の追加] を選択します。

Add Value menu item

[値の追加] 画面で、 [値] に「red」と入力し、 [ラベル] に「Development」と入力します。 [コンテンツの種類] は空のままにします。 [適用] を選択します。

指定したラベルの構成値を読み込む

既定の場合、Azure App Configuration ではラベルのない構成値のみが読み込まれます。 構成値に対してラベルを定義した場合、App Configuration に接続するときに使用するラベルを指定できます。

前のセクションで、開発環境用に別の構成値を作成しました。 アプリが現在実行されている環境を動的に判断するには、HostingEnvironment.EnvironmentName 変数を使用します。 詳しくは、「ASP.NET Core で複数の環境を使用する」をご覧ください。

KeyFilter および LabelFilter クラスにアクセスするための Microsoft.Extensions.Configuration.AzureAppConfiguration 名前空間への参照を追加します。

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

環境名を Select メソッドに渡すことにより、現在の環境に対応するラベルを使用して構成値を読み込みます。

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddAzureAppConfiguration(options =>
    {
            options.Connect(builder.Configuration.GetConnectionString("AppConfig"))
                // Load configuration values with no label
                .Select(KeyFilter.Any, LabelFilter.Null)
                // Override with any configuration values specific to current hosting env
                .Select(KeyFilter.Any, builder.Environment.EnvironmentName);
    });

重要

前のコード スニペットでは、シークレット マネージャー ツールを使用して、App Configuration の接続文字列を読み込みます。 シークレット マネージャーを使用して接続文字列を保存する方法については、「ASP.NET Core による Azure App Configuration のクイック スタート」を参照してください。

Select メソッドは 2 回呼び出されます。 1 回目では、ラベルのない構成値が読み込まれます。 次に、現在の環境に対応するラベルを持つ構成値が読み込まれます。 これらの環境固有の値により、ラベルなしに対応する値はオーバーライドされます。 すべてのキーに対して環境固有の値を定義する必要はありません。 現在の環境に対応するラベルを持つ値がキーにない場合は、ラベルなしの値が使用されます。

さまざまな環境でテストする

Properties ディレクトリにある launchSettings.json ファイルを開きます。 profilesconfig エントリを見つけます。 environmentVariables セクションで、ASPNETCORE_ENVIRONMENT 変数を Production に設定します。

新しい値を設定したら、アプリケーションをビルドして実行します。

dotnet build
dotnet run

Web ブラウザーを使用して http://localhost:5000 に移動します。 フォントの色が黒であることがわかります。

Web application running with production configuration

launchSettings.json を更新して、ASPNETCORE_ENVIRONMENT 変数を Development に設定します。 dotnet run をもう一度実行します。

フォントの色が今度は赤であることがわかります。 これは、アプリケーションで Development というラベルを持つ TestApp:Settings:FontColor の値が使用されるようになったためです。 他のすべての構成値は、運用環境の値と同じままです。

Web application running with development configuration

次のステップ