AWS 리소스를 만들거나 AWS 서비스에 대하여 Amazon CloudWatch Logs를 활성화하려고 하면 오류 ‘Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints’가 표시됩니다.
간략한 설명
Amazon CloudWatch 리소스 정책의 최대 허용 문자 길이는 5,120자입니다. 정책이 5,120자를 초과하면 오류가 발생합니다. AWS CloudTrail Event History에서 오류 세부 정보를 검토할 수 있습니다.
해결 방법
현재 리소스 정책을 확인하고 수정하려면 다음 단계를 완료하십시오.
-
다음 describe-resource-policies 명령을 실행하여 현재 리소스 정책을 확인합니다.
aws logs describe-resource-policies --region REGION-NAME > resource.json
참고: REGION-NAME을 사용자의 AWS 리전으로 바꾸십시오. AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오. AWS CLI만 사용하여 CloudWatch 리소스 정책을 확인할 수 있습니다.
-
출력을 이름이 resource.json인 JSON 파일에 저장합니다.
-
resource.json에서 AWSLogDeliveryWrite20150319 정책을 복사한 다음, 정책을 텍스트 편집기에 붙여넣습니다.
-
정책의 문자 수를 줄이려면 다음을 수행합니다.
리소스 및 로그 스트림 등 사용하지 않는 항목을 제거합니다.
리소스 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:*"
}
}
}
]
}
참고: 이 예시에서는 2개의 리소스를 포함하는 정책을 보여줍니다. 리소스 정책이 5,120자 제한을 초과하면 CloudWatch는 정책에 /aws/vendedlogs/* 항목을 자동으로 추가합니다. 그런 다음, 접두사 **/aws/vendedlogs/**를 사용하여 새 로그 그룹을 생성해야 합니다. 사용자 지정 로그 그룹 이름을 사용하려면 특정 리소스 이름을 포함하도록 정책을 편집하십시오. 글자 수 제한 내에 있어야 합니다.
-
다음 put-resource-policy 명령을 실행하여 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.’
CloudWatch에서는 AWS 계정에서 리전마다 최대 10개의 CloudWatch Logs 리소스 정책을 허용합니다. 이 할당량은 변경할 수 없습니다.
사용하지 않는 기존 정책을 제거하려면 다음 delete-resource-policy 명령을 실행하십시오.
aws logs delete-resource-policy --policy-name POLICY-NAME
참고: POLICY-NAME을 삭제하려는 리소스 정책의 이름으로 바꾸십시오.
리전에 리소스 정책이 10개 미만인 경우, put-resource-policy 명령을 실행하여 새 리소스 정책을 만듭니다.
관련 정보
콘솔을 사용하여 최근 관리 이벤트 보기
AWS 서비스에서 로깅 활성화