Inicio rápido: Creación de una instancia de Front Door mediante Bicep
Este inicio rápido le guía por el uso de Bicep para crear una instancia de Azure Front Door con una aplicación web como origen.
Nota:
En el caso de las cargas de trabajo web, se recomienda encarecidamente usar la protección contra DDoS de Azure y un firewall de aplicaciones web para protegerse frente a posibles ataques DDoS. Otra opción es emplear Azure Front Door junto con un firewall de aplicaciones web. Azure Front Door ofrece protección de nivel de plataforma frente a ataques DDoS de nivel de red. Para más información, consulte línea base de seguridad para los servicios de Azure.
Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. Brinda sintaxis concisa, seguridad de tipos confiable y compatibilidad con la reutilización de código. Bicep ofrece la mejor experiencia de creación para sus soluciones de infraestructura como código en Azure.
Requisitos previos
- Una suscripción de Azure activa. 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 del archivo de Bicep
El archivo de Bicep que se usa en este inicio rápido está disponible en Plantillas de inicio rápido de Azure.
En este inicio rápido, creará un perfil de Azure Front Door, una instancia de Azure App Service y configurará el servicio de aplicaciones para validar que el tráfico pasa por el origen de Azure Front Door.
@description('The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource.')
param location string = resourceGroup().location
@description('The name of the App Service application to create. This must be globally unique.')
param appName string = 'myapp-${uniqueString(resourceGroup().id)}'
@description('The name of the SKU to use when creating the App Service plan.')
param appServicePlanSkuName string = 'S1'
@description('The number of worker instances of your App Service plan that should be provisioned.')
param appServicePlanCapacity int = 1
@description('The name of the Front Door endpoint to create. This must be globally unique.')
param frontDoorEndpointName string = 'afd-${uniqueString(resourceGroup().id)}'
@description('The name of the SKU to use when creating the Front Door profile.')
@allowed([
'Standard_AzureFrontDoor'
'Premium_AzureFrontDoor'
])
param frontDoorSkuName string = 'Standard_AzureFrontDoor'
var appServicePlanName = 'AppServicePlan'
var frontDoorProfileName = 'MyFrontDoor'
var frontDoorOriginGroupName = 'MyOriginGroup'
var frontDoorOriginName = 'MyAppServiceOrigin'
var frontDoorRouteName = 'MyRoute'
resource frontDoorProfile 'Microsoft.Cdn/profiles@2021-06-01' = {
name: frontDoorProfileName
location: 'global'
sku: {
name: frontDoorSkuName
}
}
resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
capacity: appServicePlanCapacity
}
kind: 'app'
}
resource app 'Microsoft.Web/sites@2020-06-01' = {
name: appName
location: location
kind: 'app'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: appServicePlan.id
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': [
frontDoorProfile.properties.frontDoorId
]
}
name: 'Allow traffic from Front Door'
}
]
}
}
}
resource frontDoorEndpoint 'Microsoft.Cdn/profiles/afdEndpoints@2021-06-01' = {
name: frontDoorEndpointName
parent: frontDoorProfile
location: 'global'
properties: {
enabledState: 'Enabled'
}
}
resource frontDoorOriginGroup 'Microsoft.Cdn/profiles/originGroups@2021-06-01' = {
name: frontDoorOriginGroupName
parent: frontDoorProfile
properties: {
loadBalancingSettings: {
sampleSize: 4
successfulSamplesRequired: 3
}
healthProbeSettings: {
probePath: '/'
probeRequestType: 'HEAD'
probeProtocol: 'Http'
probeIntervalInSeconds: 100
}
}
}
resource frontDoorOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2021-06-01' = {
name: frontDoorOriginName
parent: frontDoorOriginGroup
properties: {
hostName: app.properties.defaultHostName
httpPort: 80
httpsPort: 443
originHostHeader: app.properties.defaultHostName
priority: 1
weight: 1000
}
}
resource frontDoorRoute 'Microsoft.Cdn/profiles/afdEndpoints/routes@2021-06-01' = {
name: frontDoorRouteName
parent: frontDoorEndpoint
dependsOn: [
frontDoorOrigin // This explicit dependency is required to ensure that the origin group is not empty when the route is created.
]
properties: {
originGroup: {
id: frontDoorOriginGroup.id
}
supportedProtocols: [
'Http'
'Https'
]
patternsToMatch: [
'/*'
]
forwardingProtocol: 'HttpsOnly'
linkToDefaultDomain: 'Enabled'
httpsRedirect: 'Enabled'
}
}
output appServiceHostName string = app.properties.defaultHostName
output frontDoorEndpointHostName string = frontDoorEndpoint.properties.hostName
El archivo de Bicep define diversos recursos de Azure:
- Microsoft.Cdn/profiles - Perfil de Azure Front Door Standard/Premium
- Microsoft.Web/serverfarms - Plan de App Service para hospedar aplicaciones web
- Microsoft.Web/sites - Solicitudes de mantenimiento de origen de aplicaciones web para Front Door
Implementación del archivo de Bicep
Guarde el archivo de Bicep como main.bicep en el equipo local.
Implemente el archivo de Bicep mediante la CLI de Azure o Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep
Una vez completada la implementación, debería ver una salida similar a la siguiente:
Validación de la implementación
Use la CLI de Azure o Azure PowerShell para enumerar los recursos implementados en el grupo de recursos.
az resource list --resource-group exampleRG
También puede validar la implementación mediante Azure Portal.
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.
Seleccione la instancia de Front Door que ha creado. Verá el nombre de 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 las solicitudes se enrutarán a la aplicación web.
Limpieza de recursos
Cuando ya no los necesite, use Azure Portal, la CLI de Azure o Azure PowerShell para eliminar el servicio Front Door y el grupo de recursos. Esta acción elimina la instancia de Front Door y todos los recursos relacionados.
az group delete --name exampleRG
Pasos siguientes
En este inicio rápido, ha creado lo siguiente:
- Front Door
- Plan de App Service
- Aplicación web
Para obtener información sobre cómo agregar un dominio personalizado a Front Door, continúe con los tutoriales de Front Door.