Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2867

AWS Configルールを全リージョン分まとめて消す

$
0
0

はじめに

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

これでまとめて全リージョンのルールを削除することができました。

おわりに

だれかの参考になれば幸いです。もっと簡単な方法があったらコメントもらえると嬉しいです。
スクリプト書いちゃったけど実はマネジメントコンソール上でかんたんに消せたりするのかなぁ。

参考資料


Viewing all articles
Browse latest Browse all 2867

Trending Articles