如何在不破坏ARM模板的情况下将资源组名称预先设置为redis名称



我正试图通过ARM模板部署Redis,为了保持Redis主机名的唯一性,我在其前面加上了资源组名称:

"variables": {
"resourceName": "[concat(resourceGroup().id, '-', parameters('redisCacheName'))]"
},

然而,我突然得到了以下错误,搜索得到了截然不同的答案:

部署模板验证失败:类型为"Microsoft"的"模板资源"/订阅/XXXXXXXX-XXXX-XXXX-XXXXXXXX/resourceGroups/my group my redis"。WindowsAzure。ResourceStack。前门。常见的实体。第"1"行和第"640"列的TemplateGenericProperty"1[System.String]"的段长度不正确。

嵌套资源类型的段数必须与其资源名称相同。根资源类型的段长度必须比其资源名称大一。请参阅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实例部署到我的RG中,称为";我的小组";并且在部署时,我使用参数值"0";我的redis"-

同时希望具有具有唯一名称"的Redis端点;我的组my-redis.redis.cache.windows.net:6380";最后。

如果使用了错误的方法,应该使用以下方法:

"[concat(resourceGroup().name, '-', parameters('redisCacheName'))]"

最新更新