チュートリアル:ARM テンプレートにタグを追加する
このチュートリアルでは、Azure Resource Manager テンプレート (ARM テンプレート) でリソースにタグを追加する方法について説明します。 タグは、リソースを識別し、コスト レポートに表示するのに役立つキーと値のペアで構成されるメタデータ要素です。 このチュートリアルを完了するには 8 分かかります。
[前提条件]
必須ではありませんが、クイックスタート テンプレートに関するチュートリアルを済ませておくことをお勧めします。
Visual Studio Code と Resource Manager ツールの拡張機能、そして Azure PowerShell または Azure CLI のいずれかを使用する必要があります。 詳細については、テンプレートのツールに関する記事を参照してください。
テンプレートを確認する
以前のテンプレートでは、ストレージ アカウント、App Service プラン、Web アプリをデプロイしました。
{
"$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": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-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": "2021-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]"
}
}
}
これらのリソースをデプロイした後、コストを追跡し、あるカテゴリに属するリソースを見つけることが必要になる場合があります。 このような問題の解決にタグを追加することができます。
タグを追加する
リソースにタグを付けて、使用法を識別するために役立つ値を追加します。 環境とプロジェクトを一覧表示するタグを追加できます。 タグを追加して、リソースを所有しているコスト センターまたはチームを識別することもできます。 組織にとって意味のある値を追加してください。
次の例では、テンプレートの変更を強調表示します。 ファイル全体をコピーして、既存のテンプレートの内容を置き換えてください。
{
"$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": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"tags": "[parameters('resourceTags')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-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": "2021-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]"
}
}
}
テンプレートのデプロイ
次はテンプレートをデプロイし、結果を確認します。
まだリソース グループを作成していない場合は、「リソース グループの作成」を参照してください。 この例では、templateFile
変数にテンプレート ファイルのパスが設定済みであることを想定しています (1 つ目のチュートリアルを参照)。
New-AzResourceGroupDeployment `
-Name addtags `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storagePrefix "store" `
-storageSKU Standard_LRS `
-webAppName demoapp
Note
デプロイに失敗した場合は、verbose
スイッチを使用して、作成しているリソースに関する情報を取得します。 デバッグの詳細については、debug
スイッチを使用してください。
デプロイの確認
Azure portal からリソース グループを探すことでデプロイを確認できます。
Azure portal にサインインします。
左側のメニューから [リソース グループ] を選択します。
デプロイ先のリソース グループを選択します。
ストレージ アカウント リソースなど、リソースのいずれかを選択します。 タグが付けられていることがわかります。
リソースをクリーンアップする
次のチュートリアルに移動する場合は、リソース グループを削除する必要はありません。
ここで終了する場合は、リソース グループを削除してかまいません。
- Azure portal で、左側のメニューから [リソース グループ] を選択します。
- [任意のフィールドのフィルター...] テキスト フィールドにリソース グループ名を入力します。
- myResourceGroup の横にあるチェック ボックスをオンにし、[myResourceGroup] またはご自分のリソース グループ名を選びます。
- トップ メニューから [リソース グループの削除] を選択します。
次のステップ
このチュートリアルでは、リソースにタグを追加します。 次のチュートリアルでは、パラメーター ファイルを使用して、テンプレートへの値の受け渡しを簡略化する方法について説明します。