タグを使用した 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: <, >, %, &, \, ?, /

注意

この記事は、デバイスまたはサービスから個人用データを削除する手順について説明しており、GDPR での義務を果たすために使用できます。This article provides steps for how to delete personal data from the device or service and can be used to support your obligations under the GDPR. GDPR に関する全般情報については、Service Trust ポータルの GDPR に関するセクションをご覧ください。If you’re looking for general info about GDPR, see the GDPR section of the Service Trust portal.

PowerShellPowerShell

この記事の例では、バージョン 6.0 以降の Azure PowerShell が必要です。The examples in this article require version 6.0 or later of Azure PowerShell. バージョン 6.0 以降がない場合は、バージョンを更新してください。If you do not have version 6.0 or later, update your version.

リソース グループの既存のタグを表示するには、次のコマンドを使用します。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 /subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>).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:

(Get-AzureRmResourceGroup -Tag @{ Dept="Finance" }).ResourceGroupName

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

(Get-AzureRmResource -Tag @{ Dept="Finance"}).Name

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

(Get-AzureRmResource -TagName Dept).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.Add("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.Add("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)
{
    Get-AzureRmResource -ResourceGroupName $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 = Get-AzureRmResource -ResourceGroupName $group.ResourceGroupName
    foreach ($r in $resources)
    {
        $resourcetags = (Get-AzureRmResource -ResourceId $r.ResourceId).Tags
        if ($resourcetags)
        {
            foreach ($key in $group.Tags.Keys)
            {
                if (-not($resourcetags.ContainsKey($key)))
                {
                    $resourcetags.Add($key, $group.Tags[$key])
                }
            }
            Set-AzureRmResource -Tag $resourcetags -ResourceId $r.ResourceId -Force
        }
        else
        {
            Set-AzureRmResource -Tag $group.Tags -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 要素を追加します。To tag a resource during deployment, add the tags element to the resource you are deploying. タグの名前と値を指定します。Provide the tag name and value.

タグ名へのリテラル値の適用Apply a literal value to the tag name

次の例は、2 つのタグ (DeptEnvironment) をリテラル値に設定するストレージ アカウントを示しています。The following example shows a storage account with two tags (Dept and Environment) that are set to literal values:

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

タグ要素へのオブジェクトの適用Apply an object to the tag element

複数のタグを格納するオブジェクト パラメーターを定義し、そのオブジェクトをタグ要素に適用できます。You can define an object parameter that stores several tags, and apply that object to the tag element. オブジェクト内の各プロパティがリソースの個々のタグになります。Each property in the object becomes a separate tag for the resource. 次の例は、タグ要素に適用される tagValues という名前のパラメーターを示しています。The following example has a parameter named tagValues that is applied to the tag element.

{
  "$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 文字列の適用Apply a JSON string to the tag name

1 つのタグに複数の値を格納するには、値を表す JSON 文字列を適用します。To store many values in a single tag, apply a JSON string that represents the values. JSON 文字列全体は、1 つのタグとして格納されます。256 文字以下にする必要があります。The entire JSON string is stored as one tag that cannot exceed 256 characters. 次の例は、JSON 文字列で複数の値を格納する CostCenter という名前の 1 つのタグを示しています。The following example has a single tag named CostCenter that contains several values from a JSON string:

{
    "$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, looks for existing tags in the overview. これまでにタグを適用していない場合、リストは空です。If you have not previously applied tags, the list is empty.

    リソースまたはリソース グループのタグの表示

  2. タグを追加するには、[タグを追加するにはここをクリックします] を選択します。To add a tag, select Click here to add tags.

  3. 名前と値を指定します。Provide a name and value. + を選択してタグを追加します。Select + to add the tag.

    タグの追加

  4. 必要に応じてタグの追加を続行します。Continue adding tags as needed. 操作が完了したら、[保存] をクリックします。When done, select Save.

    タグの保存

  5. タグは、概要に表示されます。The tags are now displayed in the overview.

    タグの表示

  6. タグを追加または削除するには、[変更] を選択します。To add or delete a tag, select change.

  7. タグを削除するには、ごみ箱アイコンを選択します。To delete a tag, select the trash icon. 次に、[保存] を選択します。Then, select Save.

    タグの削除

複数のリソースにタグを一括で割り当てるには:To bulk assign tags to multiple resources:

  1. リソースのリストで、タグを割り当てるリソースのチェックボックスをオンにします。From any list of resources, select the checkbox for the resources you want to assign the tag.

    複数のリソースの選択

  2. [タグの割り当て] を選択します。Select Assign tags

    タグを割り当てる

  3. 各名前と値の後で、+ を選択します。After each name and value, select +. 操作が完了したら、[割り当て] を選択します。When done, select Assign.

    割り当ての選択

タグが付いているすべてのリソースを表示するには:To view all resources with a tag:

  1. [すべてのサービス][タグ] の順に選択します。Select All services and Tags.

    タグで検索する

  2. リソースを表示するタグを選択します。Select the tag for viewing resources.

    タグの選択

  3. そのタグの付いたすべてのリソースが表示されます。All resources with that tag are displayed.

    タグでリソースを表示する

  4. クイック アクセスの場合、ビューをダッシュボードにピン留めします。For quick access, pin the view to the dashboard.

    [ダッシュボードにピン留めする]

  5. ビューは、ダッシュボードから使用できます。The view is available from the dashboard.

    ダッシュボード

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