Azure资源管理器标记中的"隐藏链接:"是什么意思

Sea*_*ish 10 azure azure-resource-manager azure-resource-group

我从Azure上的资源组导出了Azure Resource Manager JSON模板.我在生成的文件中看到一堆标签,如:

"tags": {
    "hidden-link:/subscriptions/[my-subscription-id-here]/resourceGroups/[my-resource-group]/providers/Microsoft.Sql/servers/[my-database-server-name]/databases/[my-database-name]": "Resource"
},
Run Code Online (Sandbox Code Playgroud)

我可以在其上找到的唯一文档来自使用标记来组织Azure资源,其中说:

您可能会看到以"hidden-"和"link:"开头的标签.这些是内部标记,您应该忽略它们并避免更改.

问题是我将要将此资源模板部署到与其ID被硬编码到标记中的订阅完全不同的订阅.硬编码订阅ID在此标记中的任何含义都将丢失.我可以安全地删除此标签吗?它是什么意思,一旦部署后如何使用?

Ben*_*enV 8

这些标记用于关联相关资源.它们用于填充"链接的资源"部分.删除标记将阻止资源显示为链接资源,但不会影响任何功能.

在此输入图像描述

  • @MaximeGélinas 我不知道它还存在。 (2认同)

Kle*_*pto 8

只是为了帮助防止其他人浪费数小时的挫败感:

不要从Application Insights中用于Web测试的生成的ARM模板中删除这些标签。

我想知道我是否真的需要这些标签,因为它们非常特定于我用来创建模板的资源。阅读此答案,我认为没有必要,因此我将其删除,并立即忘记删除它们。

然后,部署开始失败,出现非常描述性的错误:

{
 "code": "BadRequest",
 "message": "{
   "code": "BadRequest",
   "message": "Bad Request\",
   "innererror": 
    {
       "diagnosticcontext": "d657bd3b-6b5f-4b24-8963-c2e9ac76a65b\",
       "time": "2019-02-05T13:37:23.6473698Z"
    }
}
Run Code Online (Sandbox Code Playgroud)

放回“隐藏链接”似乎可以解决此问题。

使脚本更具可重用性的另一种方法是指定“隐藏链接”,如下所示:

"tags": { "[concat('hidden-link:', resourceId('Microsoft.Insights/components', parameters('appInsightsName')))]": "Resource" }
Run Code Online (Sandbox Code Playgroud)

其中applicationInsightName包含ApplicationInsight实例名称的变量在哪里

  • 或者在较短的版本中,您可以只使用`resourceId`帮助函数而不是`concat`。`“ tags”:{“ [concat('hidden-link:',resourceId('Microsoft.Insights / components',parameters('appInsightsName'))))”:“资源”}` (3认同)