AWSマネジメントコンソールから消せないAWS Configの設定をAWSCLIで綺麗にする方法

Config

ご機嫌いかがでしょうか、豊崎です。

AWS ConfigはAWSリソースのインベントリ、構成変更の履歴、通知を利用者に提供するマネージドサービスです。 検証環境でAWS Configを利用した際に、少しはまった箇所と、対処方法について書いていきたいと思います。

事象

AWSマネジメントコンソールでAWS Configをテストしていて、 改めてCloudFormationで環境の作成を行おうとした際に「AWSConfigDeliveryChannel」、「AWSConfigRecorder」の箇所でエラーが発生しました。

CloudFormation_マネジメントコンソール

Failed to put delivery channel 'AWSConfigDeliveryChannel'
because the maximum number of delivery channels: 1 is reached.

CloudFormation_マネジメントコンソール_1

Failed to put configuration recorder 'AWSConfigRecorder' 
because the maximum number of configuration recorders: 1 is reached.

同一リージョン内に、DeliveryChannel、AWSConfigRecorderは1つまでです!と怒られてしまいました。

DeliveryChannelはS3やSNSなどログの保管先や通知先の設定です。
AWSConfigRecorderは構成情報を記録してくれている本体です。
これらの設定をAWSマネージメントコンソールから環境を消そうとしたのですが、
現時点(2017/4/3)ではGUIからの削除が行えないようでした。

*記録の停止、開始の切り替えは行えます。

AWS_Config_Console_1

対処法

実施すること

GUIからの削除ができないので、AWSCLIから削除を行いましょう。

利用するコマンドは以下です。

  • aws configservice delete-delivery-channel
  • aws configservice delete-configuration-recorder

*検証ではAWS Config Rulesは利用しなかったため、以下コマンドは利用しませんが、適宜削除してください。

  • aws configservice delete-config-rule
  • aws configservice delete-evaluation-results

*SNS、S3、IAMRoleについては割愛しています。AWSマネージメントコンソールから手動で削除できます。

実施する

削除する前に、設定を確認しましょう。

$ aws configservice describe-delivery-channels
{
    "DeliveryChannels": [
        {
            "name": "default",
            "s3BucketName": "config-bucket-XXXXXXXXXXXX"
        }
    ]
}
$ aws configservice describe-configuration-recorders
{
    "ConfigurationRecorders": [
        {
            "recordingGroup": {
                "allSupported": true,
                "resourceTypes": [],
                "includeGlobalResourceTypes": true
            },
            "roleARN": "arn:aws:iam::XXXXXXXXXXXX:role/service-role/config-role-ap-northeast-1",
            "name": "default"
        }
    ]
}

確認が行えたので、削除をしていきましょう。

$ aws configservice delete-delivery-channel --delivery-channel-name default #戻り値なし
$ aws configservice delete-configuration-recorder --configuration-recorder-name default #戻り値なし
$ aws configservice describe-delivery-channels #削除後の確認
{
    "DeliveryChannels": []
}
$ aws configservice describe-configuration-recorders #削除後の確認
{
    "ConfigurationRecorders": []
}

削除後AWSマネジメントコンソールから確認し、設定が消えている(GetStartedの画面になっている)ことを確認しました。
*別途SNS、S3、IAMRole(policyも)については手動で削除してください。

AWS_Config_Console

さいごに

AWS Configサービスは簡単に構成管理が行えます。
しっかり利用して構成管理にかかる運用コストを低減させましょう。