2020/9/16 に Microsoft.Azure.Functions.Extensions
パッケージが v1.1.0 がリリースされました。これに伴い、Azure Functions で DI を利用するときに書くことになる FunctionsStartup
にアプリケーションの構成情報ソースをカスタマイズするためのオーバーライド (ConfigureAppConfiguration
) が追加されました。
実装サンプル
最近は Azure App Configuration が便利過ぎるのでよく利用するのですが、そういうのを読み込み元として追加するときに利用できるでしょう。実装イメージはこんな感じ。
using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; [assembly: FunctionsStartup(typeof(AzureFunctionsSample.Startup))] namespace AzureFunctionsSample { internal class Startup : FunctionsStartup { // 新たに追加されたオーバーライド public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { // 既定の構成を取得 base.ConfigureAppConfiguration(builder); var defaultConfig = builder.ConfigurationBuilder.Build(); // App Configuration を読み込む builder.ConfigurationBuilder.AddAzureAppConfiguration(o => { var connectionString = defaultConfig["AppConfig:ConnectionString"]; o.Connect(connectionString); o.Select("*"); }); } // 前からあったオーバーライド public override void Configure(IFunctionsHostBuilder builder) { var services = builder.Services; var config = builder.GetContext().Configuration; // DI 登録とかとか } } }
これまでは Configure
メソッドだけですべてやる必要があったのですが、タイミングを切り離すことができるようになった感じでしょうか。
呼び出し順序
試してみたところ、以下の順で呼び出されました。
ConfigureAppConfiguration
Configure
注意事項
Consumption Plan か Premium Plan の場合、スケールコントローラーの関係でアプリケーション構成の値が変更は許可されていない旨の記述がありました。実行時エラーになりそうなので、気を付ける必要がありそうです。