Udostępnij przez


Samouczek: dodawanie tagów do zasobów w szablonie usługi Azure Resource Manager

Z tego samouczka dowiesz się, jak dodawać tagi do zasobów w szablonie usługi Azure Resource Manager (szablon usługi ARM). Tagi są elementami metadanych składającymi się z par klucz-wartość, które ułatwiają identyfikowanie zasobów i wyświetlanie ich w raportach kosztów. Wykonanie tej instrukcji trwa 8 minut .

Wymagania wstępne

Zalecamy ukończenie samouczka dotyczącego szablonów szybkiego startu, ale nie jest to wymagane.

Musisz mieć program Visual Studio Code i program Azure PowerShell lub interfejs wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz narzędzia szablonów.

Przeglądanie szablonu

Poprzedni szablon wdrożył konto magazynowe, plan usługi App Service i aplikację internetową.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2025-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Po wdrożeniu tych zasobów może być konieczne śledzenie kosztów i znajdowanie zasobów należących do kategorii. Możesz dodać tagi, aby rozwiązać te problemy.

Dodawanie tagów

Tagujesz zasoby, aby dodać wartości, które ułatwiają identyfikowanie ich użycia. Możesz dodać tagi, które wymieniają środowisko i projekt. Można je również dodać, aby zidentyfikować centrum kosztów lub zespół, który jest właścicielem zasobu. Dodaj wszelkie wartości, które mają sens dla organizacji.

W poniższym przykładzie przedstawiono zmiany w szablonie. Skopiuj cały plik i zastąp szablon jego zawartością:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2025-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Wdrażanie szablonu

Nadszedł czas na wdrożenie szablonu i zapoznanie się z wynikami.

Jeśli grupa zasobów nie została utworzona, zobacz Tworzenie grupy zasobów. W przykładzie przyjęto założenie, że zmienna templateFile została ustawiona na ścieżkę do pliku szablonu, jak pokazano w pierwszym samouczku.

New-AzResourceGroupDeployment `
  -Name addtags `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

Uwaga / Notatka

Jeśli wdrożenie zakończy się niepowodzeniem, użyj przełącznika verbose , aby uzyskać informacje o tworzonych zasobach. Użyj przełącznika debug , aby uzyskać więcej informacji na temat debugowania.

Weryfikowanie wdrożenia

Wdrożenie można zweryfikować, eksplorując grupę zasobów w witrynie Azure Portal.

  1. Zaloguj się do witryny Azure Portal.

  2. W menu po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz grupę zasobów, do której wdrożono.

  4. Wybierz jeden z zasobów, takich jak zasób konta magazynu. Widzisz, że ma teraz tagi.

    Zrzut ekranu witryny Azure Portal przedstawiający tagi w zasobie konta magazynowego.

Uprzątnij zasoby

Jeśli przejdziesz do następnego samouczka, nie musisz usuwać grupy zasobów.

Jeśli teraz zatrzymasz się, możesz usunąć grupę zasobów.

  1. W witrynie Azure Portal wybierz pozycję Grupy zasobów z menu po lewej stronie.
  2. Wpisz nazwę grupy zasobów w polu tekstowym Filtruj dla dowolnego pola ...
  3. Zaznacz pole wyboru obok pozycji myResourceGroup i wybierz pozycję myResourceGroup lub nazwę grupy zasobów.
  4. Wybierz pozycję Usuń grupę zasobów z górnego menu.

Dalsze kroki

W tym samouczku dodasz tagi do zasobów. W następnym samouczku dowiesz się, jak używać plików parametrów, aby uprościć przekazywanie wartości do szablonu.