Erstellen einer Web-App und eines Azure Cache for Redis mithilfe einer Vorlage

In diesem Artikel erfahren Sie, wie Sie eine Azure Resource Manager-Vorlage erstellen, die eine Azure Web-App mit einem Azure Cache for Redis bereitstellt. Sie lernen die folgenden Bereitstellungsdetails kennen:

  • Definieren der bereitzustellenden Ressourcen
  • Definieren von Parametern, die angegeben werden, wenn die Bereitstellung ausgeführt wird

Sie können diese Vorlage für Ihre eigenen Bereitstellungen verwenden oder an Ihre Anforderungen anpassen.

Weitere Informationen zum Erstellen von Vorlagen finden Sie unter Erstellen von Azure Resource Manager-Vorlagen. Weitere Informationen zur JSON-Syntax und den Eigenschaften für Cacheressourcentypen finden Sie unter Microsoft.Cache resource types (Microsoft.Cache-Ressourcentypen).

Die vollständige Vorlage finden Sie unter Web-App mit Azure Cache for Redis-Vorlage.

Was Sie bereitstellen

In dieser Vorlage stellen Sie Folgendes bereit:

  • Azure-Web-App
  • Azure Cache for Redis

Wählen Sie die folgende Schaltfläche, um die Bereitstellung automatisch auszuführen:

Deploy to Azure

Anzugebende Parameter

Mit Azure Resource Manager definieren Sie die Parameter für Werte, die Sie bei der Bereitstellung der Vorlage angeben möchten. Die Vorlage enthält einen Abschnitt namens "Parameters", der alle Parameterwerte enthält. Sie sollten einen Parameter für die Werte definieren, die basierend auf dem bereitgestellten Projekt oder der bereitgestellten Umgebung variieren. Definieren Sie keine Parameter für Werte, die konstant sind. Jeder Parameterwert wird in der Vorlage verwendet, um die bereitgestellten Ressourcen zu definieren.

Verwenden Sie beim Definieren von Parametern das Feld allowedValues , um anzugeben, welche Werte ein Benutzer während der Bereitstellung angeben kann. Verwenden Sie das Feld defaultValue , um dem Parameter einen Wert zuweisen, wenn kein Wert während der Bereitstellung angegeben wird.

Nachfolgend wird jeder der in der Vorlage verwendeten Parameter beschrieben.

siteName

Der Name der Web-App, die Sie erstellen möchten.

"siteName":{
  "type":"string"
}

hostingPlanName

Der Name des App Service-Plans zum Hosten der Web-App.

"hostingPlanName":{
  "type":"string"
}

sku

Der Tarif für den Hostingplan.

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3",
    "P1",
    "P2",
    "P3",
    "P4"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

Die Vorlage definiert die Werte, die für diesen Parameter zulässig sind, und weist einen Standardwert von S1 zu, wenn kein Wert angegeben wird.

workerSize

Die Instanzgröße des Hostingplans (klein, mittel oder groß).

"workerSize":{
  "type":"string",
  "allowedValues":[
    "0",
    "1",
    "2"
  ],
  "defaultValue":"0"
}

Die Vorlage definiert die Werte, die für diesen Parameter zulässig sind(0, 1 oder 2), und weist einen Standardwert von 0 zu, wenn kein Wert angegeben wird. Die Werte entsprechen klein, mittel und groß.

cacheSKUName

Der Tarif der neuen Azure Cache for Redis-Instanz.

    "cacheSKUName": {
      "type": "string",
      "allowedValues": [
        "Basic",
        "Standard",
        "Premium"
      ],
      "defaultValue": "Basic",
      "metadata": {
        "description": "The pricing tier of the new Azure Cache for Redis."
      }
    },

Die Vorlage definiert die Werte, die für diesen Parameter zulässig sind (Basic, Standard oder Premium), und weist einen Standardwert (Basic) zu, wenn kein Wert angegeben wird. "Basic" bietet einen einzelnen Knoten mit mehreren Größen bis zu 53 GB. "Standard" bietet zwei Knoten, Primär/Replikat, mit mehreren Größen bis zu 53 GB und 99,9% SLA.

cacheSKUFamily

Die SKU-Familie.

    "cacheSKUFamily": {
      "type": "string",
      "allowedValue/s": [
        "C",
        "P"
      ],
      "defaultValue": "C",
      "metadata": {
        "description": "The family for the sku."
      }
    },

cacheSKUCapacity

Die Größe der neuen Azure Cache for Redis-Instanz.

Für die Basic- und Standard-Familien:

    "cacheSKUCapacity": {
      "type": "int",
      "allowedValues": [
        0,
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "defaultValue": 0,
      "metadata": {
        "description": "The size of the new Azure Cache for Redis instance. "
      }
    }

Die Cachekapazität des Premium-Werts ist gleich definiert, außer dass die zulässigen Werte von 1 bis 5 statt von 0 bis 6 reichen.

Die Vorlage definiert die ganzzahligen Werte, die für diesen Parameter zulässig sind (0 bis 6 für die Basic- und Standard-Familie; 1 bis 5 für die Premium-Familie). Wenn kein Wert angegeben ist, weist die Vorlage einen Standardwert von 0 für Basic und Standard, 1 für Premium zu.

Diese Werte entsprechen den folgenden Cachegrößen:

Wert Basic und Standard.
Cachegröße
Premium
Cachegröße
0 250 MB (Standard)
1 1 GB 6 GB (Standard)
2 2,5 GB 13 GB
3 6 GB 26 GB
4 13 GB 53 GB
5 26 GB 120 GB
6 53 GB Nicht zutreffend

Variablen für Namen

Diese Vorlage verwendet Variablen für die Erstellung von Namen für die Ressourcen. Sie verwendet die uniqueString-Funktion , um einen Wert basierend auf der Ressourcengruppen-ID zu erstellen.

"variables": {
  "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]",
  "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
  "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]"
},

Bereitzustellende Ressourcen

App Service-Plan

Erstellt den Dienstplan zum Hosten der Web-App. Geben Sie den Namen des Plans über den hostingPlanName -Parameter an. Der Speicherort des Plans ist mit demjenigen für die Ressourcengruppe identisch. Der Tarif und die Workergröße werden in den Parametern sku und workerSize angegeben.

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('hostingPlanName')]",
  "type": "Microsoft.Web/serverfarms",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('sku')]",
    "capacity": "[parameters('workerSize')]"
  },
  "properties": {
    "name": "[parameters('hostingPlanName')]"
  }
},

Azure Cache for Redis

Erstellt den Azure Cache for Redis, der mit der Web-App verwendet werden soll. Der Name des Cache wird in der cacheName -Variablen angegeben.

Die Vorlage erstellt den Cache am gleichen Speicherort wie die Ressourcengruppe.

{
  "name": "[variables('cacheName')]",
  "type": "Microsoft.Cache/Redis",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-08-01",
  "dependsOn": [ ],
  "tags": {
    "displayName": "cache"
  },
  "properties": {
    "sku": {
      "name": "[parameters('cacheSKUName')]",
      "family": "[parameters('cacheSKUFamily')]",
      "capacity": "[parameters('cacheSKUCapacity')]"
    }
  }
}

Web-App (Azure Cache for Redis)

Erstellt die Web-App mit dem Namen, der in der webSiteName -Variablen angegeben ist.

Beachten Sie, dass die Web-App mit App-Einstellungseigenschaften konfiguriert ist, die es der App ermöglichen, den Azure Cache for Redis zu verwenden. Diese App-Einstellungen werden dynamisch anhand der Werte erstellt, die während der Bereitstellung angegeben wurden.

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

Web-App (RedisEnterprise)

Da sich für RedisEnterprise die Ressourcentypen geringfügig unterscheiden, unterscheidet sich die Vorgehensweise für listKeys:

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/RedisEnterprise/databases/', variables('cacheName'), "/default")]",
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/RedisEnterprise', variables('cacheName'), 'default'), '2020-03-01').primaryKey)]"
      }
    }
  ]
}

Befehle zum Ausführen der Bereitstellung

Um die Ressourcen in Azure bereitzustellen, müssen Sie bei Ihrem Azure-Konto angemeldet sein und das Azure Resource Manager-Modul verwenden. Informationen zum Verwenden des Azure-Ressourcen-Managers mit Azure PowerShell oder der Azure-Befehlszeilenschnittstelle finden Sie hier:

Bei den folgenden Beispielen wird davon ausgegangen, dass Sie in Ihrem Konto bereits über eine Ressourcengruppe mit dem angegebenen Namen verfügen.

PowerShell

New-AzResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -ResourceGroupName ExampleDeployGroup

Azure-Befehlszeilenschnittstelle

azure group deployment create --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup