Azure App Service のアプリケーション設定から App Configuration が参照出来るようになっていたので試してみた

Azure App Service のアプリケーション設定から App Configuration が参照出来るようになっていたので試してみた

Clock Icon2024.10.14

いわさです。

ASP.NET Core でアプリケーション設定を参照しようとすると appsettings.json などを使うことが出来ますが、Azure App Service へデプロイすると App Service のアプリケーション設定値を参照することが出来ます。
ステージごとに環境を切り替えることが出来るので非常に便利なのですが、Azure にはそれとは別に App Configuration という構成管理サービスも存在しています。

App Service 構成は便利なのですが、構成値を管理する App Configuration を使いたい場合もあります。
ただし、アプリケーションから App Configuration を使う場合は App Service 構成とは異なり、明示的に App Configuration を参照するためのアプリケーションコードが必要でした。

先日のアップデートでどうやら App Service から App Configuration を参照出来るようになったようです。
よくわからなかったのですが、アプリケーションコードで特に指定せずにアプリケーションから App Configuration を参照出来るようにも見えます。

https://azure.microsoft.com/en-us/updates/v2/app-config-ref-ga

これは中々良さそうだなと思い実際に試してみましたので紹介します。

ローカルで IConfiguration から構成値を取得する

まずアプリ側ですが、次のように IConfiguration を使って取得した値を画面に表示するだけの単純なものです。

https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/configuration/?view=aspnetcore-8.0

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace hoge1014psql.Pages;

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;
    private readonly IConfiguration _configuration;

    public IndexModel(ILogger<IndexModel> logger, IConfiguration configuration)
    {
        _logger = logger;
        _configuration = configuration;
    }

    public void OnGet()
    {
        ViewData["Hoge"] = _configuration["Hoge"] ?? "Empty Hoge";
    }
}

appsettings.Development.jsonHogeキーの値を設定し、ローカル実行してみます。

D6F31276-A0B1-442B-BCBE-81CA458505A6.png

良いですね。構成ファイルから取得した値が画面に表示されました。

App Service のアプリ設定の値を表示する

続いて、ローカルで作成した ASP.NET Core アプリケーションを Azure App Service にデプロイします。
次に記載されているとおり IConfiguration 経由で値を取得している場合はそのまま App Service のアプリ設定から値を取得することが出来ます。

https://learn.microsoft.com/ja-jp/azure/app-service/configure-language-dotnetcore?pivots=platform-linux

手順は割愛しますが、今回は Visual Studio Code の Azure 拡張を使って App Serivce へデプロイしました。

55612C6E-1CB7-496A-8359-0D5C180C22B0.png

App Service 側では環境変数のアプリ設定タグからコードで参照しているHogeキーの値を設定します。

B4CFD8A3-3FEF-4EF3-A7C7-C26C9000988C_1_105_c.jpeg

設定を保存し、アプリを再起動すると画面上にアプリ設定の値が表示されることが確認出来ました。

7D5FF38A-B7B0-4002-AD53-150EFF9ADEAC_1_105_c.jpeg

クラウドにデプロイするだけでコード変更なしでクラウド上の設定を統合出来るの素晴らしいですね。

App Configuration 参照

とはいえ、クラウドの構成値管理を行うのであれば、アプリケーションの設定値を一元管理したり、デプロイタイミングをコントロールしたりしたいものです。
AWS だと AppConfig というサービスがありますが、Azure では App Configuration というサービスがあります。

ASP.NET Core からこいつを使う場合は従来は次のように App Configuration から読み取るためのコード追加が必要でした。

https://learn.microsoft.com/ja-jp/azure/azure-app-configuration/quickstart-aspnet-core-app

これが今回 GA された機能を使うとアプリ設定がそのまま App Configuration ストアの値を参照出来るようです。やってみましょう。
まずは App Configuration で適当な値を設定します。App Service のアプリ設定とは別のキー・値です。

3B85725E-5A3C-4460-94D1-36EE5510A285_1_105_c.jpeg

ドキュメントによると App Service から App Configuration へのアクセス許可が必要なようなので、App Service でマネージド ID を作成し、App Configuration の IAM で構成の読み取り権限を与えてみました。

9538CAAF-FAB1-4929-8265-F094D6640FD7_1_105_c.jpeg

App Service から参照する方法ですが、次のドキュメントに記載されているように@Microsoft.AppConfigurationを使います。エンドポイント URL は先程作成した App Configuration ストアのものを、キーも先程作成した適当なものを指定します。ラベルも指定出来るようですが、今回は特に指定なしです。

https://learn.microsoft.com/en-us/azure/app-service/app-service-configuration-references

CD2A9EF8-6726-4C3D-9AFE-ADB5114B06F6_1_105_c.jpeg

アプリケーションコードは変更せずに実行してみると、アプリ側で App Configuration に保存した値が表示されました。良いですね。コード変更無しというのが良いです。

59BECED1-E842-4653-A5D1-228416E00DCD_1_105_c.jpeg

さいごに

本日は Azure App Service のアプリケーション設定から App Configuration が参照出来るようになっていたので試してみました。

注意点としてはドキュメントにさらっと記載されているように、App Configuration 側で値が更新されても自動更新はされないのでちょっと期待する使い方をしようとするとそこは注意が必要なんですが、でも Azure マネージドサービスの、このコード変更なしにクラウドの機能が統合出来るの良いですね。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.