AWS Config 규칙이 작동하지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 7월 20일

내 AWS Config 규칙이 작동하지 않습니다. 이 문제를 해결하려면 어떻게 해야 하나요?

해결 방법

권한, 리소스 범위 또는 구성 변경 항목을 비롯한 다양한 문제로 인해 관리되는 AWS Config 규칙이 작동하지 않을 수 있습니다. 작동하지 않는 AWS Config 규칙을 해결하려면 다음 문제 해결 단계를 시도해 보세요.

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 가장 최신 버전을 사용하고 있는지 확인하세요.

일반 AWS Config 규칙 문제 해결

  1. 구성 레코더가 규칙에 필요한 모든 리소스 유형(예: AWS::EC2::Instance)을 기록하고 있는지 확인합니다.
  2. AWS Config 콘솔을 열고 탐색 창에서 [규칙(Rules)]을 선택합니다. [규정 준수(Compliance)] 필드에 [결과가 보고되지 않음(No results reported)] 또는 [범위에 리소스가 없음(No resources in scope)]으로 표시되는 경우 AWS 관리형 규칙 설정 및 활성화의 8단계를 참조하세요.
  3. 평가 시간이 보고되지 않고 [평가에 실패했음(Evaluations failed)]을 나타내는 경우 AWS CloudTrail 로그에서 PutEvaluations API 호출에서 보고된 오류를 검토합니다.
  4. AWS CloudTrail 콘솔을 연 다음 탐색 창에서 [이벤트 기록(Event history)]을 선택합니다. 로그를 필터링하려면 드롭다운에서 [이벤트 소스(Event source)]를 선택하고 검색 필드에 config.amazonaws.com을 입력합니다. 액세스 거부(Access Denied) 오류에 대한 필터링된 로그 결과를 검토합니다.
  5. 정기적인 트리거 AWS Config 규칙의 경우 CloudTrail 콘솔 이벤트 기록 대시보드에 액세스하여 리소스에서 관련 서비스 API를 확인합니다.
  6. 특정 리소스 구성규정 준수 일정을 검토합니다. 구성 변경 기반 트리거를 사용하여 AWS Config 규칙의 변경 사항을 반영하도록 구성 항목이 생성되었는지 확인합니다.
  7. 레코더 역할 권한 요구 사항이 충족되는지 확인합니다. 이러한 자격 증명은 PutEvaluations API를 사용하여 리소스 구성 및 게시 규정 준수를 설명하는 데 사용됩니다.
  8. 다음 AWS CLI 명령을 실행합니다. ConfigRuleName을 AWS 구성 규칙 이름으로 바꾸고 RegionID를 AWS 리전으로 바꿉니다. 출력에서 LastErrorMessage 값을 검토합니다.
aws configservice describe-config-rule-evaluation-status --config-rule-names ConfigRuleName --region RegionID

사용자 지정 AWS Config 규칙 문제 해결

사용자 지정 AWS Config 규칙의 경우 앞의 일반적인 문제 해결 단계 외에 다음을 확인합니다.

‘lambda 함수를 실행할 수 없습니다(Unable to execute lambda function).’ 오류 메시지는 AWS Config 서비스에 AWS Lambda 함수를 호출할 권한이 없음을 나타냅니다. 이 오류를 해결하려면 다음 명령을 실행하여 필요한 권한을 부여합니다. function_name을 Lambda 함수 이름으로, RegionID를 AWS 리전으로 바꾸고, AWS-accountID를 AWS 계정 ID로 바꿉니다.

aws lambda add-permission --function-name function_name --region RegionID --statement-id allow_config --action lambda:InvokeFunction --principal config.amazonaws.com --source-account AWS-accountID

다음은 Lambda 함수의 리소스 정책의 예입니다.

{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "allow_config",
            "Effect": "Allow",
            "Principal": {
                "Service": "config.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "lambda-function-arn",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "AWS-accountID"
                }
            }
        }
    ]
}

Lambda 함수 이름과 일치하는 [사용자 이름(User name)] 값이 있는 PUTEValuations 이벤트를 식별합니다. 자세한 내용은 errorMessage를 검토하세요.

  • Lambda 함수가 코드를 실행하는 데 사용하는 역할에서 config:PutEvaluations를 수행할 권한이 없는 경우 지정된 역할에 권한을 추가합니다.
  • 권한이 올바른 경우 발생된 예외에 대한 Lambda 함수 코드를 검토합니다. 자세한 내용은 Lambda 함수와 연결된 Amazon CloudWatch 로그 그룹(/AWS/lambda/FunctionName)의 로그를 검토하세요. 코드에 print 문을 추가하여 디버깅 로그를 더 생성합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?