App Service アプリを構成する

この記事では、Web アプリ、モバイル バックエンド、または API アプリの一般的な設定を構成する方法について説明します。 Azure Functions については、「Azure Functions のアプリケーション設定のリファレンス」を参照してください。

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

App Service では、アプリ設定は、環境変数としてアプリケーション コードに渡される変数です。 Linux アプリとカスタム コンテナーの場合、App Service では、コンテナー内に環境変数を設定するためのアプリ設定が --env フラグを使用してコンテナーに渡されます。 いずれの場合も、アプリの起動時にアプリ環境に挿入されます。 アプリ設定を追加、削除、または編集する場合、App Service でアプリの起動がトリガーされます。

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 にデプロイされたときに運用シークレットを使用するコードは同じです。

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

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

Note

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

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

    App Services を探す

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

    アプリケーションの設定

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

  3. 新しいアプリ設定を追加するには、 [新しいアプリケーション設定] をクリックします。 設定を編集するには、右側にある [編集] ボタンをクリックします。

  4. ダイアログで、設定を現在のスロットに固有として構成することができます。

    アプリ設定の名前にピリオド (.) を含めることはできません。 アプリ設定にピリオドが含まれている場合、コンテナーではピリオドはアンダースコアに置き換えられます。

    Note

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

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

アプリ設定を一括編集する

[高度な編集] をクリックします。 テキスト領域の設定を編集します。 完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

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

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

アプリ設定で配列を構成する

次の表に示すように、アプリ設定で配列を構成することもできます。

アプリ設定の名前 アプリ設定の値
MY_ENV_VAR ['entry1'、'entry2'、'entry3']

接続文字列の構成

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 にデプロイされたときに運用シークレットを使用するコードは同じです。

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

Note

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

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

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

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

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

Note

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

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

    App Services を探す

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

    アプリケーションの設定

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

  3. 新しい接続文字列を追加するには、 [新しい接続文字列] をクリックします。 接続文字列を編集するには、右側にある [編集] ボタンをクリックします。

  4. ダイアログで、接続文字列を現在のスロットに固有として構成することができます。

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

接続文字列の一括編集

[高度な編集] をクリックします。 テキスト領域の接続文字列を編集します。 完了したら、 [更新] をクリックします。 忘れずに [構成] ページに戻って [保存] をクリックください。

接続文字列には、次の 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 コンテナーの全般設定

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

    • [FTP state](FTP の状態): FTPS のみを許可するか、FTP を完全に無効にします。

    • [ビット] : 32 ビットまたは 64 ビット。 Windows アプリ専用。

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

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

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

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

    Note

    最新のブラウザーのほとんどは、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 アプリでのみ使用されます。

既定のドキュメントは、App Service アプリのルート URL に表示される Web ページです。 一覧で最初に一致するファイルが使用されます。 アプリが、静的コンテンツの処理の代わりに URL に基づいてルーティングされるモジュールを使用している場合、既定のドキュメントは必要ありません。

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

  2. アプリの左側のメニューで、 [構成]>[既定のドキュメント] を選択します。

    既定のドキュメント

  3. 既定のドキュメントを追加するには、[New document] (新しいドキュメント) をクリックします。 既定のドキュメントを削除するには、その右側にある [削除] をクリックします。

URL パスをディレクトリにマップする

既定では、App Service はアプリ コードのルート ディレクトリからアプリを起動します。 しかし、特定の Web フレームワークはルート ディレクトリで開始されません。 たとえば、Laravelpublic サブディレクトリで開始されます。 そのようなアプリには、たとえば http://contoso.com/public でアクセスできますが、通常は、代わりに http://contoso.compublic ディレクトリに送信します。 アプリのスタートアップ ファイルが別のフォルダーにあるか、またはリポジトリに複数のアプリケーションが含まれている場合は、仮想アプリケーションおよびディレクトリを編集または追加できます。

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

  2. アプリの左側のメニューで、[構成]>[Path mappings](パスのマッピング) を選択します。

  3. [New virtual application or directory] (新しい仮想アプリケーションまたはディレクトリ) をクリックします。

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

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

  4. [OK] をクリックします。

ハンドラー マッピングを構成する

Windows アプリの場合は、IIS ハンドラー マッピングや仮想アプリケーションおよびディレクトリをカスタマイズできます。 ハンドラー マッピングを使用すると、特定のファイル拡張子への要求を処理するためのカスタム スクリプト プロセッサを追加できます。

カスタム ハンドラーを追加するには、次の操作を行います。

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

  2. アプリの左側のメニューで、 [構成]>[Path mappings](パスのマッピング) を選択します。

    パスのマッピング

  3. [新しいハンドラー マッピング] をクリックします。 次のようにハンドラーを構成します。

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

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

次のステップ