AWS Lambda 함수를 호출하도록 Amazon CloudWatch 구독 필터를 구성하고 싶습니다.
간략한 설명
Amazon CloudWatch Logs에서는 Lambda 함수로 로그 데이터를 보내는 구독 필터를 사용할 수 있습니다. CloudWatch Logs 구독 필터는 base64로 인코딩되고 GZIP 형식으로 압축됩니다.
Lambda 함수를 생성하기 전에 생성할 로그 데이터의 양을 계산해야 합니다. 그리고 해당 볼륨 용량을 관리할 수 있는 함수를 생성해야 합니다. 함수의 볼륨이 충분하지 않으면 로그 스트림에서 병목 현상이 발생합니다. 자세한 내용은 Lambda 할당량을 참조하세요.
참고: 대량의 CloudWatch Logs 데이터를 스트리밍하면 사용량에 따른 요금이 많이 발생할 수 있습니다. AWS Budgets를 사용하여 지출과 사용량을 추적하는 것이 좋습니다. 자세한 지침은 AWS Budgets를 사용하여 지출 및 사용량을 추적하려면 어떻게 해야 합니까?를 참조하세요.
해결 방법
로그 데이터를 AWS Lambda 함수로 보내는 CloudWatch Logs 구독 필터를 생성하세요.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.
1. 다음과 유사한 add-permission AWS CLI 명령을 실행하여 Lambda 함수를 호출할 수 있는 CloudWatch Logs 권한을 제공합니다.
aws lambda add-permission \
--function-name "helloworld" \
--statement-id "helloworld" \
--principal "logs.amazonaws.com" \
--action "lambda:InvokeFunction" \
--source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
--source-account "123456789012"
중요: ‘helloworld’를 실제 Lambda 함수 이름으로, ‘YourLogGroup’을 실제 로그 그룹으로, 예제 계정 번호를 실제 계정으로 바꾸세요.
2. 키워드가 포함된 로그 이벤트를 전송할 수 있도록 put-subscription-filter AWS CLI 명령을 사용하여 구독 필터를 생성합니다. 다음 예에서는 Lambda 함수에 ‘ERROR’라는 키워드를 사용합니다.
중요: ‘YourLogGroup’을 실제 로그 그룹으로 바꾸고 예제 계정 번호를 실제 계정으로 바꾸세요.
aws logs put-subscription-filter \
--log-group-name YourLogGroup \
--filter-name demo \
--filter-pattern "ERROR" \
--destination-arn arn:aws:lambda:region:123456789123:function:helloworld
CloudWatch 로그 그룹 ’YourLogGroup’은 키워드 ‘ERROR’가 포함된 다음과 유사한 로그 이벤트를 수신할 때 Lambda 함수를 호출합니다.
{
"awslogs": {
"data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
}
}
관련 정보
필터 및 패턴 구문