多くのアプリケーションでは、環境ごとに異なる構成を使用する必要があります。 アプリケーションに、バックエンド データベースに使用するエンドポイントを定義する構成値があるとします。 アプリケーション開発者は、運用環境で使用されるデータベースとは異なるデータベースを使用します。 アプリケーションが開発から運用に移行するにつれて、アプリケーションが使用するデータベース エンドポイントを変更する必要があります。
Azure App Configuration では、 ラベル を使用して、同じキーに異なる値を定義できます。 たとえば、開発と運用の値が異なる 1 つのキーを定義できます。 App Configuration に接続するときに読み込むラベルを指定できます。
この機能を示すために、「 クイック スタート: Azure App Configuration を使用して ASP.NET Core アプリを作成 する」で作成した Web アプリを変更し、開発と運用に異なる構成設定を使用します。 続行する前に、クイック スタートを完了してください。
構成値を追加するときにラベルを指定する
Azure portal で 構成エクスプローラー に移動し、クイックスタートで作成した TestApp:Settings:FontColor キーを見つけます。 コンテキスト メニューを選択し、[ 値の追加] を選択します。
[値の追加] 画面で、赤の値と開発ラベルを入力します。 コンテンツ タイプは空のままにします。 を選択してを適用します。
指定したラベルを使用して構成値を読み込む
既定では、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 =>
{
string endpoint = Environment.GetEnvironmentVariable("Endpoint");
options.Connect(new Uri(endpoint), new DefaultAzureCredential())
// 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);
});
Select メソッドは 2 回呼び出されます。 初めて、ラベルのない構成値を読み込みます。 次に、現在の環境に対応するラベルを使用して構成値を読み込みます。 これらの環境固有の値は、ラベルのない対応する値をオーバーライドします。 すべてのキーに環境固有の値を定義する必要はありません。 キーに現在の環境に対応するラベルを持つ値がない場合は、ラベルのない値が使用されます。
さまざまな環境でテストする
Properties ディレクトリの下にあるlaunchSettings.json ファイルを開きます。 [profiles] でconfigエントリを見つけます。 [ environmentVariables ] セクションで、 ASPNETCORE_ENVIRONMENT 変数を Production に設定します。
新しい値が設定されたら、アプリケーションをビルドして実行します。
dotnet build
dotnet run
Web ブラウザーを使用して、 http://localhost:5000に移動します。 フォントの色が黒であることがわかります。
launchSettings.jsonを更新して、ASPNETCORE_ENVIRONMENT変数をDevelopmentに設定します。
dotnet runをもう一度実行します。
フォントの色が赤になったことに気付くでしょう。 これは、アプリケーションが、Development ラベルを持つTestApp:Settings:FontColorの値を使用するためです。 その他の構成値はすべて、運用環境の値と同じままです。