如何在不破坏arm模板的情况下将资源组名称预先添加到redis名称?

2ekbmq32  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(309)

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

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

然而,我突然得到了以下错误,搜索得到的答案大相径庭:
部署模板验证失败:行“1”和列“640”处类型“microsoft.windowsazure.resourcestack.frontdoor.common.entities.templategenericproperty“1[system.string]”的“模板资源“/subscriptions/XXXXXXXXXXXX-x-xx-xx/resourcegroups/my group my redis”具有不正确的段长度。
嵌套资源类型的段数必须与其资源名称相同。根资源类型的段长度必须大于其资源名称。请看https://aka.ms/arm-template/#resources 有关用法的详细信息。
我不明白为什么会提到一些“前门”,当我试图部署一个基本的redis示例时,这里的修复方法是什么?
下面是我的手臂模板:

{
    "$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”的redis端点。net:6380“最后。

de90aj5v

de90aj5v1#

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

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

相关问题