適用対象: ✔️ Front Door Standard ✔️ Front Door Premium
このクイックスタートでは、Azure Resource Manager (ARM) テンプレートを使って、Azure Web アプリを配信元とする Azure Front Door を作成する方法を示します。
Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するプログラミング コマンドのシーケンスを記述しなくても、そのデプロイに関する意図を記述できます。
前提条件を満たしていて、ARM テンプレートに慣れている場合は、[Azure へのデプロイ] ボタンを選んで Azure portal でテンプレートを開きます。
前提条件
- Azure サブスクリプション。 アカウントがない場合は、無料アカウントを作成してください。
- Web サイトまたはアプリケーションの IP または FQDN。
テンプレートを確認する
このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。
このクイックスタートでは、Azure Front Door Standard/Premium (App Service) を作成し、トラフィックを Azure Front Door の配信元を介して受信したことを検証するように App Service を構成します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "1359495056007144414"
}
},
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource."
}
},
"appName": {
"type": "string",
"defaultValue": "[format('myapp-{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the App Service application to create. This must be globally unique."
}
},
"appServicePlanSkuName": {
"type": "string",
"defaultValue": "S1",
"metadata": {
"description": "The name of the SKU to use when creating the App Service plan."
}
},
"appServicePlanCapacity": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The number of worker instances of your App Service plan that should be provisioned."
}
},
"frontDoorEndpointName": {
"type": "string",
"defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the Front Door endpoint to create. This must be globally unique."
}
},
"frontDoorSkuName": {
"type": "string",
"defaultValue": "Standard_AzureFrontDoor",
"allowedValues": [
"Standard_AzureFrontDoor",
"Premium_AzureFrontDoor"
],
"metadata": {
"description": "The name of the SKU to use when creating the Front Door profile."
}
}
},
"variables": {
"appServicePlanName": "AppServicePlan",
"frontDoorProfileName": "MyFrontDoor",
"frontDoorOriginGroupName": "MyOriginGroup",
"frontDoorOriginName": "MyAppServiceOrigin",
"frontDoorRouteName": "MyRoute"
},
"resources": [
{
"type": "Microsoft.Cdn/profiles",
"apiVersion": "2021-06-01",
"name": "[variables('frontDoorProfileName')]",
"location": "global",
"sku": {
"name": "[parameters('frontDoorSkuName')]"
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2020-06-01",
"name": "[variables('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('appServicePlanSkuName')]",
"capacity": "[parameters('appServicePlanCapacity')]"
},
"kind": "app"
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-06-01",
"name": "[parameters('appName')]",
"location": "[parameters('location')]",
"kind": "app",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"httpsOnly": true,
"siteConfig": {
"detailedErrorLoggingEnabled": true,
"httpLoggingEnabled": true,
"requestTracingEnabled": true,
"ftpsState": "Disabled",
"minTlsVersion": "1.2",
"ipSecurityRestrictions": [
{
"tag": "ServiceTag",
"ipAddress": "AzureFrontDoor.Backend",
"action": "Allow",
"priority": 100,
"headers": {
"x-azure-fdid": [
"[reference(resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))).frontDoorId]"
]
},
"name": "Allow traffic from Front Door"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"[resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))]"
]
},
{
"type": "Microsoft.Cdn/profiles/afdEndpoints",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]",
"location": "global",
"properties": {
"enabledState": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))]"
]
},
{
"type": "Microsoft.Cdn/profiles/originGroups",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]",
"properties": {
"loadBalancingSettings": {
"sampleSize": 4,
"successfulSamplesRequired": 3
},
"healthProbeSettings": {
"probePath": "/",
"probeRequestType": "HEAD",
"probeProtocol": "Http",
"probeIntervalInSeconds": 100
}
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))]"
]
},
{
"type": "Microsoft.Cdn/profiles/originGroups/origins",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]",
"properties": {
"hostName": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]",
"httpPort": 80,
"httpsPort": 443,
"originHostHeader": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]",
"priority": 1,
"weight": 1000
},
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('appName'))]",
"[resourceId('Microsoft.Cdn/profiles/originGroups', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]"
]
},
{
"type": "Microsoft.Cdn/profiles/afdEndpoints/routes",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]",
"properties": {
"originGroup": {
"id": "[resourceId('Microsoft.Cdn/profiles/originGroups', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]"
},
"supportedProtocols": [
"Http",
"Https"
],
"patternsToMatch": [
"/*"
],
"forwardingProtocol": "HttpsOnly",
"linkToDefaultDomain": "Enabled",
"httpsRedirect": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]",
"[resourceId('Microsoft.Cdn/profiles/originGroups/origins', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]",
"[resourceId('Microsoft.Cdn/profiles/originGroups', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]"
]
}
],
"outputs": {
"appServiceHostName": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]"
},
"frontDoorEndpointHostName": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName]"
}
}
}
このテンプレートには、複数の Azure リソースが定義されています。
- Microsoft.Network/frontDoors
- Microsoft.Web/serverfarms (Web アプリをホストするための App Service プラン)
- Microsoft.Web/sites (Azure Front Door の Web アプリの配信元サービス要求)
テンプレートのデプロイ
次のコード ブロックの [使ってみる] を選択して Azure Cloud Shell を開き、指示に従って Azure にサインインします。
注
Standard ではなく Azure Front Door Premium をデプロイするには、sku パラメーターの値を
Premium_AzureFrontDoor
に置き換えます。 詳細な比較については、 「Azure Front Door レベルの比較」を参照してください。$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names" $location = Read-Host -Prompt "Enter the location (i.e. centralus)" $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.cdn/front-door-standard-premium-app-service-public/azuredeploy.json" $resourceGroupName = "${projectName}rg" New-AzResourceGroup -Name $resourceGroupName -Location "$location" New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -frontDoorSkuName Standard_AzureFrontDoor Read-Host -Prompt "Press [ENTER] to continue ..."
コンソールからプロンプトが表示されるまで待ちます。
前のコード ブロックから [コピー] を選択して、PowerShell スクリプトをコピーします。
シェル コンソール ウィンドウを右クリックし、 [貼り付け] を選択します。
値を入力します。
テンプレートのデプロイにより、Web アプリを配信元とした Azure Front Door が作成されます。
リソース グループの名前は、rg が付加されたプロジェクト名です。
注
テンプレートが正常にデプロイされるためには、frontDoorName がグローバルに一意の名前である必要があります。 デプロイが失敗した場合は、手順 1. からやり直します。
テンプレートのデプロイには数分かかります。 完了すると、次のように出力されます。
テンプレートをデプロイするには Azure PowerShell を使用します。 Azure PowerShell だけでなく、Azure portal、Azure CLI、および REST API を使用することもできます。 他のデプロイ方法については、「テンプレートのデプロイ」を参照してください。
デプロイの検証
Azure portal にサインインします。
左側のウィンドウから [リソース グループ] を選択します。
前のセクションで作成したリソース グループを選択します 既定のリソース グループ名は、プロジェクト名に rg が追加されたものです。
以前に作成した Azure Front Door を選択すると、エンドポイントのホスト名が表示されます。 ホスト名をコピーし、ブラウザーのアドレス バーに貼り付けます。 Enter キーを押すと、要求が自動的に Web アプリにルーティングされます。
リソースをクリーンアップする
Azure Front Door サービスが必要なくなったら、リソース グループを削除します。 これにより、Azure Front Door とすべての関連リソースが削除されます。
リソース グループを削除するには、Remove-AzResourceGroup
コマンドレットを呼び出します。
Remove-AzResourceGroup -Name <your resource group name>
次のステップ
このクイックスタートでは、次のものを作成しました。
- Azure Front Door(アジュール フロント ドア)
- App Service プラン
- Web アプリ
Azure Front Door にカスタム ドメインを追加する方法を学習するには、Azure Front Door のチュートリアルに進んでください。