Usare tag per organizzare le risorse di Azure

I tag vengono applicati alle risorse di Azure per organizzarle in modo logico in categorie. Ogni tag è costituito da un nome e un valore. Ad esempio, è possibile applicare il nome "Environment" e il valore "Production" a tutte le risorse nell'ambiente di produzione. Senza questo tag, potrebbe essere difficile stabilire se una risorsa è destinata allo sviluppo, al testing o alla produzione. "Environment" e "Production" sono solo esempi. È possibile definire i nomi e i valori più adatti per organizzare la sottoscrizione.

Dopo aver applicato i tag, è possibile recuperare tutte le risorse nella sottoscrizione che hanno un nome e un valore di tag corrispondenti. I tag permettono di recuperare risorse correlate che si trovano in gruppi di risorse diversi. Questo approccio può risultare utile per l'organizzazione delle risorse per la fatturazione o la gestione.

Ai tag si applicano le limitazioni seguenti:

  • Ogni risorsa o gruppo di risorse può avere un massimo di 15 coppie nome-valore di tag. Questa limitazione si applica solo ai tag applicati direttamente al gruppo di risorse o alla risorsa. Un gruppo di risorse può contenere più risorse ognuna con 15 coppie nome-valore di tag.
  • Il nome del tag è limitato a 512 caratteri e il valore del tag è limitato a 256 caratteri. Per gli account di archiviazione, il nome del tag è limitato a 128 caratteri e il valore a 256 caratteri.
  • I tag applicati al gruppo di risorse non vengono ereditati dalle risorse in tale gruppo di risorse.

Se si devono associare più di 15 valori a una risorsa, usare una stringa JSON come valore di tag. La stringa JSON può contenere diversi valori applicati a un singolo nome di tag. Questo articolo illustra un esempio di assegnazione di una stringa JSON al tag.

Nota

È possibile applicare tag solo alle risorse che supportano le operazioni di Gestione Risorse di Azure. Se è stata creata una macchina virtuale, una rete virtuale o un account di archiviazione tramite il modello di distribuzione classica, ad esempio tramite il portale di Azure classico, non è possibile applicare un tag a tale risorsa. Per supportare l'assegnazione di tag, distribuire nuovamente tali risorse tramite Gestione risorse. Tutte le altre risorse supportano l'assegnazione di tag.

Criteri per la coerenza dei tag

È possibile usare i criteri delle risorse per creare regole standard per l'organizzazione. È possibile creare criteri che garantiscono che le risorse vengano contrassegnate con i valori appropriati. Per altre informazioni, vedere Applicare criteri delle risorse per i tag.

PowerShell

La versione 3.0 del modulo AzureRm.Resources include modifiche significative all'uso dei tag. Prima di continuare, controllare la versione:

Get-Module -ListAvailable -Name AzureRm.Resources | Select Version

Se i risultati indicano la versione 3.0 o successiva, gli esempi di questo argomento sono adatti all'ambiente in uso. Se non è disponibile la versione 3.0 o successiva, aggiornare la versione usando PowerShell Gallery o l'Installazione guidata piattaforma Web prima di continuare con questo argomento.

Version
-------
3.5.0

Per visualizzare i tag esistenti per un gruppo di risorse, usare:

(Get-AzureRmResourceGroup -Name examplegroup).Tags

Lo script restituisce il formato seguente:

Name                           Value
----                           -----
Dept                           IT
Environment                    Test

Per visualizzare i tag esistenti per una risorsa con un ID risorsa specificato, usare:

(Get-AzureRmResource -ResourceId {resource-id}).Tags

In alternativa, per visualizzare i tag esistenti per una risorsa con un nome e un gruppo di risorse specificati, usare:

(Get-AzureRmResource -ResourceName examplevnet -ResourceGroupName examplegroup).Tags

Per ottenere i gruppi di risorse con un tag specifico, usare:

(Find-AzureRmResourceGroup -Tag @{ Dept="Finance" }).Name 

Per ottenere le risorse con un tag specifico, usare:

(Find-AzureRmResource -TagName Dept -TagValue Finance).Name

Ogni volta che si applicano tag a una risorsa o a un gruppo di risorse, si sovrascrivono i tag esistenti in tale risorsa o gruppo di risorse. È quindi necessario usare un approccio diverso se nella risorsa o nel gruppo di risorse esistono tag.

Per aggiungere tag a un gruppo di risorse senza tag esistenti, usare:

Set-AzureRmResourceGroup -Name examplegroup -Tag @{ Dept="IT"; Environment="Test" }

Per aggiungere tag a un gruppo di risorse con tag esistenti, recuperare i tag esistenti, aggiungere il nuovo tag e riapplicare i tag:

$tags = (Get-AzureRmResourceGroup -Name examplegroup).Tags
$tags += @{Status="Approved"}
Set-AzureRmResourceGroup -Tag $tags -Name examplegroup

Per aggiungere tag a una risorsa senza tag esistenti, usare:

Set-AzureRmResource -Tag @{ Dept="IT"; Environment="Test" } -ResourceName examplevnet -ResourceGroupName examplegroup

Per aggiungere tag a una risorsa con tag esistenti, usare:

$tags = (Get-AzureRmResource -ResourceName examplevnet -ResourceGroupName examplegroup).Tags
$tags += @{Status="Approved"}
Set-AzureRmResource -Tag $tags -ResourceName examplevnet -ResourceGroupName examplegroup

Per applicare tutti i tag da un gruppo di risorse alle risorse senza mantenere i tag esistenti nelle risorse, usare lo script seguente:

$groups = Get-AzureRmResourceGroup
foreach ($g in $groups) 
{
    Find-AzureRmResource -ResourceGroupNameEquals $g.ResourceGroupName | ForEach-Object {Set-AzureRmResource -ResourceId $_.ResourceId -Tag $g.Tags -Force } 
}

Per applicare tutti i tag da un gruppo di risorse alle risorse mantenendo i tag esistenti nelle risorse non duplicate, usare lo script seguente:

$groups = Get-AzureRmResourceGroup
foreach ($g in $groups) 
{
    if ($g.Tags -ne $null) {
        $resources = Find-AzureRmResource -ResourceGroupNameEquals $g.ResourceGroupName 
        foreach ($r in $resources)
        {
            $resourcetags = (Get-AzureRmResource -ResourceId $r.ResourceId).Tags
            foreach ($key in $g.Tags.Keys)
            {
                if ($resourcetags.ContainsKey($key)) { $resourcetags.Remove($key) }
            }
            $resourcetags += $g.Tags
            Set-AzureRmResource -Tag $resourcetags -ResourceId $r.ResourceId -Force
        }
    }
}

Per rimuovere tutti i tag, passare una tabella hash vuota:

Set-AzureRmResourceGroup -Tag @{} -Name examplegroup

Interfaccia della riga di comando di Azure

Per visualizzare i tag esistenti per un gruppo di risorse, usare:

az group show -n examplegroup --query tags

Lo script restituisce il formato seguente:

{
  "Dept"        : "IT",
  "Environment" : "Test"
}

Per visualizzare i tag esistenti per una risorsa con un ID risorsa specificato, usare:

az resource show --id {resource-id} --query tags

In alternativa, per visualizzare i tag esistenti per una risorsa con un nome, un tipo e un gruppo di risorse specificati, usare:

az resource show -n examplevnet -g examplegroup --resource-type "Microsoft.Network/virtualNetworks" --query tags

Per ottenere i gruppi di risorse con un tag specifico, usare az group list:

az group list --tag Dept=IT

Per ottenere tutte le risorse che hanno un tag e un valore specifici, usare az resource list:

az resource list --tag Dept=Finance

Ogni volta che si applicano tag a una risorsa o a un gruppo di risorse, si sovrascrivono i tag esistenti in tale risorsa o gruppo di risorse. È quindi necessario usare un approccio diverso se nella risorsa o nel gruppo di risorse esistono tag.

Per aggiungere tag a un gruppo di risorse senza tag esistenti, usare:

az group update -n examplegroup --set tags.Environment=Test tags.Dept=IT

Per aggiungere tag a una risorsa senza tag esistenti, usare:

az resource tag --tags Dept=IT Environment=Test -g examplegroup -n examplevnet --resource-type "Microsoft.Network/virtualNetworks"

Per aggiungere tag a una risorsa che dispone già di tag, recuperare i tag esistenti, riformattare il valore e riapplicare i tag nuovi e già esistenti:

jsonrtag=$(az resource show -g examplegroup -n examplevnet --resource-type "Microsoft.Network/virtualNetworks" --query tags)
rt=$(echo $jsonrtag | tr -d '"{},' | sed 's/: /=/g')
az resource tag --tags $rt Project=Redesign -g examplegroup -n examplevnet --resource-type "Microsoft.Network/virtualNetworks"

Per applicare tutti i tag da un gruppo di risorse alle risorse senza mantenere i tag esistenti nelle risorse, usare lo script seguente:

groups=$(az group list --query [].name --output tsv)
for rg in $groups 
do 
  jsontag=$(az group show -n $rg --query tags)
  t=$(echo $jsontag | tr -d '"{},' | sed 's/: /=/g')
  r=$(az resource list -g $rg --query [].id --output tsv) 
  for resid in $r 
  do 
    az resource tag --tags $t --id $resid
  done 
done

Per applicare tutti i tag da un gruppo di risorse alle risorse e mantenere i tag esistenti nelle risorse, usare lo script seguente:

groups=$(az group list --query [].name --output tsv)
for rg in $groups 
do 
  jsontag=$(az group show -n $rg --query tags)
  t=$(echo $jsontag | tr -d '"{},' | sed 's/: /=/g')
  r=$(az resource list -g $rg --query [].id --output tsv) 
  for resid in $r 
  do 
    jsonrtag=$(az resource show --id $resid --query tags)
    rt=$(echo $jsonrtag | tr -d '"{},' | sed 's/: /=/g')
    az resource tag --tags $t$rt --id $resid
  done 
done

Modelli

Per applicare un tag a una risorsa durante la distribuzione, aggiungere l'elemento tags alla risorsa distribuita e specificare il nome e il valore del tag.

Applicare un valore letterale al nome del tag

L'esempio seguente illustra un account di archiviazione con due tag (Dept e Environment) impostati su valori letterali:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
    {
      "apiVersion": "2016-01-01",
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[resourceGroup().location]",
      "tags": {
        "Dept": "Finance",
        "Environment": "Production"
      },
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": { }
    }
    ]
}

Applicare un oggetto all'elemento tag

È possibile definire un parametro oggetto in cui vengono memorizzati diversi tag e applicare tale oggetto all'elemento tag. Ogni proprietà nell'oggetto diventa un tag separato per la risorsa. L'esempio seguente include un parametro denominato tagValues che viene applicato all'elemento tag.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "tagValues": {
      "type": "object",
      "defaultValue": {
        "Dept": "Finance",
        "Environment": "Production"
      }
    }
  },
  "resources": [
    {
      "apiVersion": "2016-01-01",
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[resourceGroup().location]",
      "tags": "[parameters('tagValues')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    }
  ]
}

Applicare una stringa JSON al nome del tag

Per memorizzare più valori in un singolo tag, è possibile applicare una stringa JSON che rappresenta tali valori. L'intera stringa JSON viene memorizzata come un unico tag che non può superare i 256 caratteri. L'esempio seguente include un tag singolo denominato CostCenter che contiene più valori da una stringa JSON:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
    {
      "apiVersion": "2016-01-01",
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[resourceGroup().location]",
      "tags": {
        "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
      },
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": { }
    }
    ]
}

di Microsoft Azure

  1. Per visualizzare i tag per una risorsa o un gruppo di risorse, selezionare l'icona Tag.

    Selezionare i tag nei pannelli della risorsa e del gruppo di risorse

  2. Vengono visualizzati i tag esistenti per la risorsa. Se in precedenza non sono stati applicati tag, l'elenco è vuoto.

    Visualizzare i tag esistenti nei pannelli della risorsa e del gruppo di risorse

  3. Per aggiungere un tag, digitare un nome e un valore oppure selezionarne uno esistente nel menu a discesa. Selezionare Salva.

    Aggiungere un nuovo tag

  4. Per visualizzare tutte le risorse con un valore di tag, selezionare > (Altri servizi) e immettere la parola Tags nella casella di testo del filtro. Selezionare Tag tra le opzioni disponibili.

    Trovare tag tramite l'hub di esplorazione

  5. Nelle sottoscrizioni viene visualizzato un riepilogo dei tag.

    Visualizzare tutti i tag

  6. Selezionare un tag per visualizzare le risorse e i gruppi di risorse che lo contengono.

    Visualizzare le risorse con tag

  7. Selezionare Aggiungi pannello al dashboard per l'accesso rapido.

    Aggiungere i tag al dashboard

  8. È possibile selezionare i tag aggiunti dal dashboard per visualizzare le risorse con tale tag.

    Aggiungere i tag al dashboard

API REST

Sia il portale di Azure che PowerShell usano l' API REST di Gestione Risorse dietro le quinte. Se è necessario integrare l'assegnazione di tag in un altro ambiente, è possibile ottenere i tag tramite un'operazione GET sull'ID di risorsa e aggiornare il set di tag tramite una chiamata PATCH.

Tag e fatturazione

È possibile usare i tag per raggruppare i dati di fatturazione. Ad esempio, se si eseguono più macchine virtuali per organizzazioni diverse, usare i tag per raggruppare l'utilizzo in base al centro di costo. È anche possibile usare i tag per classificare i costi in base all'ambiente di runtime; ad esempio, l'uso di fatturazione per le macchine virtuali in esecuzione nell'ambiente di produzione.

Le informazioni sui tag possono essere recuperate tramite l' API di utilizzo della risorsa di Azure e della Rate Card o il file di utilizzo con valori delimitati da virgole (CSV). Il file di utilizzo può essere scaricato dal portale dell'account di Azure o dal portale EA. Per altre informazioni sull'accesso a livello di codice alle informazioni sulla fatturazione, vedere Ottenere informazioni dettagliate sul consumo delle risorse di Microsoft Azure. Per le operazioni API REST, vedere Riferimento API REST alla fatturazione di Azure.

Quando si scarica il CSV di utilizzo per i servizi che supportano i tag di fatturazione, i tag vengono visualizzati nella colonna Tag . Per altre informazioni, vedere Comprendere la fattura per Microsoft Azure.

Vedere i tag della fatturazione

Passaggi successivi