AzureのNAT GatewayをPowerShellスクリプトで削除しようとしたんですよ。
ご存知の通り、NAT Gatewayはこれで削除する前にPublic IPとサブネットからデタッチしないといけません。デタッチしていないと-forceをつけても失敗します。じゃあ デタッチしようとしてもスクリプトでやる方法がちょっとわからなかった。
最初サブネット追加する時のようにこれでいけるのかなと思ったけど、だめ。結局bicepでやらないとダメ?ということで書いてみました。
NAT GatewayのサブネットとPublic IPを消してやることでちゃんとそれぞれからデタッチされました。作る方はこっち
まぁ作る方は散々サンプルがあるからいいと思います。消す方はあまりなかったので備忘録的に。おそらく他にもLoad Balancerとかのサブネットにアタッチするものはこういう感じでやらないといけない気がします。逆にBastionやVPN gatewayなどの専用のサブネットを作るものは普通に消せますね。
あと、Azure Cloud Shellでやっていたからかどうかわかりませんが、remove-aznatgatewayとremove-azpublicipaddressを連続で実行するとどちらか片方しか消せませんでした。仕方ないので、-azjobつけてバックグラウンドジョブにしてみたらどちらも消せました。