你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用模板创建 Web 应用和 Azure Redis 缓存
本文介绍如何创建 Azure 资源管理器模板来部署包含 Azure Cache for Redis 的 Azure Web 应用。 你将了解以下部署详细信息:
- 如何定义部署的资源
- 如何定义执行部署时指定的参数
可将此模板用于自己的部署,或自定义此模板以满足要求。
有关创建模板的详细信息,请参阅创作 Azure 资源管理器模板。 若要了解缓存资源类型的 JSON 语法和属性,请参阅 Microsoft.Cache 资源类型。
有关完整的模板,请参阅包含 Azure Redis 缓存的 Web 应用模板。
将部署的内容
在此模板中,你将部署:
- Azure Web 应用
- 用于 Redis 的 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.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
}
}
]
}
Web 应用 (RedisEnterprise)
对于 RedisEnterprise,由于资源类型略有不同,执行 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)]"
}
}
]
}
运行部署的命令
要将资源部署到 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