この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、鈴木(純)です。
困ったこと
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": []
}
念の為コンソールからも確認してみると、設定が全て消えてセットアップ画面が表示されています。めでたし。
まとめ
コンソールから削除できなくて少し時間がとられたので、少しでも参考になれば幸いです。たまにコンソールからはできないパターンもあるので気をつけましょう。