AWS Config 設定レコーダーを作成しようとすると、MaxNumberOfConfigurationRecordersExceedException エラーが発生します。この問題を解決するには、どうすればよいですか?
簡単な説明
AWS Config は、設定レコーダーを使用して、リソース設定の変更を記録します。AWS Config では、現在、アカウント内のリージョンごとに 1 つの設定レコーダーしか許可されていません。MaxNumberOfConfigurationRecordersExceededException エラーは、リージョンのアカウントに設定レコーダーが既に存在しているため、新しく作成できないことを示します。このエラーは、レコーダーが AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または AWS CloudFormation のいずれを使用して作成されたかに関係なく発生します。
解決方法
MaxNumberOfConfigurationRecordersExceededException エラーを解決し、新しい設定レコーダーを作成するには、既存の設定レコーダーを特定し、削除する必要があります。
注意: コンソールから設定レコーダーを削除することはできません。削除はプログラムで実行する必要があります。
まず、必要なコマンドを実行するために適切な AWS Identity and Access Management (IAM) アクセス許可が設定されていることを確認します。その後、AWS CLI または CloudFormation を使用して、既存の設定レコーダーを特定して削除できます。
IAM アクセス許可
設定レコーダーを記述して削除するには、以下の IAM アクセス許可を追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"config:DescribeConfigurationRecorders",
"config:DeleteConfigurationRecorder"
],
"Resource": "*"
}
]
}
設定レコーダーを起動および停止するには、以下の IAM アクセス許可を追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"config:PutConfigurationRecorder",
"iam:PassRole",
"config:DescribeConfigurationRecorders",
"config:StopConfigurationRecorder",
"config:StartConfigurationRecorder",
"config:DeleteConfigurationRecorder"
],
"Resource": "*"
}
]
}
設定レコーダーの特定と削除 (AWS CLI)
注意: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
既存の設定レコーダー名を特定
次のコマンドを実行して、特定のリージョンの既存の設定レコーダーを識別します。RegionID を、使用している AWS リージョンに置き換えます。
$aws configservice describe-configuration-recorders --region RegionID
出力を確認します。既存の設定レコーダ名は、出力の「name」の横に一覧表示されます。
既存の設定レコーダーを削除
次のコマンドを実行して、既存の設定レコーダーを削除します。RecorderName と RegionID を実際の値に置き換えます。
$aws configservice delete-configuration-recorder --configuration-recorder-name RecorderName --region RegionID
注意: レコーダーが正常に削除された場合、delete-configuration-recorder コマンドは出力を返しません。
レコーダーを開始および停止するための API 呼び出し
設定レコーダーを起動または停止する必要がある場合は、API 呼び出しを使用できます。
次のコマンドを実行して、設定レコーダーを起動します。RecorderName を、設定レコーダーの名前に置き換えます。
$aws configservice start-configuration-recorder --configuration-recorder-name RecorderName
次のコマンドを実行して、設定レコーダーを停止します。RecorderName を、設定レコーダーの名前に置き換えます。
$aws configservice stop-configuration-recorder --configuration-recorder-name RecorderName
設定レコーダーの特定と削除 (CloudFormation)
CloudFormation StackSet テンプレートを使用して AWS Config を有効にした場合は、このセクションのガイダンスに従って設定レコーダーを特定して削除します。
AWS Lambda ベースのカスタムリソースを使用して、設定レコーダーを識別および削除するためのコードロジックを記述できます。
設定レコーダーを削除した後、カスタムリソースの cfn-response モジュールを使用して、新しい設定レコーダーの作成を続行できます。
新しい設定レコーダーを作成すると、 StartConfigurationRecorder API を実行してレコーダーを起動できます。
関連情報
describe-configuration-recorders
delete-configuration-recorder
Python、AWS Lambda、および crhelper による CloudFormation カスタムリソースの作成