yotiky Tech Blog

とあるエンジニアの備忘録

Azure Functions で Azure App Configuration から設定を読み込む

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

目次

App Configuration を設定する

Azure App Configuration を作成する。

操作の構成エクスプローラーから「鍵」と「値」を追加する。

f:id:yotiky:20210131021953p:plain

App Configuration ストアに接続する

接続文字列

実装

作成した App Configuration の設定からアクセスキーを選択し、読み取り専用キーから接続文字列をコピーする。

f:id:yotiky:20210131021159p:plain

Functions のアプリケーション設定に接続文字列を登録する。

f:id:yotiky:20210131024550p:plain

Nuget で Azure.Extensions.AspNetCore.Configuration.Secrets をインストールする。

Statup クラスで、接続文字列を使って Azure App Configuration プロバイダーを追加する。

class Startup : FunctionsStartup
{
    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(builtConfig["AppConfigConnectionString"]);
    }
}

Functions 側は インジェクションした IConfiguration から App Configuration に追加した鍵で取得できる。

    public class Function1
    {
        private readonly IConfiguration _configuration;
        public Function1(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [FunctionName("Function1")]
        public async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation(_configuration["AppConfig:ConnectionString"]);

            return new OkObjectResult("This HTTP triggered function executed successfully.");
        }
    }

エンドポイント

Azure Functions に Managed Id を設定

デプロイ済みの Azure Functions の設定から ID を選択する。

f:id:yotiky:20210130214151p:plain:w300

システム割り当て済みをオンにする。

f:id:yotiky:20210130214226p:plain:w300

App Configuration へのアクセスの許可

App Configuration のアクセス制御(IAM)を選択し、Functions にロールの割り当てを追加する。

f:id:yotiky:20210131031856p:plain

実装

App Configuration の設定で読み取り専用キーからエンドポイントをコピーする。

Functions のアプリケーション設定にエンドポイントを登録する。

f:id:yotiky:20210131024550p:plain

Statup クラスで、エンドポイントを使って Azure App Configuration プロバイダーを追加する。 Functions 側は接続文字列の項目と同じ。

class Startup : FunctionsStartup
{
    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
                options.Connect(new Uri(builtConfig["AppConfigEndpoint"]), new ManagedIdentityCredential()));
    }
}

関連記事

yotiky.hatenablog.com