修正アクションが関連付けられたAWS Configルールを削除する

2019.04.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Config ルールでは、コンプライアンス違反のリソースに対する修正アクションを定義できます。

AWS Config ルールの違反時に修復アクションを自動実行させる

この便利な機能も、削除時は注意が必要です。 ルールに修正アクションが関連付けられた状態では、AWS Config ルールを削除できません。

このエントリーでは、AWS Config ルールから修正アクションの関連付けを外し、AWS Config ルールを削除する方法を紹介します。

ルール削除時のエラーを確認

管理コンソールから修正アクションが関連付けられた AWS Config ルールを削除しようとすると、"Your Config rule is in use. Try your request again later." というエラーメッセージが表示されます。

エラーメッセージからはエラー原因を読み取りにくいですが、CloudTrail から API の実行ログを確認すると

An error occurred (ResourceInUseException) when calling the DeleteConfigRule operation: The rule RULE-NAME currently has a RemediationConfiguration. Please delete the RemediationConfiguration and try again.

というように、削除対象のルールに修正アクションが関連付けられているのが原因とわかります。

修正アクションを解除

修正アクションのリリース間もない現時点では、管理画面から修正アクションを解除することができません。

そのため、AWS CLI から修正アクションを解除します。

delete-remediation-configuration API を利用し、引数にルール名を指定するだけです。

$ aws configservice delete-remediation-configuration \
  --config-rule-name RULE-NAME
$

AWS Configルールから修正アクションの設定を削除すると、管理コンソール・CLI・SDK からルールを削除できるようになります。

AWS CLI から一連の操作を行う

修正アクションが設定された状態でAWS Config ルールを削除

$ aws configservice delete-config-rule \
  --config-rule-name approved-amis-by-id
An error occurred (ResourceInUseException) when calling the DeleteConfigRule operation: The rule approved-amis-by-id currently has a RemediationConfiguration. Please delete the RemediationConfiguration and try again.

この状態ではルールを削除できません。

修正アクションを確認

エラーメッセージ通り、AWS Config ルールには修正アクションが関連付けられていることを確認します。

$ aws configservice describe-remediation-configurations \
  --config-rule-names approved-amis-by-id
{
    "RemediationConfigurations": [
        {
            "ConfigRuleName": "approved-amis-by-id",
            "TargetType": "SSM_DOCUMENT",
            "TargetId": "AWS-StopEC2Instance",
            "TargetVersion": "1",
            "Parameters": {
                "AutomationAssumeRole": {
                    "StaticValue": {
                        "Values": []
                    }
                },
                "InstanceId": {
                    "ResourceValue": {
                        "Value": "RESOURCE_ID"
                    }
                }
            }
        }
    ]
}

修正アクションを削除

DeleteRemediationConfiguration API で修正アクションを削除します。

$ aws configservice delete-remediation-configuration \
  --config-rule-name approved-amis-by-id
$ aws configservice describe-remediation-configurations \
  --config-rule-names approved-amis-by-id
{
    "RemediationConfigurations": []
}

修正アクションが削除されました。

AWS Config ルールを削除

最後に AWS Config ルールを削除します。

$ aws configservice delete-config-rule \
  --config-rule-name approved-amis-by-id
$

無事、削除されました。

参考