M365関連 技術

AzureFunctionで環境変数を使用する

AzureFunction上で様々環境(検証環境、本番環境 etc...)によって変わる値があったため、
環境変数として実際のコードをいじらずに済むようにしました
その際の実装内容をメモとして残します

※2020年くらいから環境変数の取得の仕方が変わって、「AzureFunction 環境変数」で検索すると出てくる【ConfigurationManager】クラスを使用しての取得はできなくなっているようです

環境変数を設定する

VisualStudioでの環境変数の設定の仕方

local.settings.jsonに環境変数を記載していきます

Valuesの配下に「TESTING_VALUE」という変数を用意し、
ConnectionStringsの配下に「DB_CONNECTION_STRING」という変数を用意

Azure上での環境変数の設定の仕方

関数アプリ > 設定 > 構成に環境変数を記載していきます

アプリケーション設定の配下に「TESTING_VALUE」という変数を用意し、
接続文字列の配下に「DB_CONNECTION_STRING」という変数を用意

Azure上で設定した場合は上部にある「保存」ボタンを押す必要があります

環境変数を実際に取得する

VisualStudio上で取得する

「Values」配下の値は特に気にする必要がなく取得できるが、
「ConnectionStrings」配下の値は【ConnectionStrings:】を追加するしないと取得できないので注意

// 「Values」配下に設定した値の取得
string testingValue = System.Environment.GetEnvironmentVariable("TESTING_VALUE", EnvironmentVariableTarget.Process);

// 「ConnectionStrings」配下に設定した値の取得
string connectionVale = System.Environment.GetEnvironmentVariable("ConnectionStrings:DB_CONNECTION_STRING", EnvironmentVariableTarget.Process);

実際に値が取得できた

Azure上で取得する

こちらも「Values」配下の値は特に気にする必要がなく取得できるが、
「ConnectionStrings」配下の値は接続先のDBによって文言を変更する必要があるので注意が必要

  • 接続先がMySQLの場合は『MYSQLCONNSTR_{キー}』
  • 接続先がAzure SQL Databaseの場合は『SQLAZURECONNSTR_{キー}』
  • 接続先がSQLサーバーの場合は『SQLCONNSTR_{キー}』

MicroSoftドキュメント

MS公式
ASP.NET Core の構成 | Microsoft Learn
ASP.NET Core の構成 | Microsoft Learn

構成 API を使用して、ASP.NET Core アプリで AppSettings を構成する方法について説明します。

続きを読む

// 「Values」配下に設定した値の取得(Visual Studioと変わらず)
string testingValue = System.Environment.GetEnvironmentVariable("TESTING_VALUE", EnvironmentVariableTarget.Process);

// 「ConnectionStrings」配下に設定した値の取得
// 今回はSQLサーバーを対象としているので「SQLCONNSTR_」となる
string connectionVale = System.Environment.GetEnvironmentVariable("SQLCONNSTR_DB_CONNECTION_STRING", EnvironmentVariableTarget.Process);

実際に値が取得できた

VisualStudioとAzure上とで環境変数の取得に若干の差異があって困惑した
なぜ、環境変数の取得でさえ統一してくれないのか。。。

-M365関連, 技術
-, , ,