[アーティクル]
04/21/2023
25 人の共同作成者
フィードバック
この記事の内容
この記事では、Web アプリ、モバイル バックエンド、または API アプリの一般的な設定を構成する方法について説明します。 Azure Functions については、「Azure Functions のアプリケーション設定のリファレンス 」を参照してください。
Note
アプリ設定名に使用できるのは、英字、数字 (0-9)、ピリオド (".")、アンダースコア ("_") のみです
アプリ設定の値の特殊文字は、ターゲット OS で必要に応じてエスケープする必要があります
たとえば、App Service Linux で値 "pa$$w0rd\"
を使用して環境変数を設定するには、アプリ設定の文字列を次のように設定します: "pa\$\$w0rd\\"
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 にデプロイされたときに運用シークレットを使用するコードは同じです。
同様に、他の言語スタックも実行時に環境変数としてアプリ設定を取得します。 言語スタック固有の手順については、次を参照してください。
アプリの設定は、格納されるときに常に暗号化されます (保存時の暗号化)。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のメニューで、 [構成] >[アプリケーションの設定] を選択します。
既定では、アプリ設定の値は、セキュリティのためにポータルでは非表示になっています。 アプリ設定の非表示の値を表示するには、その [値] フィールドを選択します。 すべてのアプリ設定の非表示の値を表示するには、[値の表示] ボタンを選択します。
新しいアプリ設定を追加するには、[新しいアプリケーション設定] を選択します。 設定を編集するには、右側にある [編集] ボタンを選択します。
ダイアログで、設定を現在のスロットに固有として構成する ことができます。
Note
既定の Linux App Service またはカスタム Linux コンテナーでは、ApplicationInsights:InstrumentationKey
などの、アプリ設定名の中の入れ子になった JSON キー構造はすべて、App Service ではキー名を ApplicationInsights__InstrumentationKey
として構成する必要があります。 つまり、:
はすべて __
(二重アンダースコア) で置き換える必要があります。 アプリ設定名のピリオドは _
(単一下線) に置換されます。
終わったら、[更新] を選択します。 忘れずに [構成] ページに戻って、[保存] を選択してください。
az webapp config app settings set を使用してアプリ設定を追加または編集します。
az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings <setting-name>="<value>"
<setting-name>
を設定の名前に、<value>
をそれに割り当てる値に置換します。
az webapp config appsettings list ですべての設定とその値を割り当てます。
az webapp config appsettings list --name <app-name> --resource-group <group-name>
az webapp config app settings delete で 1 つまたは複数の設定を削除します。
az webapp config appsettings delete --name <app-name> --resource-group <group-name> --setting-names {<setting-name1>,<setting-name2>,...}
Set-AzWebApp を使用して 1 つ以上のアプリ設定を設定します。
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"<setting-name1>"="<value1>"; "<setting-name2>"="<value2>";...}
このコマンドレットは、アプリ設定のセット全体を、指定した設定に置き換えます。 既存のセット内でアプリ設定を追加または編集するには、Get-AzWebApp コマンドレットを使用して、入力ハッシュテーブルに既存のアプリ設定を含める必要があります。 次に例を示します。
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy app settings to a new Hashtable
$appSettings = @{}
ForEach ($item in $webapp.SiteConfig.AppSettings) {
$appSettings[$item.Name] = $item.Value
}
# Add or edit one or more app settings
$appSettings['<setting-name1>'] = '<value1>'
$appSettings['<setting-name2>'] = '<value2>'
# Save changes
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings $appSettings
アプリ設定がスロット固有かどうか確認するには、Get-AzWebAppSlotConfigName を使用します。
Get-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> | select AppSettingNames
1 つ以上のアプリ設定をスロット固有にするには、Set-AzWebAppSlotConfigName を使用します。
Set-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> -AppSettingNames <setting-name1>,<setting-name2>,...
アプリ設定を一括編集する
[高度な編集] ボタンを選択します。 テキスト領域の設定を編集します。 終わったら、[更新] を選択します。 忘れずに [構成] ページに戻って、[保存] を選択してください。
アプリ設定には、次の JSON 形式が含まれています。
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
JSON ファイルの名前を使用して az webapp config app settings set を実行します。
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings "@fileName.json"
ヒント
ファイル名を引用符で囲む必要があるのは、PowerShell のみです。
必要なファイル形式は、スロット設定フィールドが省略可能な設定の JSON 配列です。 次に例を示します。
[
{
"name": "key1",
"slotSetting": false,
"value": "value1"
},
{
"name": "key2",
"value": "value2"
}
]
便宜上、az webapp config appsettings list を使用して既存の設定を JSON ファイルに保存できます。 次の例は Bash で実行できます。
# Save the settings
az webapp config appsettings list --name <app-name> --resource-group <group-name> > settings.json
# Edit the JSON file
...
# Update the app with the JSON file
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings @settings.json
Azure PowerShell で JSON ファイルを使用してアプリ設定を一括編集することはできません。
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
としてアクセスできます。 言語スタック固有の手順については、次を参照してください。
接続文字列は、格納されるときに常に暗号化されます (保存時の暗号化)。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のメニューで、 [構成] >[アプリケーションの設定] を選択します。
既定では、接続文字列の値は、セキュリティのためにポータルでは非表示になっています。 接続文字列の非表示の値を表示するには、その [値] フィールドを選択します。 すべての接続文字列の非表示の値を表示するには、[値の表示] ボタンを選択します。
新しい接続文字列を追加するには、[新しい接続文字列] を選択します。 接続文字列を編集するには、右側にある [編集] ボタンを選択します。
ダイアログで、接続文字列を現在のスロットに固有として構成する ことができます。
終わったら、[更新] を選択します。 忘れずに [構成] ページに戻って、[保存] を選択してください。
az webapp config connection-string set を使用してアプリ設定を追加または編集します。
az webapp config connection-string set --name <app-name> --resource-group <group-name> --connection-string-type <type> --settings <string-name>='<value>'
<string-name>
を接続文字列の名前に、<value>
をそれに割り当てる値に置換します。 <type>
に指定できる値については (たとえば、SQLAzure
)、CLI コマンドのドキュメント をご覧ください。
az webapp config connection-string list を使用して、すべての接続文字列とその値を表示します。
az webapp config connection-string list --name <app-name> --resource-group <group-name>
az webapp config connection-string delete を使用して、1 つ以上の接続文字列を削除します。
az webapp config connection-string delete --name <app-name> --resource-group <group-name> --setting-names {<string-name1>,<string-name2>,...}
Set-AzWebApp を使用して 1 つ以上の接続文字列を設定します。
$PropertiesObject = @{
"<string-name1>" = @{
value="<connection-string1>";
type="<type>"};
"<string-name2>" = @{
value="<connection-string2>";
type="<type>"}
}
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -ConnectionStrings $PropertiesObject
各接続文字列には、名前 (<string-name1>
)、値 (<connection-string1>
)、型 (ConnectionStringType 列挙型フィールドの 1 つに対応する数値) が含まれています。 たとえば、SQL Azure の場合、type="2"
を指定します。
このコマンドレットは、接続文字列のセット全体を、指定した設定に置き換えます。 既存のセット内でアプリ設定を追加または編集するには、Get-AzWebApp コマンドレットを使用して、入力ハッシュテーブルに既存のアプリ設定を含める必要があります。 次に例を示します。
# Get app configuration
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Copy connection strings to a new hashtable
$connStrings = @{}
ForEach ($item in $webapp.SiteConfig.ConnectionStrings) {
$connStrings[$item.Name] = @{value=$item.ConnectionString; type=$item.Type.ToString()}
}
# Add or edit one or more connection strings
$connStrings['<string-name1>'] = @{value='<connection-string1>', type='<type>'}
$connStrings['<string-name2>'] = @{value='<connection-string2>', type='<type>'}
# Save changes
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -ConnectionStrings $connStrings
接続文字列がスロット固有かどうかを確認するには、Get-AzWebAppSlotConfigName を使用します。
Get-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> | select ConnectionStringNames
1 つ以上の接続文字列をスロット固有にするには、Set-AzWebAppSlotConfigName を使用します。
Set-AzWebAppSlotConfigName -ResourceGroupName <group-name> -Name <app-name> -ConnectionStringNames <string-name1>,<string-name2>,...
接続文字列の一括編集
[高度な編集] ボタンを選択します。 テキスト領域の接続文字列を編集します。 終わったら、[更新] を選択します。 忘れずに [構成] ページに戻って、[保存] を選択してください。
接続文字列には、次の JSON 形式が含まれています。
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
JSON ファイルの名前を使用して az webapp config connection-string set を実行します。
az webapp config connection-string set --resource-group <group-name> --name <app-name> --settings "@fileName.json"
ヒント
ファイル名を引用符で囲む必要があるのは、PowerShell のみです。
必要なファイル形式は、スロット設定フィールドが省略可能な接続文字列の JSON 配列です。 次に例を示します。
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
},
...
]
便宜上、az webapp config connection-string list を使用して既存の接続文字列を JSON ファイルに保存できます。 次の例は Bash で実行できます。
# Save the connection strings
az webapp config connection-string list --resource-group <group-name> --name <app-name> > settings.json
# Edit the JSON file
...
# Update the app with the JSON file
az webapp config connection-string set --resource-group <group-name> --name <app-name> --settings @settings.json
Azure PowerShell で JSON ファイルを使用して接続文字列を一括編集することはできません。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。 アプリの左側のメニューで、 [構成] >[全般設定] を選択します。
ここでは、アプリのいくつかの一般的な設定を構成できます。 一部の設定では、より高い価格レベルにスケールアップする 必要があります。
[Stack settings] (スタックの設定) : アプリを実行するためのソフトウェア スタック (言語や SDK バージョンを含む)。
Linux アプリの場合、言語ランタイム バージョンを選択し、任意のスタートアップ コマンド またはスタートアップ コマンド ファイルを設定します。
[プラットフォームの設定] : ホスティング プラットフォームの設定を構成できます。次のものが含まれます。
プラットフォーム ビット数 : 32 ビットまたは 64 ビット。 Windows アプリ専用。
[FTP state](FTP の状態) : FTPS のみを許可するか、FTP を完全に無効にします。
[HTTP version] (HTTP バージョン) :HTTPS/2 プロトコルのサポートを有効にするには、 [2.0] に設定します。
Web ソケット : ASP.NET SignalR や socket.io など。
[常時接続] : トラフィックがない場合も、アプリを読み込まれたままにします。 [常時接続] がオン (既定) でない場合、アプリは受信要求なしで 20 分後にアンロードされます。 アンロードされたアプリでは、ウォームアップ時間のために新しい要求の待機時間が長くなる場合があります。 [常時接続] がオンの場合、フロントエンド ロード バランサーは 5 分ごとにアプリケーション ルートに GET 要求を送信します。 継続的 ping により、アプリがアンロードされるのを防ぎます。
[常時接続] は、継続的な Web ジョブや、CRON 式を使用してトリガーされる Web ジョブに必要です。
[ARR affinity] (ARR アフィニティ) :マルチインスタンス デプロイでは、クライアントがセッションの有効期間を通して同じインスタンスにルーティングされることを確認してください。 ステートレス アプリケーションの場合は、このオプションを [オフ] に設定できます。
HTTPS のみ : 有効にすると、すべての HTTP トラフィックが HTTPS にリダイレクトされます。
最小 TLS バージョン : アプリに必要な最小の TLS 暗号化バージョンを選択してください。
[デバッグ] : ASP.NET 、ASP.NET Core 、または Node.js アプリに対するリモート デバッグを有効にします。 このオプションは、48 時間後に自動的に無効になります。
[Incoming client certificates] (受信クライアント証明書) : 相互認証 でクライアント証明書を必要とします。
az webapp config set を使用して、一般的な構成可能なオプションの多くを設定できます。 次の例は、構成可能なオプションのサブセットを示しています。
az webapp config set --resource-group <group-name> --name <app-name> --use-32bit-worker-process [true|false] --web-sockets-enabled [true|false] --always-on [true|false]--http20-enabled --auto-heal-enabled [true|false] --remote-debugging-enabled [true|false] --number-of-workers
既存の設定を表示するには、az webapp config show コマンドを使用します。
Set-AzWebApp を使用して、一般的な構成可能なオプションの多くを設定できます。 次の例は、構成可能なオプションのサブセットを示しています。
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -Use32BitWorkerProcess [True|False] -WebSocketsEnabled [True|False] -AlwaysOn [True|False] -NumberOfWorkers
既存の設定を表示するには、Get-AzWebApp コマンドを使用します。
この設定は、Windows アプリでのみ使用されます。
既定のドキュメントは、App Service アプリのルート URL に表示される Web ページです。 一覧で最初に一致するファイルが使用されます。 アプリが、静的コンテンツの処理ではなく URL に基づいてルーティングされるモジュールを使用している場合、既定のドキュメントは必要ありません。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のメニューで、 [構成] >[既定のドキュメント] を選択します。
既定のドキュメントを追加するには、[新しいドキュメント] を選択します。 既定のドキュメントを削除するには、その右側にある [削除] を選択します。
az resource update を使用して既定のドキュメントを追加します。
az resource update --resource-group <group-name> --resource-type "Microsoft.Web/sites/config" --name <app-name>/config/web --add properties.defaultDocuments <filename>
更新するアプリの PowerShell オブジェクトを変更して、既定のドキュメントを追加します。
$webapp = Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
$webapp.SiteConfig.DefaultDocuments.Add("<filename>")
Set-AzWebApp $webapp
URL パスをディレクトリにマップする
既定では、App Service はアプリ コードのルート ディレクトリからアプリを起動します。 しかし、特定の Web フレームワークはルート ディレクトリで開始されません。 たとえば、Laravel は public
サブディレクトリで開始されます。 そのようなアプリには、たとえば http://contoso.com/public
でアクセスできますが、通常は、代わりに http://contoso.com
を public
ディレクトリに送信します。 アプリのスタートアップ ファイルが別のフォルダーにあるか、またはリポジトリに複数のアプリケーションが含まれている場合は、仮想アプリケーションおよびディレクトリを編集または追加できます。
重要
物理パス機能への仮想ディレクトリは Windows アプリでのみ利用できます。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のメニューで、[構成] >[Path mappings](パスのマッピング) を選択します。
[新しい仮想アプリケーションまたはディレクトリ] を選択します。
仮想ディレクトリを物理パスにマップするには、 [ディレクトリ] チェック ボックスをオンのままにします。 仮想ディレクトリと、Web サイト ルート (D:\home
) への対応する相対 (物理) パスを指定します。
仮想ディレクトリを Web アプリケーションとしてマークするには、 [ディレクトリ] チェック ボックスをオフにします。
[OK] を選択します。
次の例では、ルート パス /
を public
サブディレクトリ (Laravel で動作) に設定し、/app2
パスにも 2 つ目の仮想アプリケーションを追加します。 実行するには、json.txt
というファイルを作成し、内容を次のようにします。
[
{
"physicalPath"':' "site\\wwwroot\\public",
"preloadEnabled"':' false,
"virtualDirectories"':' null,
"virtualPath"':' "/"
},
{
"physicalPath"':' "site\\wwwroot\\app2",
"preloadEnabled"':' false,
"virtualDirectories"':' null,
"virtualPath"':' "/app2"
}
]
リソースの <group-name>
と <app-name>
を変更し、以下のコマンドを実行します。 このコマンドを実行するときは、エスケープ文字に注意してください。 エスケープ文字の詳細については、「Azure CLI を正しく使用するためのヒント 」を参照してください。
az resource update --resource-group <group-name> --resource-type Microsoft.Web/sites/config --name <app-name>/config/web --set properties.virtualApplications="@json.txt"
次の例では、ルート パス /
を public
サブディレクトリ (Laravel で動作) に設定し、/app2
パスにも 2 つ目の仮想アプリケーションを追加します。 実行するには、<group-name>
と <app-name>
を変更します。
$webapp=Get-AzWebApp -ResourceGroupName <group-name> -Name <app-name>
# Set default / path to public subdirectory
$webapp.SiteConfig.VirtualApplications[0].PhysicalPath= "site\wwwroot\public"
# Add a virtual application
$virtualApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication
$virtualApp.VirtualPath = "/app2"
$virtualApp.PhysicalPath = "site\wwwroot\app2"
$virtualApp.PreloadEnabled = $false
$webapp.SiteConfig.VirtualApplications.Add($virtualApp)
# Save settings
Set-AzWebApp $webapp
Windows アプリの場合は、IIS ハンドラー マッピングや仮想アプリケーションおよびディレクトリをカスタマイズできます。 ハンドラー マッピングを使用すると、特定のファイル拡張子への要求を処理するためのカスタム スクリプト プロセッサを追加できます。
カスタム ハンドラーを追加するには、次の操作を行います。
Azure portal で、 [App Services] を探して選択してから、アプリを選択します。
アプリの左側のメニューで、 [構成] >[Path mappings](パスのマッピング) を選択します。
[新しいハンドラー マッピング] を選択します。 次のようにハンドラーを構成します。
[拡張子] 。 処理するファイル拡張子 (*.php や handler.fcgi など)。
[Script processor] (スクリプト プロセッサ) 。 スクリプト プロセッサの絶対パス。 ファイル拡張子に一致するファイルへの要求は、スクリプト プロセッサによって処理されます。 アプリのルート ディレクトリは D:\home\site\wwwroot
というパスを使って参照します。
[引数] 。 スクリプト プロセッサの省略可能なコマンド ライン引数。
[OK] を選択します。
次のステップ