使用模板创建 Web 应用和 Azure Redis 缓存

本文介绍如何创建 Azure 资源管理器模板来部署包含 Azure Cache for Redis 的 Azure Web 应用。 你将了解以下部署详细信息:

  • 如何定义部署的资源
  • 如何定义执行部署时指定的参数

可将此模板用于自己的部署,或自定义此模板以满足要求。

有关创建模板的详细信息,请参阅创作 Azure 资源管理器模板。 若要了解缓存资源类型的 JSON 语法和属性,请参阅 Microsoft.Cache 资源类型

有关完整的模板,请参阅包含 Azure Redis 缓存的 Web 应用模板

将部署的内容

在此模板中,你将部署:

  • Azure Web 应用
  • 用于 Redis 的 Azure 缓存

若要自动运行部署,请选择以下按钮:

Deploy to Azure

要指定的参数

使用 Azure 资源管理器,可以定义在部署模板时想要指定的值的参数。 该模板具有一个名为 Parameters 的部分,其中包含所有参数值。 应该为随着要部署的项目或要部署到的环境而变化的值定义参数。 不要为永远保持不变的值定义参数。 每个参数值可在模板中用来定义所部署的资源。

在定义参数时,请使用 allowedValues 字段来指定用户在部署过程中可以提供哪些值。 如果在部署过程中未提供任何值,请使用 defaultValue 字段为该参数赋值。

下面介绍模板中的每个参数。

siteName

要创建的 Web 应用的名称。

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

hostingPlanName

用于托管 Web 应用的应用服务计划的名称。

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

sku

托管计划的定价层。

"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."
  }
}

模板将定义此参数允许的值,如果未指定任何值,则分配默认值 (S1)。

workerSize

托管计划的实例大小(small、medium 或 large)。

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

模板将定义此参数允许的值(0、1 或 2),如果未指定任何值,则分配默认值 (0)。 这些值分别对应于 small、medium 和 large。

cacheSKUName

新 Azure Redis 缓存的定价层。

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

模板定义此参数允许的值(基本、标准或高级),如果未指定任何值,则分配默认值(基本)。 Basic 提供单个节点,该节点具有多种大小,最大大小为 53 GB。 Standard 提供“主/副本”两个节点,这些节点具有多种大小(最大 53 GB)并提供 99.9% SLA。

cacheSKUFamily

SKU 的系列。

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

cacheSKUCapacity

新 Azure Redis 缓存实例的大小。

对于“基本”和“标准”系列:

    "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. "
      }
    }

“高级”值缓存容量的定义相同,不同之处在于允许的值为 1-5,而不是 0-6。

模板定义此参数允许的整数值(“基本”和“标准”系列为 0-6,“高级”系列为 1-5)。 如果未指定任何值,则模板将为“基本”和“标准”系列分配默认值 0,为“高级”系列分配 1。

这些值对应于以下缓存大小:

“基本”和“标准”
缓存大小
高级
缓存大小
0 250 MB(默认值) 不适用
1 1GB 6 GB(默认值)
2 2.5 GB 13 GB
3 6 GB 26 GB
4 13 GB 53 GB
5 26 GB 120 GB
6 53 GB n/a

名称变量

此模板使用变量来构造资源的名称。 它使用 uniqueString 函数来构造基于资源组 ID 的值。

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

要部署的资源

应用服务计划

创建用于托管 Web 应用的服务计划。 通过 hostingPlanName 参数提供计划的名称。 计划的位置与用于资源组的位置相同。 定价层和辅助角色大小在 sku 和 workerSize 参数中指定

{
  "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')]"
  }
},

用于 Redis 的 Azure 缓存

创建用于 Web 应用的 Azure Redis 缓存。 缓存的名称在 cacheName 变量中指定。

该模板会在资源组所在的同一位置中创建缓存。

{
  "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 应用 (Azure Cache for Redis)

使用 webSiteName 变量中指定的名称创建 Web 应用。

请注意,在 Web 应用中配置的应用设置属性使其可与 Azure Redis 缓存配合工作。 这些应用设置是根据部署期间提供的值动态创建的。

{
  "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.chinacloudapi.cn,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

运行部署的命令

要将资源部署到 Azure,必须登录到 Azure 帐户,并且必须使用 Azure 资源管理器模块。 若要了解配合使用 Azure 资源管理器和 Azure PowerShell 或 Azure CLI 的相关信息,请参阅:

以下示例假定帐户中已具有一个指定名称的资源组。

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 CLI

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