コンソールから消せないConfigを全リージョンCLIから無効化する
こんにちは、鈴木(純)です。
困ったこと
AWS ConfigをCloudFormationから管理しようと思った時、既にConfigが設定されていて以下のようなエラーが出力されていました。どうやらAWS::Config::ConfigurationRecorder
とAWS::Config::DeliveryChannel
は1つまでしか作れないらしいです。
それじゃあ消せばいいじゃんと思ってコンソールを確認してみたのですが、無効化するような項目が見つからない…
調べてみると、どうやらGUI上からは削除できないっぽい?
というわけでCLIから削除を行うことにしました。上記の記事ではCLIから削除できるコマンドが紹介されていたので、それを全リージョンで実行できるようにします。
今回CLIの実行はCloudShellからやっていきます。
作成したコマンド
以下のコマンドを実行すると、有効化されている全リージョンのConfigを無効化できます。
for r in `aws ec2 describe-regions --query Regions[*].RegionName --output text` do for channel_name in `aws configservice describe-delivery-channels --region $r --query DeliveryChannels[*].name --output text` do recorder_name=`aws configservice describe-configuration-recorders --region $r --query ConfigurationRecorders[*].name --output text` aws configservice delete-configuration-recorder --configuration-recorder-name $recorder_name --region $r aws configservice delete-delivery-channel --delivery-channel-name $channel_name --region $r done done
実行してみる
先ほどのコマンドを使ってConfigを無効化していきましょう。
現在設定されているConfigをCLIから確認してみます。
$ aws configservice describe-delivery-channels { "DeliveryChannels": [ { "name": "default", "s3BucketName": "example-bucket-xxxxxxxx" } ] }
設定されていることが確認できますね。
全リージョンの設定を確認したい場合は、以下のコマンドの出力を確認しましょう。リージョン名 レコーダー名
の形式で出力されます。(設定されていない場合はリージョン名のみ)
aws ec2 describe-regions --region ap-northeast-1 --query "Regions[].[RegionName]" --output text \ | while read r; do recorder=$(aws configservice describe-configuration-recorders --region $r \ --query "ConfigurationRecorders[].name" --output text) echo "${r} ${recorder}" done
それでは先ほどのコマンドを実行していきましょう。コマンドをコピーしてペタッとCloudShellに貼り付けてEnterを押します。
$ for r in `aws ec2 describe-regions --query Regions[*].RegionName --output text` > do > for channel_name in `aws configservice describe-delivery-channels --region $r --query DeliveryChannels[*].name --output text` > do > recorder_name=`aws configservice describe-configuration-recorders --region $r --query ConfigurationRecorders[*].name --output text` > aws configservice delete-configuration-recorder --configuration-recorder-name $recorder_name --region $r > aws configservice delete-delivery-channel --delivery-channel-name $channel_name --region $r > done > done
戻り値がないので何も表示されませんが、実際にはConfigが全リージョン無効化されています。
CLIから確認してみると、設定が無効化されていることを確認できました。
$ aws configservice describe-delivery-channels { "DeliveryChannels": [] }
念の為コンソールからも確認してみると、設定が全て消えてセットアップ画面が表示されています。めでたし。
まとめ
コンソールから削除できなくて少し時間がとられたので、少しでも参考になれば幸いです。たまにコンソールからはできないパターンもあるので気をつけましょう。