我从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"
},
我能找到的唯一文件来自Using tags to organize your Azure resources,其中包含:
您可能会看到以"隐藏的标签 - "和"链接:"。这些是内部标记,您应该忽略它们并避免更改。
问题在于,我要将此资源模板部署到与ID被硬编码到标记中的订阅完全不同的订阅中。硬编码订阅ID在此标记中的任何含义都将丢失。我可以安全地删除此标签吗?它是什么意思,一旦部署后如何使用?
答案 0 :(得分:7)
答案 1 :(得分:3)
只是为了帮助阻止其他人浪费数小时的挫败感:
请勿从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"
}
}
重新插入“隐藏链接”似乎可以解决此问题。
使脚本更具可重用性的另一种方法是指定“隐藏链接”,如下所示:
"tags": { "[concat('hidden-link:', resourceId('Microsoft.Insights/components', parameters('appInsightsName')))]": "Resource" }
applicationInsightName
是一个包含ApplicationInsight实例名称的变量
答案 2 :(得分:0)
Azure资源管理器(ARM)标记对于Azure资源或Azure资源组是可选的。
您可以安全地删除任何标记,而不会影响您的ARM部署。