結論から書くと、
診断設定はリソースグループに紐づかないため、リソースグループの削除をしても診断設定は残り続ける、
です。
何が言いたいのか?
例えばTerraformでAzureリソースを構築し、診断設定も実施したとします。
ここで、「この環境作り直したいな」となった場合、 terraform destroy
すればいいのですが、Terraformを見守るのが辛いなどの理由でリソースグループの削除をしてtfstateファイルを捨ててから再度 terraform apply
をすると、診断設定の名前が重複してコケます。
これは、リソースグループの削除で診断設定の削除が行われないためです。
下記のissueに記載がありました。サブスクリプションに紐づいているみたいですね?
https://github.com/MicrosoftDocs/azure-docs/issues/67267
terraform destroy
でリソース削除をすればいいんですが、検証で作った環境なんかはついついリソースグループ削除をしてしまい、ここでハマります。。
やってしまった時の対応
terraformでリソースの作成と診断設定の追加を実装している場合、リソースに診断設定が関連づいた状態なので、リソースが作られた後に診断設定の作成で失敗しますよね?
terraformが失敗したらAzureポータルでリソースの設定を見に行って診断設定を削除し、terraformを再実行するのが一つの手です。
結構地道ですね・・・
あとは az monitor diagnostic-settings delete
を使うなど、CLI等で頑張るくらいですかね。
まとめ
リソースを頻繁に作ったり消したりする場合、診断設定の扱いに注意しましょう。
失敗しても何とかなるので、ほどほどに対処したいところです。