この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
AWS Configのルールを全リージョン分削除しようとしたところ、マネジメントコンソール上から行うのは少し手間でしたのでCLIで行うことにしました。 無事できましたので、記事化しておこうと思います。
前提
- jq を利用します
- CLIはv1系を利用
- credentialの設定が済んでいるものとします
やってみたこと
1.コマンドの調査
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)の部分にはルール名をセットしてください
2.スクリプトの作成
調べたコマンドを組み合わせて、全リージョンのルールをまとめて消すスクリプトを作ってみました。
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