アプリケーション設定の構成
App Service では、アプリ設定は、環境変数としてアプリケーション コードに渡される変数です。 Linux アプリとカスタム コンテナーの場合、App Service では、コンテナー内に環境変数を設定するためのアプリ設定が --env フラグを使用してコンテナーに渡されます。 いずれの場合も、アプリの起動時にアプリ環境に挿入されます。 アプリ設定を追加、削除、または編集する場合、App Service でアプリの起動がトリガーされます。
ASP.NET および ASP.NET Core 開発者の場合、App Service でのアプリ設定の設定は <appSettings> または appsettings.json での の設定と同様ですが、App Service の値によって Web.config または appsettings.json の値はオーバーライドされます。
Web.config または appsettings.json 内の開発設定 (たとえば、ローカル MySQL パスワード)、および運用シークレット (たとえば、Azure MySQL データベース パスワード) は App Service で安全に保持できます。 ローカルでデバッグするときに開発設定を使用するコードと、Azure にデプロイされたときに運用シークレットを使用するコードは同じです。
アプリの設定は、格納されるときに常に暗号化されます (保存時の暗号化)。 アプリ設定名には、文字、数字 (0 ~ 9)、ピリオド (".")、アンダースコア ("_") のみを含めることができます。アプリ設定の値の特殊文字は、ターゲット OS で必要に応じてエスケープする必要があります。
アプリの管理ページに移動し、[環境変数] > [アプリケーションの設定] の順に選択することで、アプリケーションの設定にアクセスできます。
設定の追加と編集
新しいアプリ設定を追加するには、[+ 追加] を選択します。 デプロイ スロットを使用している場合は、設定がスワップ可能かどうかを指定できます。 ダイアログで、設定を現在のスロットに固有として構成することができます。
完了したら、[適用] を選択します。 元の [環境変数] ページで [適用] を選択することを忘れないでください。
Note
既定の Linux App Service またはカスタム Linux コンテナーでは、ApplicationInsights:InstrumentationKey などの、アプリ設定名の中の入れ子になった JSON キー構造はすべて、App Service ではキー名を ApplicationInsights__InstrumentationKey として構成する必要があります。 つまり、 : を __ (二重アンダースコア) に置き換えます。 アプリ設定名のピリオドは、 _ (1 つのアンダースコア) に置き換えられます。
アプリケーション設定の一括編集
アプリの設定を一括で追加または編集するには、[詳細編集] ボタンを選びます。 終わったら、 [OK] を選択します。 忘れずに [環境変数] ページに戻って [適用] を選択してください。 アプリ設定には、次の JSON 形式が含まれています。
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
接続文字列の構成
ASP.NET および ASP.NET Core 開発者の場合、App Service での接続文字列の設定は <connectionStrings> 内の での設定と同様ですが、App Service で設定した値によって Web.config 内の値がオーバーライドされます。他の言語スタックの場合は、値にアクセスするために接続文字列の変数キーに特殊な形式が必要になるため、代わりにアプリ設定を使用することをお勧めします。
ヒント
非.NET 言語の場合、アプリ設定の代わりに接続文字列を使用することがあります。特定の Azure データベースの種類がアプリと一緒にバックアップされるのは、App Service アプリでデータベースの接続文字列を構成した場合のみです。
接続文字列の追加と編集では、他のアプリ設定と同じ原則に従い、デプロイ スロットに関連付けることもできます。 一括追加または編集に使用する JSON 形式の接続文字列の例:
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
Note
PostgreSQL を対象とする .NET アプリでは、.NET の既知の問題の回避策として接続文字列を EnvironmentVariablesConfigurationProvider に設定する必要があります。
実行時に、接続文字列は、前に次の接続の種類が付加された環境変数として使用できます。
- SQLServer:
SQLCONNSTR_ - MySQL:
MYSQLCONNSTR_ - SQLAzure:
SQLAZURECONNSTR_ - カスタム:
CUSTOMCONNSTR_ - PostgreSQL:
POSTGRESQLCONNSTR_ - 通知ハブ:
NOTIFICATIONHUBCONNSTR_ - Service Bus:
SERVICEBUSCONNSTR_ - イベント ハブ:
EVENTHUBCONNSTR_ - ドキュメント DB:
DOCDBCONNSTR_ - Redis キャッシュ:
REDISCACHECONNSTR_
たとえば、connectionstring1 という名前の MySQL 接続文字列には環境変数 MYSQLCONNSTR_connectionString1 としてアクセスできます。
カスタム コンテナーの環境変数を構成する
カスタム コンテナーには、外部で指定する必要がある環境変数を使用できます。 これらは、Cloud Shell 経由で渡すことができます。 Bash では次のとおりです。
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings key1=value1 key2=value2
PowerShell では次のとおりです。
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"DB_HOST"="myownserver.mysql.database.azure.com"}
アプリを実行すると、App Service アプリ設定が環境変数としてプロセスに自動的に挿入されます。 コンテナー環境変数は、URL https://<app-name>.scm.azurewebsites.net/Env を使用して確認できます。