Inicio rápido: Creación de una instancia de Azure Front Door mediante una plantilla de Resource Manager
En este inicio rápido se muestra cómo usar una plantilla de Azure Resource Manager (ARM) para crear una instancia de Azure Front Door con una aplicación web de Azure como origen.
Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.
Si cumple los requisitos previos y está familiarizado con las plantillas de ARM, seleccione el botón Implementar en Azure para abrir la plantilla en Azure Portal.
Requisitos previos
- Suscripción a Azure. En caso de no tener una, cree una cuenta gratuita.
- La dirección IP o FQDN de un sitio web o una aplicación web.
Revisión de la plantilla
La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.
En este inicio rápido, creará una instancia de Azure Front Door Estándar/Premium, una App Service y configurará la App Service para validar que el tráfico ha llegado a través del origen de Azure Front Door.
{
"$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]"
}
}
}
La plantilla define varios recursos de Azure:
- Microsoft.Network/frontDoors
- Microsoft.Web/serverfarms (Plan de servicio de aplicaciones para hospedar aplicaciones web)
- Microsoft.Web/sites (solicitud de mantenimiento de origen de la aplicación web para Azure Front Door)
Implementación de la plantilla
Seleccione Try It (Probarlo) en el bloque de código siguiente para abrir Azure Cloud Shell y siga las instrucciones para iniciar sesión en Azure.
Nota:
Para implementar Azure Front Door Premium en lugar de Estándar sustituya el valor del parámetro SKU por
Premium_AzureFrontDoor
. Para obtener una comparación detallada, consulte Comparación de niveles de 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 ..."
Espere hasta que vea el aviso de la consola.
Seleccione Copiar en el bloque de código anterior para copiar el script de PowerShell.
Haga clic con el botón derecho en el panel de consola del shell y, a continuación, seleccione Pegar.
Escriba los valores.
La implementación de plantillas crea una instancia de Azure Front Door con una aplicación web como origen.
El nombre del grupo de recursos es el nombre del proyecto con rg anexado.
Nota:
frontDoorName debe ser un nombre globalmente único para que la plantilla se implemente correctamente. Si se produce un error en la implementación, vuelva al paso 1.
La plantilla tarda unos minutos en implementarse. Al finalizar, la salida es parecida a esta:
Azure PowerShell se usa para implementar la plantilla. Además de Azure PowerShell, también puede usar Azure Portal, la CLI de Azure y API REST. Para obtener información sobre otros métodos de implementación, consulte Implementación de plantillas.
Validación de la implementación
Inicie sesión en Azure Portal.
Seleccione Grupos de recursos en el panel izquierdo.
Seleccione el grupo de recursos que creó en la sección anterior. El nombre del grupo de recursos predeterminado es el nombre del proyecto con rg anexado.
Seleccione el Azure Front Door que creó anteriormente y podrá ver el nombre del host del punto de conexión. Copie el nombre de host y péguelo en la barra de direcciones de un explorador. Presione Entrar y la solicitud se enrutará automáticamente a la aplicación web.
Limpieza de recursos
Cuando ya no necesite la instancia de Azure Front Door Service, elimine el grupo de recursos. Esta acción eliminará la instancia de Azure Front Door y todos los recursos relacionados.
Para eliminar el grupo de recursos, llame al cmdlet Remove-AzResourceGroup
:
Remove-AzResourceGroup -Name <your resource group name>
Pasos siguientes
En este inicio rápido, ha creado lo siguiente:
- Azure Front Door
- Plan de App Service
- Aplicación web
Para obtener información sobre cómo agregar un dominio personalizado a la instancia de Azure Front Door, continúe con los tutoriales de Azure Front Door.