내용으로 건너뛰기

AWS 리소스를 생성하려고 할 때 CloudWatch 오류 ‘Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints’를 해결하려면 어떻게 해야 합니까?

3분 분량
0

AWS 리소스를 생성하려고 하면 Amazon CloudWatch Logs 오류 ‘Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints’가 표시됩니다.

간략한 설명

AWS 서비스에 대해 CloudWatch Logs를 활성화하거나 새 AWS 리소스를 생성할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.

"Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints"

CloudWatch 리소스 정책의 최대 허용 문자 길이는 5,120자입니다. 정책이 5,120자를 초과하면 위의 오류가 발생합니다. AWS CloudTrail 이벤트 기록에서 오류 세부 정보를 검토할 수 있습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

AWS CLI만 사용하여 CloudWatch 리소스 정책을 확인할 수 있습니다.

현재 리소스 정책을 확인하고 수정하려면 다음 단계를 완료하십시오.

  1. describe-resource-policies AWS CLI 명령을 실행하여 현재 CloudWatch 리소스 정책을 확인합니다.

    aws logs describe-resource-policies --REGION-NAME > resource.json

    참고: REGION-NAME을 사용자의 AWS 리전으로 바꾸십시오.

  2. 출력을 이름이 resource.json인 JSON 파일에 저장합니다.

  3. resource.json에서 AWSLogDeliveryWrite20150319 정책을 복사한 다음, 정책을 텍스트 편집기에 붙여넣습니다.

  4. 정책의 문자 수를 줄이려면 다음을 수행합니다.
    리소스 및 로그 스트림 등 사용하지 않는 항목을 제거합니다.
    리소스 Amazon 리소스 이름(ARN)을 와일드카드 문자 *로 바꿉니다.
    필요한 권한이 있는 새 리소스 정책을 연결합니다.

    리소스 정책 예시:

    {
    "Version": "2012-10-17",
    "Statement": [
    { "Sid": "AWSLogDeliveryWrite",
    "Effect": "Allow",
    "Principal": {
    "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
    "logs:CreateLogStream", "logs:PutLogEvents"
    ],
    "Resource":
    [ "arn:aws:logs:us-east-1:869614222995:log-group:aws-waf-logs-albwafs:log-stream:xyz",
    "arn:aws:logs:us-east-1:869614222995:log-group:aws-s3:log-stream:abc"
    
    ],
    "Condition":
    { "StringEquals":
    { "aws:SourceAccount": "869614222995" },
    "ArnLike": { "aws:SourceArn": "arn:aws:logs:us-east-1:869614222995:*"
    }
     }
    }
    ]
    }
    

    참고: 이 예시에서는 리소스가 두 개인 정책을 보여줍니다. 리소스 정책이 5,120자 제한을 초과하면 CloudWatch는 정책에 /aws/vendedlogs/* 항목을 자동으로 추가합니다. 그런 다음, 접두사 **/aws/vendedlogs/**를 사용하여 새 로그 그룹을 생성해야 합니다. 사용자 지정 로그 그룹 이름을 사용하려면 특정 리소스 이름을 포함하도록 정책을 편집하십시오. 글자 수 제한 내에 있어야 합니다.

  5. put-resource-policy AWS CLI 명령을 실행하여 AWSLogDeliveryWrite20150319 리소스 정책을 resource.json에서 편집한 버전으로 바꿉니다.

    aws logs put-resource-policy --policy-document file://resource.json --POLICY-NAME  AWSLogDeliveryWrite20150319

    참고: POLICY-NAME을 교체하려는 리소스 정책의 이름으로 바꾸십시오.

새 리소스 정책을 추가하면 CloudWatch 할당량과 관련된 다음과 같은 오류 메시지가 표시될 수 있습니다.

"Error: creating CloudWatch Logs Resource Policy (name): operation error CloudWatch Logs: PutResourcePolicy, exceeded maximum number of attempts, https response error StatusCode: 400, RequestID: 3d123ce1-f123-4d12-12b8-abc1234ba1a9, LimitExceededException: Resource limit exceeded."

AWS 계정에는 리전마다 최대 10개의 CloudWatch Logs 리소스 정책을 보유할 수 있습니다. 이 할당량은 변경할 수 없습니다. 이 문제를 해결하려면 delete-resource-policy AWS CLI 명령을 실행하여 기존 정책을 제거하십시오.

aws logs delete-resource-policy --policy-name POLICY-NAME

참고: POLICY-NAME을 삭제하려는 리소스 정책의 이름으로 바꾸십시오.

리전에 있는 리소스 정책이 10개 미만인 경우 새 리소스 정책을 만들 수 있습니다.

관련 정보

콘솔을 사용하여 최근 관리 이벤트 보기

CloudWatch Logs 할당량

AWS 서비스에서 로깅 활성화