【发布时间】:2020-05-07 17:00:17
【问题描述】:
我正在尝试通过 ARM 模板部署 Redis 并保持 Redis 主机名的唯一性,我将资源组名称添加到它前面:
"variables": {
"resourceName": "[concat(resourceGroup().id, '-', parameters('redisCacheName'))]"
},
但是我突然得到以下错误,搜索它给出了截然不同的答案:
部署模板验证失败:'模板资源'/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/resourceGroups/my-group-my-redis' 类型为'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Common.Entities .TemplateGenericProperty`1[System.String]' 在第 '1' 行和第 '640' 列的段长度不正确。
嵌套资源类型的段数必须与其资源名称相同。根资源类型的段长度必须比其资源名称大一。请参阅https://aka.ms/arm-template/#resources 了解使用详情。'。
当我尝试部署 Basic Redis 实例时,我不明白为什么会提到一些“前门”,请问这里的修复方法是什么?
下面是我的 ARM 模板:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"redisCacheName": {
"defaultValue": "my-redis",
"type": "String"
}
},
"variables": {
"resourceName": "[concat(resourceGroup().id, '-', parameters('redisCacheName'))]"
},
"outputs": {
"RedisCacheEndpoint": {
"type": "string",
"value": "[concat(reference(variables('resourceName')).hostName, ':', reference(variables('resourceName')).sslPort)]"
},
"RedisCachePassword": {
"type": "string",
"value": "[reference(variables('resourceName')).accessKeys.primaryKey]"
}
},
"resources": [
{
"type": "Microsoft.Cache/Redis",
"apiVersion": "2019-07-01",
"name": "[variables('resourceName')]",
"location": "[resourceGroup().location]",
"properties": {
"sku": {
"name": "Basic",
"family": "C",
"capacity": 1
},
"enableNonSslPort": false
}
}
]
}
这里是参数文件:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"redisCacheName": {
"value": "my-redis"
}
}
}
我正在尝试将 Redis 实例部署到名为“my-group”的 RG 中,并且在部署时我使用参数值“my-redis”-
虽然希望最后有一个具有唯一名称“my-group-my-redis.redis.cache.windows.net:6380”的 Redis 端点。
【问题讨论】:
标签: azure redis azure-resource-manager arm-template azure-template