Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Azure App ServiceのApp Configuration参照機能を試してみた

こんにちは、小さい頃から娘が手や足をどこかにぶつけて「ここぶつけて痛い・・」と言ってくるたびに「ぶつけないように気をつけなさい」と言い続けていたら、最近はぶつけたときに「いたーい!気をつけます!」と言うようになって可愛いなと思いつつも気をつけろと言い過ぎたかなと反省している木村です。

先日、Azure App ServiceのApp Configuration参照機能がGAしましたので早速試してみました。

azure.microsoft.com

なお、Azure portalの言語設定を英語にして画面キャプチャしていますので、日本語での表示は適宜読み替えてください。

App Configuration参照とは

Azure App Configurationは、アプリケーション設定と機能フラグを一元的に管理するためのサービスです。

learn.microsoft.com

これまでApp Configurationを利用する際は、設定を読み込むためのコードをアプリケーションに埋め込む必要がありました。

learn.microsoft.com

上記ページのC#(ASP.NET Core)のサンプルでいうと、以下の部分が該当します。

// Retrieve the connection string
string connectionString = builder.Configuration.GetConnectionString("AppConfig");

// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(connectionString);

今回GAしたApp Configuration参照機能は、アプリケーションのソースコードを変更することなくApp Configurationの値をアプリケーションから読み込むことができるようになる機能です。
App Serviceには同様の機能として、KeyVaultを参照する機能も存在します。こちらについては弊社松村の以下の記事を参照ください。

aadojo.alterbooth.com

サンプルアプリケーション

今回は、ASP.NET Core Webアプリ(Razor Pages/.NET8)テンプレートを少し修正したものを利用します。インデックスページにApplicationOptions__ApplicationNameという設定の内容を表示する機能を追加しています。
以下でコードを公開しています。

github.com

これをそのままWebAppsにデプロイすると、appsettings.jsonで設定した「MyApp」という値が以下のように表示されます。

デフォルト値の表示

App Configurationの作成と設定

まずは参照先されるApp Configurationを作成します。今回は検証目的なのでFreeプランで作成します。

リソースが作成できたら、概要のページからエンドポイントのURLをコピーして保存しておきます。

エンドポイントのURLを取得

WebAppsからアクセスできるよう、App ConfigurationのAccess Controlメニューで、WebAppsのシステム割り当てマネージドIDに「App Configuration Data Reader」ロールを割り当てます。
以下の画面は割り当て追加の最後の確認画面ですが、このようになっていればOKです。

マネージドIDへのロールの割り当て

参照する設定値を追加します。Operations > Configuration explorerから「sampleApplicationName」というキー名に、「App Configuration 2024」という値を追加しました。

App Configurationへの設定の追加

WebAppsの設定の変更

WebAppsの設定をします。WebAppsのメニューのSettings > Environment variablesから、新しい環境変数を追加します。

App Configuration参照の追加

ApplicationOptions__ApplicationNameの値として、App Configurationを参照するように指定します。形式は

@Microsoft.AppConfiguration(Endpoint=先ほどコピーしたエンドポイント; Key=キー名)

となります。Labelも指定できますが、今回はApp Configurationの値にラベルを指定していないので省略しています。
詳細については以下の公式ドキュメントを参照してください。

learn.microsoft.com

設定を保存するとWebAppsがリスタートします。正常にApp Configurationの値が参照できた場合は、以下のようにチェックマークが表示されます。参照できていない場合は参照の値やマネージドIDの設定を確認してください。

App Configurationが正しく参照できている

では、アプリケーションの画面を確認してみましょう。

App Configurationの値が表示されている

無事表示できていますね!

まとめ

先日GAした、Azure App ServiceのApp Configuration参照機能を試してみました。
これまでApp Configurationの値を参照するにはアプリケーションの修正が必要でしたが、この機能を使うことでアプリケーションを修正することなく簡単に値を参照できるようになりました。App Configurationは大変便利なサービスですが、アプリケーションを修正するのが難しく導入できていなかったようなケースでも、この機能を使えば解決できそうだと思いました。

皆様のお役に立てば幸いです。


サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com