Bicep を使用してタグを適用する

この記事では、Bicep を使用して、デプロイ中にリソース、リソース グループ、サブスクリプションにタグを付ける方法について説明します。 タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。

Note

Bicep ファイルを使用して適用したタグによって、既存のタグが上書きされます。

値を適用する

次の例では、3 つのタグが適用されたストレージ アカウントがデプロイされます。 2 つのタグ (DeptEnvironment) にはリテラル値が設定されます。 1 つのタグ (LastDeployed) には、現在の日付が既定値のパラメーターが設定されます。

param location string = resourceGroup().location
param utcShort string = utcNow('d')

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    Dept: 'Finance'
    Environment: 'Production'
    LastDeployed: utcShort
  }
}

オブジェクトを適用する

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

param location string = resourceGroup().location
param tagValues object = {
  Dept: 'Finance'
  Environment: 'Production'
}

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: tagValues
}

JSON 文字列を適用する

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

param location string = resourceGroup().location

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    CostCenter: '{"Dept":"Finance","Environment":"Production"}'
  }
}

リソース グループからタグを適用する

リソース グループからリソースにタグを適用するには、resourceGroup() 関数を使います。 タグの値を取得するときは、tags.tag-name 構文ではなく tags[tag-name] 構文を使います。これは、ドット表記では一部の文字が正しく解析されないためです。

param location string = resourceGroup().location

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    Dept: resourceGroup().tags['Dept']
    Environment: resourceGroup().tags['Environment']
  }
}

リソース グループまたはサブスクリプションにタグを適用する

リソースの種類 Microsoft.Resources/tags をデプロイすることにより、リソース グループまたはサブスクリプションにタグを追加できます。 デプロイするターゲット リソース グループまたはサブスクリプションにタグを適用できます。 テンプレートをデプロイするたびに、以前のタグがすべて置き換えられます。

param tagName string = 'TeamName'
param tagValue string = 'AppTeam1'

resource applyTags 'Microsoft.Resources/tags@2021-04-01' = {
  name: 'default'
  properties: {
    tags: {
      '${tagName}': tagValue
    }
  }
}

次の Bicep は、オブジェクトのタグをデプロイ先のサブスクリプションに追加します。 サブスクリプション デプロイの詳細については、「サブスクリプション レベルでリソース グループとリソースを作成する」を参照してください。

targetScope = 'subscription'

param tagObject object = {
  TeamName: 'AppTeam1'
  Dept: 'Finance'
  Environment: 'Production'
}

resource applyTags 'Microsoft.Resources/tags@2021-04-01' = {
  name: 'default'
  properties: {
    tags: tagObject
  }
}

次のステップ