アプリケーション設定の構成

完了

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 を使用して確認できます。