ARM テンプレートを使用してタグを適用する
この記事では、Azure Resource Manager テンプレート (ARM テンプレート) を使用して、デプロイ中にリソース、リソース グループ、サブスクリプションにタグを付ける方法について説明します。 タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。
Note
ARM テンプレートまたは Bicep ファイルを使用して適用したタグによって、既存のタグが上書きされます。
値を適用する
次の例では、3 つのタグが適用されたストレージ アカウントがデプロイされます。 2 つのタグ (Dept
と Environment
) にはリテラル値が設定されます。 1 つのタグ (LastDeployed
) には、現在の日付が既定値のパラメーターが設定されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"utcShort": {
"type": "string",
"defaultValue": "[utcNow('d')]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"Dept": "Finance",
"Environment": "Production",
"LastDeployed": "[parameters('utcShort')]"
},
"properties": {}
}
]
}
オブジェクトを適用する
複数のタグを格納するオブジェクト パラメーターを定義し、そのオブジェクトをタグ要素に適用できます。 この方法では、オブジェクトは異なるプロパティを持つことができるため、前の例より柔軟性が高くなります。 オブジェクト内の各プロパティがリソースの個々のタグになります。 次の例は、タグ要素に適用される tagValues
という名前のパラメーターを示しています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"tagValues": {
"type": "object",
"defaultValue": {
"Dept": "Finance",
"Environment": "Production"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": "[parameters('tagValues')]",
"properties": {}
}
]
}
JSON 文字列を適用する
1 つのタグに複数の値を格納するには、値を表す JSON 文字列を適用します。 JSON 文字列全体は、1 つのタグとして格納されます。256 文字以下にする必要があります。 次の例は、JSON 文字列で複数の値を格納する CostCenter
という名前の 1 つのタグを示しています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},
"properties": {}
}
]
}
リソース グループからタグを適用する
リソース グループからリソースにタグを適用するには、resourceGroup() 関数を使います。 タグの値を取得するときは、tags.tag-name
構文ではなく tags[tag-name]
構文を使います。これは、ドット表記では一部の文字が正しく解析されないためです。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"Dept": "[resourceGroup().tags['Dept']]",
"Environment": "[resourceGroup().tags['Environment']]"
},
"properties": {}
}
]
}
リソース グループまたはサブスクリプションにタグを適用する
リソースの種類 Microsoft.Resources/tags
をデプロイすることにより、リソース グループまたはサブスクリプションにタグを追加できます。 デプロイするターゲット リソース グループまたはサブスクリプションにタグを適用できます。 テンプレートをデプロイするたびに、以前のタグがすべて置き換えられます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"tagName": {
"type": "string",
"defaultValue": "TeamName"
},
"tagValue": {
"type": "string",
"defaultValue": "AppTeam1"
}
},
"resources": [
{
"type": "Microsoft.Resources/tags",
"name": "default",
"apiVersion": "2021-04-01",
"properties": {
"tags": {
"[parameters('tagName')]": "[parameters('tagValue')]"
}
}
}
]
}
リソース グループにタグを適用するには、Azure PowerShell または Azure CLI を使用します。 タグを付けるリソース グループにデプロイします。
New-AzResourceGroupDeployment -ResourceGroupName exampleGroup -TemplateFile https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment group create --resource-group exampleGroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
サブスクリプションにタグを適用するには、PowerShell または Azure CLI を使用します。 タグを付けるサブスクリプションにデプロイします。
New-AzSubscriptionDeployment -name tagresourcegroup -Location westus2 -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment sub create --name tagresourcegroup --location westus2 --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
サブスクリプション デプロイの詳細については、「サブスクリプション レベルでリソース グループとリソースを作成する」を参照してください。
次のテンプレートでは、オブジェクトからリソース グループまたはサブスクリプションにタグが追加されます。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"tags": {
"type": "object",
"defaultValue": {
"TeamName": "AppTeam1",
"Dept": "Finance",
"Environment": "Production"
}
}
},
"resources": [
{
"type": "Microsoft.Resources/tags",
"apiVersion": "2021-04-01",
"name": "default",
"properties": {
"tags": "[parameters('tags')]"
}
}
]
}
次のステップ
- すべてのリソースの種類で、タグがサポートされるわけではありません。 リソースの種類にタグを適用することができるかどうかを確認するには、Azure リソースに対するタグのサポートに関する記事を参照してください。
- タグ付け戦略の実装方法に関する推奨事項については、「リソースの名前付けとタグ付けの意思決定ガイド」を参照してください。
- タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。