Schnellstart: Erstellen von Front Door mithilfe von Bicep

In diesem Schnellstart erfahren Sie, wie Sie Bicep zum Erstellen einer Azure Front Door mit einer Web-App als Ursprungsort verwenden.

Hinweis

Für Webworkloads wird dringend empfohlen, Azure DDoS Protection und eine Webanwendungsfirewall zum Schutz vor neuen DDoS-Angriffen zu verwenden. Eine weitere Möglichkeit besteht darin, Azure Front Door zusammen mit einer Webanwendungsfirewall zu verwenden. Azure Front Door bietet Plattformebenenschutz vor DDoS-Angriffen auf Netzwerkebene. Weitere Informationen finden Sie unter "Sicherheitsbasisplan für Azure-Dienste".

Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Benutzererfahrung für Ihre Infrastructure-as-Code-Lösungen in Azure.

Voraussetzungen

  • Ein aktives Azure-Abonnement. Erstellen Sie ein kostenloses Konto, falls Sie noch keines haben.
  • Die IP-Adresse oder der vollqualifizierter Domänenname (FQDN) einer Website oder Webanwendung

Überprüfen Sie die Bicep-Datei

Die in diesem Schnellstart verwendete Bicep-Datei finden Sie unter den Azure-Schnellstartvorlagen.

In diesem Schnellstart erstellen Sie ein Azure Front Door Profil, einen Azure App Service und konfigurieren den App Service, um zu überprüfen, ob der Datenverkehr über den Azure Front Door Ursprung erfolgt.

@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

Die Bicep-Datei definiert mehrere Azure-Ressourcen:

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei unter dem Namen main.bicep auf Ihrem lokalen Computer.

  2. Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep
    

    Nachdem die Bereitstellung abgeschlossen ist, sollten Sie eine Ausgabe sehen, die der folgenden ähnelt:

    Screenshot von Front Door Bicep PowerShell-Bereitstellungsausgabe.

Bereitstellung validieren

Verwenden Sie die Azure-Befehlszeilenschnittstelle oder Azure PowerShell, um die bereitgestellten Ressourcen in der Ressourcengruppe aufzulisten.

az resource list --resource-group exampleRG

Sie können die Bereitstellung auch über das Azure-Portal überprüfen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im linken Bereich Ressourcengruppen aus.

  3. Wählen Sie die Ressourcengruppe aus, die Sie im vorherigen Abschnitt erstellt haben.

  4. Wählen Sie die von Ihnen erstellte Front Door aus. Der Endpunkt-Hostname wird angezeigt. Kopieren Sie den Hostnamen, und fügen Sie ihn auf der Adressleiste eines Browsers ein. Drücken Sie die EINGABETASTE. Ihre Anforderungen werden an die Web-App weitergeleitet.

    Screenshot der Nachricht: „Ihre Web-App wird ausgeführt und wartet auf Ihre Inhalte“.

Bereinigen von Ressourcen

Wenn der Front Door-Service und die Ressourcengruppe nicht mehr benötigt werden, löschen Sie sie über das Azure-Portal, die Azure CLI oder Azure PowerShell. Die Front Door und alle dazugehörigen Ressourcen werden entfernt.

az group delete --name exampleRG

Nächste Schritte

In diesem Schnellstart haben Sie Folgendes erstellt:

  • Vordertür
  • App Service-Plan
  • Webanwendung

Gehen Sie zu den Front Door-Tutorials über, um zu erfahren, wie Sie Ihrer Front Door eine benutzerdefinierte Domäne hinzufügen.