タグを使用した Azure リソースの整理Use tags to organize your Azure resources

Azure リソースにタグを適用すると、カテゴリ別に論理的に整理できます。You apply tags to your Azure resources to logically organize them by categories. 各タグは名前と値で構成されます。Each tag consists of a name and a value. たとえば、運用環境のすべてのリソースには名前 "環境" と値 "運用" を適用できます。For example, you can apply the name "Environment" and the value "Production" to all the resources in production.

タグを適用すると、そのタグの名前と値が付けられた、サブスクリプション内のすべてのリソースを取得できます。After you apply tags, you can retrieve all the resources in your subscription with that tag name and value. タグを使用すると、複数のリソース グループから関連リソースを取得できます。Tags enable you to retrieve related resources from different resource groups. この方法は、課金または管理の目的でリソースを整理する必要がある場合に役立ちます。This approach is helpful when you need to organize resources for billing or management.

タグには次の制限事項が適用されます。The following limitations apply to tags:

  • 各リソースまたはリソース グループには、最大で 15 個のタグ名/タグ値のペアを付けることができます。Each resource or resource group can have a maximum of 15 tag name/value pairs. この制限は、リソース グループまたはリソースに直接適用されたタグにのみ適用されます。This limitation applies only to tags directly applied to the resource group or resource. リソース グループには、それぞれ 15 個のタグ名/タグ値のペアが付けられたリソースを多数含めることができます。A resource group can contain many resources that each have 15 tag name/value pairs. リソースに関連付ける必要のある値が 15 個を超える場合は、タグ値に JSON 文字列を使用します。If you have more than 15 values that you need to associate with a resource, use a JSON string for the tag value. JSON 文字列には、1 つのタグ名に適用される値を多数含めることができます。The JSON string can contain many values that are applied to a single tag name. この記事では、JSON 文字列をタグに割り当てる例を示します。This article shows an example of assigning a JSON string to the tag.
  • タグ名は 512 文字まで、タグ値は 256 文字までに制限されます。The tag name is limited to 512 characters, and the tag value is limited to 256 characters. ストレージ アカウントについては、タグ名は 128 文字まで、タグ値は 256 文字までに制限されます。For storage accounts, the tag name is limited to 128 characters, and the tag value is limited to 256 characters.
  • リソース グループに適用したタグは、そのリソース グループ内のリソースには継承されません。Tags applied to the resource group are not inherited by the resources in that resource group.
  • Cloud Services など、クラシック リソースにタグを適用することはできません。Tags can't be applied to classic resources such as Cloud Services.
  • タグ名には、これらの文字を含めることはできません: <>%&\?/Tag names can't contain these characters: <, >, %, &, \, ?, /

PowerShellPowerShell

この記事の例では、バージョン 3.0 以降の Azure PowerShell が必要です。The examples in this article require version 3.0 or later of Azure PowerShell. お使いのバージョンが 3.0 以降でない場合は、PowerShell ギャラリーまたは Web Platform Installer を使用してバージョンを更新してください。If you do not have version 3.0 or later, update your version by using PowerShell Gallery or Web Platform Installer.

リソース グループの既存のタグを表示するには、次のコマンドを使用します。To see the existing tags for a resource group, use:

(Get-AzureRmResourceGroup -Name examplegroup).Tags

このスクリプトは次の形式を返します。That script returns the following format:

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

特定のリソース ID に該当するリソースの既存のタグを表示するには、次のコマンドを使用します。To see the existing tags for a resource that has a specified resource ID, use:

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

特定の名前とリソース グループに該当するリソースの既存のタグを表示するには、次のコマンドを使用します。Or, to see the existing tags for a resource that has a specified name and resource group, use:

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

特定のタグが付いたリソース グループを取得するには、次のコマンドを使用します。To get resource groups that have a specific tag, use:

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

特定のタグが付いたリソースを取得するには、次のコマンドを使用します。To get resources that have a specific tag, use:

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

リソースまたはリソース グループにタグを適用するたびに、そのリソースまたはリソース グループの既存のタグが上書きされます。Every time you apply tags to a resource or a resource group, you overwrite the existing tags on that resource or resource group. したがって、リソースまたはリソース グループに既存のタグがあるかどうかに基づいて、異なるアプローチを使用する必要があります。Therefore, you must use a different approach based on whether the resource or resource group has existing tags.

既存のタグのないリソース グループにタグを追加するには、次のコマンドを使用します。To add tags to a resource group without existing tags, use:

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

既存のタグがあるリソース グループにタグを追加するには、既存のタグを取得して新しいタグを追加し、タグを適用し直します。To add tags to a resource group that has existing tags, retrieve the existing tags, add the new tag, and reapply the tags:

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

既存のタグのないリソースにタグを追加するには、次のコマンドを使用します。To add tags to a resource without existing tags, use:

$r = Get-AzureRmResource -ResourceName examplevnet -ResourceGroupName examplegroup
Set-AzureRmResource -Tag @{ Dept="IT"; Environment="Test" } -ResourceId $r.ResourceId -Force

既存のタグがあるリソースにタグを追加するには、次のコマンドを使用します。To add tags to a resource that has existing tags, use:

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

リソースにある既存のタグを保持せずに、リソース グループのすべてのタグをリソースに適用するには、次のスクリプトを使用します。To apply all tags from a resource group to its resources, and not retain existing tags on the resources, use the following script:

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

リソースにある重複しない既存のタグを保持して、リソース グループのすべてのタグをリソースに適用するには、次のスクリプトを使用します。To apply all tags from a resource group to its resources, and retain existing tags on resources that are not duplicates, use the following script:

$group = Get-AzureRmResourceGroup "examplegroup"
if ($group.Tags -ne $null) {
    $resources = $group | Find-AzureRmResource
    foreach ($r in $resources)
    {
        $resourcetags = (Get-AzureRmResource -ResourceId $r.ResourceId).Tags
        foreach ($key in $group.Tags.Keys)
        {
            if (($resourcetags) -AND ($resourcetags.ContainsKey($key))) { $resourcetags.Remove($key) }
        }
        $resourcetags += $group.Tags
        Set-AzureRmResource -Tag $resourcetags -ResourceId $r.ResourceId -Force
    }
}

すべてのタグを削除するには、空のハッシュ テーブルを渡します。To remove all tags, pass an empty hash table:

Set-AzureRmResourceGroup -Tag @{} -Name examplegroup

Azure CLIAzure CLI

リソース グループの既存のタグを表示するには、次のコマンドを使用します。To see the existing tags for a resource group, use:

az group show -n examplegroup --query tags

このスクリプトは次の形式を返します。That script returns the following format:

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

特定の名前、型、リソース グループに該当するリソースの既存のタグを表示するには、次のコマンドを使用します。Or, to see the existing tags for a resource that has a specified name, type, and resource group, use:

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

リソースのコレクション内をループ処理するときに、リソース ID ごとにリソースを表示したいことがあります。When looping through a collection of resources, you might want to show the resource by resource ID. 完成した例については、この記事で後ほど紹介します。A complete example is shown later in this article. 特定のリソース ID に該当するリソースの既存のタグを表示するには、次のコマンドを使用します。To see the existing tags for a resource that has a specified resource ID, use:

az resource show --id <resource-id> --query tags

特定のタグが付いたリソース グループを取得するには、az group list を使用します。To get resource groups that have a specific tag, use az group list:

az group list --tag Dept=IT

特定のタグと値を持つすべてのリソースを取得するには、az resource list を使用します。To get all the resources that have a particular tag and value, use az resource list:

az resource list --tag Dept=Finance

リソースまたはリソース グループにタグを適用するたびに、そのリソースまたはリソース グループの既存のタグが上書きされます。Every time you apply tags to a resource or a resource group, you overwrite the existing tags on that resource or resource group. したがって、リソースまたはリソース グループに既存のタグがあるかどうかに基づいて、異なるアプローチを使用する必要があります。Therefore, you must use a different approach based on whether the resource or resource group has existing tags.

既存のタグのないリソース グループにタグを追加するには、次のコマンドを使用します。To add tags to a resource group without existing tags, use:

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

既存のタグのないリソースにタグを追加するには、次のコマンドを使用します。To add tags to a resource without existing tags, use:

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

既にタグがあるリソースにタグを追加するには、既存のタグを取得してその値の形式を変更したうえで、既存のタグと新しいタグを再適用します。To add tags to a resource that already has tags, retrieve the existing tags, reformat that value, and reapply the existing and new tags:

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"

リソースにある既存のタグを保持せずに、リソース グループのすべてのタグをリソースに適用するには、次のスクリプトを使用します。To apply all tags from a resource group to its resources, and not retain existing tags on the resources, use the following script:

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

リソースにある既存のタグを保持したうえで、リソース グループのすべてのタグをリソースに適用するには、次のスクリプトを使用します。To apply all tags from a resource group to its resources, and retain existing tags on resources, use the following script:

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

テンプレートTemplates

デプロイ中にリソースにタグを付けるには、デプロイするリソースに tags 要素を追加します。 タグの名前と値を指定します。

タグ名へのリテラル値の適用

次の例は、2 つのタグ (DeptEnvironment) をリテラル値に設定するストレージ アカウントを示しています。

{
    "$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": { }
    }
    ]
}

タグ要素へのオブジェクトの適用

複数のタグを格納するオブジェクト パラメーターを定義し、そのオブジェクトをタグ要素に適用できます。 オブジェクト内の各プロパティがリソースの個々のタグになります。 次の例は、タグ要素に適用される tagValues という名前のパラメーターを示しています。

{
  "$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": {}
    }
  ]
}

タグ名への JSON 文字列の適用

1 つのタグに複数の値を格納するには、値を表す JSON 文字列を適用します。 JSON 文字列全体は、1 つのタグとして格納されます。256 文字以下にする必要があります。 次の例は、JSON 文字列で複数の値を格納する CostCenter という名前の 1 つのタグを示しています。

{
    "$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": { }
    }
    ]
}

ポータルPortal

  1. リソースまたはリソース グループのタグを表示するには、[タグ] アイコンを選択します。To view the tags for a resource or a resource group, select the Tags icon.

    リソース ブレードおよびリソース グループ ブレードで [タグ] を選択する

  2. リソースの既存のタグが表示されます。You see the existing tags for the resource. これまでにタグを適用していない場合、リストは空です。If you have not previously applied tags, the list is empty.

    リソース ブレードおよびリソース グループ ブレードの既存のタグが表示される

  3. タグを追加するには、名前と値を入力するか、ドロップダウン メニューから既存の名前と値を選択します。To add a tag, type a name and value, or select an existing one from the drop-down menu. [ 保存] を選択します。Select Save.

    新しいタグを追加する

  4. タグ値を持つリソースを一覧表示するには、> ([その他のサービス]) を選択し、フィルターのテキスト ボックスに「タグ」と入力します。To view all the resources that have a tag value, select > (More services), and enter the word Tags into the filter text box. 使用可能なオプションから [タグ] を選択します。Select Tags from the available options.

    参照ハブによるタグの検索

  5. サブスクリプションにあるタグの概要が表示されます。You see a summary of the tags in your subscriptions.

    すべてのタグを表示

  6. いずれかのタグを選択すると、そのタグが指定されているリソースとリソース グループが表示されます。Select any of the tags to display the resources and resource groups with that tag.

    タグ付けされたリソースを表示

  7. すばやくアクセスできるように [ダッシュボードにブレードをピン留め] を選択します。Select Pin blade to dashboard for quick access.

    ダッシュボードにタグをピン留めする

  8. ピン留めしたタグをダッシュボードから選択すると、そのタグを持つリソースが表示されます。You can select the pinned tag from the dashboard to see the resources with that tag.

    ダッシュボードにタグをピン留めする

REST APIREST API

Azure Portal と PowerShell のどちらも、バックグラウンドで リソース マネージャーの REST API を使用します。The Azure portal and PowerShell both use the Resource Manager REST API behind the scenes. 別の環境にタグ付けを統合する必要がある場合、リソース ID に対する GET 操作でタグを取得し、PATCH 呼び出しでタグのセットを更新できます。If you need to integrate tagging into another environment, you can get tags by using GET on the resource ID and update the set of tags by using a PATCH call.

タグと課金Tags and billing

タグを使用して課金データをグループ化できます。You can use tags to group your billing data. たとえば、異なる組織向けに複数の VM を実行している場合は、タグを使用して、コスト センターごとに課金データをグループ化します。For example, if you are running multiple VMs for different organizations, use the tags to group usage by cost center. また、タグを使用すると、運用環境で実行されている VM の課金データなどの、ランタイム環境ごとにコストを分類することもできます。You can also use tags to categorize costs by runtime environment, such as the billing usage for VMs running in the production environment.

タグに関する情報は、 Azure Resource Usage API と RateCard API から、あるいはコンマ区切り値 (CSV) ファイルから取得できます。You can retrieve information about tags through the Azure Resource Usage and RateCard APIs or the usage comma-separated values (CSV) file. 使用状況ファイルは Azure アカウント ポータルまたは EA ポータルからダウンロードします。You download the usage file from the Azure account portal or EA portal. 課金情報へのプログラムによるアクセスの詳細については、「 Microsoft Azure リソースの消費を把握する」を参照してください。For more information about programmatic access to billing information, see Gain insights into your Microsoft Azure resource consumption. REST API の操作については、「 Azure Billing REST API Reference (Azure Billing REST API リファレンス)」を参照してください。For REST API operations, see Azure Billing REST API Reference.

課金のタグがサポートされているサービスの使用状況 CSV ファイルをダウンロードした場合、タグは「 Tags 」列に表示されます。When you download the usage CSV for services that support tags with billing, the tags appear in the Tags column. 詳細については、「Microsoft Azure の課金内容の確認」を参照してください。For more information, see Understand your bill for Microsoft Azure.

課金タグを参照してください

次の手順Next steps