Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "hidden-link:" mean in Azure Resource Manager Tags

I exported an Azure Resource Manager JSON template from my resource group on Azure. I see a bunch of tags in the generated file like:

"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"
},

The only documentation I can find on it is from Using tags to organize your Azure resources, which says:

You may see tags that start with "hidden-" and "link:". These are internal tags, which you should ignore and avoid changing.

The problem is that I'm going to be deploying this resource template to a completely different subscription than the one whose ID is hard-coded into the tag. Any meaning that the hard-coded subscription id has in this tag will be lost. Can I safely remove this tag? What does it mean, and how is it used once deployed?

like image 574
Seafish Avatar asked Jul 25 '16 22:07

Seafish


People also ask

What are Azure resource tags?

Tags are metadata elements that you apply to your Azure resources. They're key-value pairs that help you identify resources based on settings that are relevant to your organization. If you want to track the deployment environment for your resources, add a key named Environment.

What are the correct features of Azure resource manager?

Azure Resource Manager is the deployment and management service for Azure. It provides a management layer that enables you to create, update, and delete resources in your Azure account. You use management features, like access control, locks, and tags, to secure and organize your resources after deployment.

What is tags in resource group?

A tag is a label that you assign to an AWS resource. A tag consists of a key and a value, both of which you define. For example, if you have two Amazon EC2 instances, you might assign both a tag key of "Stack." But the value of "Stack" might be "Testing" for one and "Production" for the other.


2 Answers

Just to help stop anyone else from wasting a couple of hours in frustration:

Don't remove these tags from your generated ARM template for web tests in Application Insights.

I was wondering if I really needed these tags since they were very specific to the resource that I used to create the template from. Reading this answer I figured that it wasn't necessary so I removed them and promptly forgot about removing them.

The deployment then started failing with the very descriptive error:

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

Putting the "hidden-links" back in seems to fix the issue.

An alternative that makes the script a bit more reusable is specifying the "hidden-link" as follows:

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

Where applicationInsightName is a variable containing the name of the ApplicationInsight instance

like image 184
Klepto Avatar answered Oct 10 '22 19:10

Klepto


These tags are used to associate related resources. They are used to populate the Linked Resources section. Removing the tags will prevent resources from displaying as Linked Resources but will not impact any functionality.

enter image description here

like image 40
BenV Avatar answered Oct 10 '22 18:10

BenV