Azure portal で App Service アプリを構成する

この記事では、Azure portal を使用して Web アプリ、モバイル バックエンド、または API アプリの一般的な設定を構成する方法について説明します。

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

App Service では、アプリ設定は、環境変数としてアプリケーション コードに渡される変数です。 Linux アプリとカスタム コンテナーの場合、App Service では、コンテナー内に環境変数を設定するためのアプリ設定が --env フラグを使用してコンテナーに渡されます。 どちらの場合も、アプリの起動時にアプリ環境に挿入されます。 アプリ設定を追加、削除、編集すると、App Service でアプリの起動がトリガーされます。 アプリ設定の名前にピリオド (.) を含めることはできません。 アプリ設定にピリオドが含まれている場合、コンテナーではピリオドはアンダースコアに置き換えられます。

Azure portal で、 [App Services] を探して選択してから、アプリを選択します。

App Services を探す

アプリの左側のメニューで、 [構成] > [アプリケーションの設定] を選択します。

アプリケーションの設定

ASP.NET および ASP.NET Core 開発者の場合、App Service でのアプリ設定の設定は Web.config または appsettings.json での <appSettings> の設定と同様ですが、App Service の値によって Web.config または appsettings.json でそれらがオーバーライドされます。 Web.config または appsettings.json 内の開発設定 (たとえば、ローカル MySQL パスワード)、および運用シークレット (たとえば、Azure MySQL データベース パスワード) は App Service で安全に保持できます。 ローカルでデバッグするときに開発設定を使用するコードと、Azure にデプロイされたときに運用シークレットを使用するコードは同じです。

同様に、他の言語スタックも実行時に環境変数としてアプリ設定を取得します。 言語スタック固有の手順については、次を参照してください。

アプリの設定は、格納されるときに常に暗号化されます (保存時の暗号化)。

注意

アプリ設定は、Key Vault 参照を使用して Key Vault から解決することもできます。

非表示の値を表示する

既定では、アプリ設定の値は、セキュリティのためにポータルでは非表示になっています。 アプリ設定の非表示の値を表示するには、その設定の [値] フィールドをクリックします。 すべてのアプリ設定の値を表示するには、 [値の表示] ボタンをクリックします。

追加または編集する

新しいアプリ設定を追加するには、 [新しいアプリケーション設定] をクリックします。 ダイアログで、設定を現在のスロットに固有として構成することができます。

設定を編集するには、右側にある [編集] ボタンをクリックします。

完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

注意

既定の Linux App Service またはカスタム Linux コンテナーでは、ApplicationInsights:InstrumentationKey などの、アプリ設定名の中の入れ子になった JSON キー構造はすべて、App Service ではキー名を ApplicationInsights__InstrumentationKey として構成する必要があります。 つまり、: はすべて __ (二重アンダースコア) で置き換える必要があります。

一括で編集する

アプリ設定を一括で追加または編集するには、 [Advanced edit] (詳細な編集) ボタンをクリックします。 完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

アプリ設定には、次の JSON 形式が含まれています。

[
  {
    "name": "<key-1>",
    "value": "<value-1>",
    "slotSetting": false
  },
  {
    "name": "<key-2>",
    "value": "<value-2>",
    "slotSetting": false
  },
  ...
]

Azure CLI を使用してアプリケーション設定を自動化する

Azure CLI を使用すると、コマンドラインで設定を作成したり管理したりできます。

  • az webapp config app settings set で設定に値を割り当てます。

    az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings <setting-name>="<value>"
    

    <setting-name> を設定の名前に、<value> をそれに割り当てる値に置換します。 このコマンドによって設定が作成されます (まだ存在しない場合)。

  • az webapp config appsettings list ですべての設定とその値を割り当てます。

    az webapp config appsettings list --name <app-name> --resource-group <resource-group-name>
    
  • az webapp config app settings delete で 1 つまたは複数の設定を削除します。

    az webapp config appsettings delete --name <app-name> --resource-group <resource-group-name> --setting-names {<names>}
    

    スペースで区切られた設定名一覧で <names> を置換します。

接続文字列の構成

Azure portal で、 [App Services] を探して選択してから、アプリを選択します。 アプリの左側のメニューで、 [構成] > [アプリケーションの設定] を選択します。

アプリケーションの設定

ASP.NET および ASP.NET Core 開発者の場合、App Service での接続文字列の設定は Web.config 内の <connectionStrings> での設定と同様ですが、App Service で設定した値によって Web.config 内の値がオーバーライドされます。Web.config 内の開発設定 (データベース ファイルなど) や運用シークレット (SQL Database の資格情報など) を App Service で安全に保持できます。 ローカルでデバッグするときに開発設定を使用するコードと、Azure にデプロイされたときに運用シークレットを使用するコードは同じです。

他の言語スタックの場合は、値にアクセスするために接続文字列の変数キーに特殊な形式が必要になるため、代わりにアプリ設定を使用することをお勧めします。

注意

.NET 以外の言語のアプリ設定ではなく、接続文字列の使用が必要になる場合があります。 App Service アプリでデータベースの接続文字列を構成した場合に "のみ"、特定の Azure データベースの種類がアプリと一緒にバックアップされます。 詳細については、「バックアップ対象」を参照してください。 この自動バックアップが必要ない場合は、アプリ設定を使用してください。

実行時に、接続文字列は、前に次の接続の種類が付加された環境変数として使用できます。

  • SQLServer: SQLCONNSTR_
  • MySQL: MYSQLCONNSTR_
  • SQLAzure: SQLAZURECONNSTR_
  • カスタム: CUSTOMCONNSTR_
  • PostgreSQL: POSTGRESQLCONNSTR_

たとえば、connectionstring1 という名前の MySql 接続文字列には環境変数 MYSQLCONNSTR_connectionString1 としてアクセスできます。 言語スタック固有の手順については、次を参照してください。

接続文字列は、格納されるときに常に暗号化されます (保存時の暗号化)。

注意

接続文字列は、Key Vault 参照を使用して Key Vault から解決することもできます。

非表示の値を表示する

既定では、接続文字列の値は、セキュリティのためにポータルでは非表示になっています。 接続文字列の非表示の値を表示するには、その文字列の [値] フィールドをクリックするだけです。 すべての接続文字列の値を表示するには、 [値の表示] ボタンをクリックします。

追加または編集する

新しい接続文字列を追加するには、 [新しい接続文字列] をクリックします。 ダイアログで、接続文字列を現在のスロットに固有として構成することができます。

設定を編集するには、右側にある [編集] ボタンをクリックします。

完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

一括で編集する

接続文字列を一括で追加または編集するには、 [Advanced edit] (詳細な編集) ボタンをクリックします。 完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

接続文字列には、次の JSON 形式が含まれています。

[
  {
    "name": "name-1",
    "value": "conn-string-1",
    "type": "SQLServer",
    "slotSetting": false
  },
  {
    "name": "name-2",
    "value": "conn-string-2",
    "type": "PostgreSQL",
    "slotSetting": false
  },
  ...
]

全般設定を構成する

Azure portal で、 [App Services] を探して選択してから、アプリを選択します。 アプリの左側のメニューで、 [構成] > [全般設定] を選択します。

全般設定

ここでは、アプリのいくつかの一般的な設定を構成できます。 一部の設定では、より高い価格レベルにスケールアップする必要があります。

  • [Stack settings] (スタックの設定) : アプリを実行するためのソフトウェア スタック (言語や SDK バージョンを含む)。

    Linux アプリとカスタム コンテナー アプリの場合、言語ランタイム バージョンを選択し、任意の スタートアップ コマンド またはスタートアップ コマンド ファイルを設定します。

    Linux コンテナーの全般設定

  • [プラットフォームの設定] : ホスティング プラットフォームの設定を構成できます。次のものが含まれます。

    • [ビット] : 32 ビットまたは 64 ビット。 (ポータルで作成される App Service の既定値は 32 ビットです)。

    • [WebSocket プロトコル] : ASP.NET SignalRsocket.io など。

    • [常時接続] : トラフィックがない場合も、アプリを読み込まれたままにします。 [常時接続] がオン (既定) の場合、アプリは受信要求なしで 20 分後にアンロードされます。 アンロードされたアプリでは、ウォームアップ時間のために新しい要求の待機時間が長くなる場合があります。 [常時接続] がオンの場合、フロントエンド ロード バランサーは 5 分ごとにアプリケーション ルートに GET 要求を送信します。 継続的 ping により、アプリがアンロードされるのを防ぎます。

      [常時接続] は、継続的な Web ジョブや、CRON 式を使用してトリガーされる Web ジョブに必要です。

    • [Managed pipeline version] (マネージド パイプライン バージョン) : IIS の パイプライン モード。 以前のバージョンの IIS を必要とするレガシ アプリがある場合は、これを [Classic] (クラシック) に設定します。

    • [HTTP version] (HTTP バージョン) :HTTPS/2 プロトコルのサポートを有効にするには、 [2.0] に設定します。

    注意

    最新のブラウザーのほとんどは、TLS 上でのみ HTTP/2 プロトコルをサポートし、暗号化されていないトラフィックには引き続き HTTP/1.1 を使用しています。 クライアント ブラウザーが HTTP/2 でご利用のアプリに確実に接続されるようにするには、カスタム DNS 名をセキュリティで保護します。 詳細については、「Azure App Service で TLS/SSL バインディングを使用してカスタム DNS 名をセキュリティで保護する」を参照してください。

    • [ARR affinity] (ARR アフィニティ) :マルチインスタンス デプロイでは、クライアントがセッションの有効期間を通して同じインスタンスにルーティングされることを確認してください。 ステートレス アプリケーションの場合は、このオプションを [オフ] に設定できます。
  • [デバッグ] : ASP.NETASP.NET Core、または Node.js アプリに対するリモート デバッグを有効にします。 このオプションは、48 時間後に自動的に無効になります。

  • [Incoming client certificates] (受信クライアント証明書) : 相互認証でクライアント証明書を必要とします。

既定のドキュメントを構成する

この設定は、Windows アプリでのみ使用されます。

Azure portal で、 [App Services] を探して選択してから、アプリを選択します。 アプリの左側のメニューで、 [構成] > [既定のドキュメント] を選択します。

既定のドキュメント

既定のドキュメントは、Web サイトのルート URL に表示される Web ページです。 一覧で最初に一致するファイルが使用されます。 新しい既定のドキュメントを追加するには、 [New document] (新しいドキュメント) をクリックします。 忘れずに [保存] をクリックください。

アプリが、静的コンテンツの処理ではなく URL に基づいてルーティングされるモジュールを使用している場合、既定のドキュメントは必要ありません。

パス マッピングを構成する

Azure portal で、 [App Services] を探して選択してから、アプリを選択します。 アプリの左側のメニューで、 [構成] > [Path mappings](パスのマッピング) を選択します。

パスのマッピング

注意

[Path mappings](パスのマッピング) タブには、こちらに示す例とは異なる、OS 固有の設定が表示される場合があります。

Windows アプリ (コンテナー化されていない)

Windows アプリの場合は、IIS ハンドラー マッピングや仮想アプリケーションおよびディレクトリをカスタマイズできます。

ハンドラー マッピングを使用すると、特定のファイル拡張子への要求を処理するためのカスタム スクリプト プロセッサを追加できます。 カスタム ハンドラーを追加するには、 [New handler mapping](新しいハンドラー マッピング) をクリックします。 次のようにハンドラーを構成します。

  • [拡張子] 。 処理するファイル拡張子 ( *.phphandler.fcgi など)。
  • [Script processor] (スクリプト プロセッサ) 。 スクリプト プロセッサの絶対パス。 ファイル拡張子に一致するファイルへの要求は、スクリプト プロセッサによって処理されます。 アプリのルート ディレクトリは D:\home\site\wwwroot というパスを使って参照します。
  • [引数] 。 スクリプト プロセッサの省略可能なコマンド ライン引数。

各アプリには、D:\home\site\wwwroot にマップされた既定のルート パス (/) があります。コードは、既定ではここにデプロイされます。 アプリのルートが別のフォルダーにあるか、またはリポジトリに複数のアプリケーションが含まれている場合は、ここで仮想アプリケーションおよびディレクトリを編集または追加できます。

[Path mappings](パスのマッピング) タブで、 [New virtual application or directory](新しい仮想アプリケーションまたはディレクトリ) をクリックします。

  • 仮想ディレクトリを物理パスにマップするには、 [ディレクトリ] チェック ボックスをオンのままにします。 仮想ディレクトリと、Web サイト ルート (D:\home) への対応する相対 (物理) パスを指定します。

  • 仮想ディレクトリを Web アプリケーションとしてマークするには、 [ディレクトリ] チェック ボックスをオフにします。

    [ディレクトリ] チェック ボックス

コンテナー化されたアプリ

コンテナー化されたアプリのカスタム ストレージを追加できます。 コンテナー化されたアプリには、すべての Linux アプリのほか、App Service 上で実行されている Windows および Linux カスタム コンテナーも含まれます。 [New Azure Storage Mount] (新しい Azure Storage のマウント) をクリックし、次のようにカスタム ストレージを構成します。

  • Name:表示名です。
  • [構成オプション] : [基本] または [詳細]
  • [ストレージ アカウント] :必要なコンテナーを含むストレージ アカウント。
  • [Storage type](ストレージの種類) : [Azure BLOB] または [Azure Files]

    注意

    Windows コンテナー アプリは Azure Files のみをサポートします。

  • ストレージ コンテナー:基本構成のときの必要なコンテナー。
  • [Share name] (共有名) : 詳細な構成のときのファイル共有名。
  • [アクセス キー] : 詳細な構成のときのアクセス キー。
  • [Mount path] (マウント パス) : カスタム ストレージをマウントするためのコンテナー内の絶対パス。

詳細については、「App Service 内のコンテナーからネットワーク共有としての Azure Storage にアクセスする」を参照してください。

言語スタックの設定を構成する

カスタム コンテナーを構成する

Azure App Service のカスタム Linux コンテナーを構成する」を参照してください。

次のステップ