リソースグループに設定しているタグ情報をリソースグループ内のリソースに反映する:PowerShell編-3-

はじめに

本記事はこちらの続きとなります

blog.jbs.co.jp

既にやりたいこと自体は実現できているのですが、すでにリソースにタグを設定していた場合にどのような挙動になるのか気になったので調べてみました

まず一つは、リソースグループでは利用されていない、tagZが設定されているケース。こちらを本記事で便宜上TypeZとします。

もう一つは、リソースグループで設定しているtag1に別の値が設定されているケースです。こちらを本記事で便宜上Type99とします。

実験用スクリプト

検証をシンプルにするために、繰り返し処理を減らしたスクリプトを用意しました。

# 1. Get-AzResourceGroupでリソースグループのタグ情報を取得する
$resourceGroup = Get-AzResourceGroup -Name demo1

# 2. Get-AzResourceでリソースグループ内のリソースを取得する
$resources = Get-AzResource -ResourceGroupName demo1

# 3. New-AzTagまたはUpdate-AzTagでリソースが所属しているリソースグループに設定されているタグをリソース自身に付与する
foreach($resource in $resources){
New-AzTag -ResourceId $resource.Id -Tag $resourceGroup.Tags
}

New-AzTagの挙動

New-AzTag & TypeZ

この場合、もともと設定されていたTagZは消えてしまい、リソースグループで設定されているタグのみが残りました。

New-AzTag & TypeA

New-AzTag & Type99

こちらも同様の結果です。

New-AzTag & TypeB

New-AzTag 結論

New-AzTagの場合、リソースにどのような形でタグが設定されていようとも、リソースグループに設定されているタグだけにリセットする、と考えて良さそうです。

Update-AzTagの挙動

Update-AzTagの場合、オプションとしてMerge、Replace、Deleteがあります。

New-AzTagは完全に置き換えてしまったので、ここは元のタグを残してくれそうなMergeに絞って検証してみたいと思います。

Update-AzTag Merge & TypeZ

予想通り、この場合は元のタグに加えて、リソースグループのタグが設定される、という挙動でした。

Update-AzTag Merge & TypeZ

Update-AzTag Merge & Type99

一方こちらはTag1に別の値が設定されているのですが、Mergeオプションだとどういう挙動になるか読めませんね。やってみましょう。

もしかしてエラーになるかな、とも思ったのですが、エラーにはならず、同じタグで値が異なる場合はリソースグループの値で上書きされる、という結果になりました。

Update-AzTag Merge & Type99

Update-AzTag Merge 結論

よって、Update-AzTag でMergeオプションを使った場合は、リソースグループで使っていないタグは保持、同じタグの場合はリソースグループの値で上書き、という結果になりました。

Update-AzTag Replaceの挙動

念のためやってみたのですが、やはりNew-AzTagと同じ挙動でした

まとめ

  • リソースグループのタグ設定だけにしたい場合はNew-AzTagかUpdate-AzTagのReplaceオプション
  • リソースのタグをなるべく残したいならUpdate-AzTagのMergeオプション
  • リソースとリソースグループで同じタグ・別の値の場合にはリソースグループの値で上書き

このようになりました。

おわりに

おおむね予想はついていたのですが実際に動作確認してすっきりしました。

どちらのコマンドで実装するかはケースバイケースになるかと思いますが、そもそもこういったタグの管理を行う場合、リソース管理者にはタグを操作させない(リソースに設定されているタグの考慮は不要)という形になるかもしれませんね。

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧