はじめに
AWS Configを全リージョンに対してとりあえず有効にして使っていて、やっぱりやめることにしたのですが、マネジメントコンソールからポチポチ消すのが大変だったのでCLIでまとめて消してみることにしました。
それについて書きます。
前提
- jqを利用します
- CLIはv1系を利用
- credentialの設定が済んでいるものとします
やってみたこと
コマンドの調査
describe-config-rules
ルールの一覧を取得できます
$ aws configservice describe-config-rules
以下のような内容が出力されます
{"ConfigRules": [{"ConfigRuleState": "ACTIVE",
"Description": "Evaluates whether EC2 instances are the t2.micro type.",
"ConfigRuleName": "InstanceTypesAreT2micro",
"ConfigRuleArn": "arn:aws:config:us-east-1:xxxxxxxx:config-rule/config-rule-abcdef",
"Source": {"Owner": "CUSTOM_LAMBDA",
"SourceIdentifier": "arn:aws:lambda:us-east-1:xxxxxxxx:function:InstanceTypeCheck",
"SourceDetails": [{"EventSource": "aws.config",
"MessageType": "ConfigurationItemChangeNotification"}]},
"InputParameters": "{\"desiredInstanceType\":\"t2.micro\"}",
"Scope": {"ComplianceResourceTypes": ["AWS::EC2::Instance"]},
"ConfigRuleId": "config-rule-abcdef"}]}
describe-regions
以下のコマンドでリージョンの一覧が取得できます。
$ aws ec2 describe-regions
{"Regions": [{"Endpoint": "ec2.eu-north-1.amazonaws.com",
"RegionName": "eu-north-1",
"OptInStatus": "opt-in-not-required"},
:
]}
次のようにすると、有効なリージョン名だけが取得できます。
$ aws ec2 describe-regions --no-all-regions | jq .Regions[].RegionName | tr-d'"'
eu-north-1
ap-south-1
eu-west-3
eu-west-2
eu-west-1
ap-northeast-2
me-south-1
ap-northeast-1
sa-east-1
ca-central-1
ap-southeast-1
ap-southeast-2
eu-central-1
us-east-1
us-east-2
us-west-1
us-west-2
delete-config-rule
以下のコマンドでルールを削除できます。
$ aws configservice delete-config-rule --config-rule-name ${ConfigRuleName}
※ $(ConfigRuleName)の部分にはルール名をセットしてください
スクリプトの作成
調べたコマンドを組み合わせて、全リージョンのルールをまとめて消すスクリプトを作ってみました。
RegionNames=$(aws ec2 describe-regions --no-all-regions | jq .Regions[].RegionName | tr-d'"')for RegionName in${RegionNames}do
echo"${RegionName}リージョンの設定を開始します"ConfigRuleNames=$(aws configservice describe-config-rules --region${RegionName} | jq .ConfigRules[].ConfigRuleName | tr-d'"')for ConfigRuleName in${ConfigRuleNames}do
echo"${ConfigRuleName}ルールを削除しました"$(aws configservice delete-config-rule --config-rule-name${ConfigRuleName}--region${RegionName});done
echo"${RegionName}リージョンの設定を終了します"done
これでまとめて全リージョンのルールを削除することができました。
おわりに
だれかの参考になれば幸いです。もっと簡単な方法があったらコメントもらえると嬉しいです。
スクリプト書いちゃったけど実はマネジメントコンソール上でかんたんに消せたりするのかなぁ。
参考資料
- configservice — AWS CLI 1.18.61 Command Reference https://docs.aws.amazon.com/cli/latest/reference/configservice/index.html
- describe-regions — AWS CLI 1.18.61 Command Reference https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html