실시간 Lambda 로그 웹 UI에 스트리밍 - CloudWatch 없이
분야
프로그래밍/소프트웨어 개발
대상자
AWS Lambda 및 로그 관리에 관심 있는 개발자. 실시간 로그 시각화 및 비용 효율적인 솔루션을 구축하고자 하는 중급~고급 개발자.
핵심 요약
- *_Kinesis Firehose_, _Lambda destinations_, _WebSocket 서버_를 활용해 _실시간 Lambda 로그_**를 웹 UI로 직접 전송합니다.
- _CloudWatch Logs_ 대신 _Kinesis Firehose_로 로그 버퍼링 및 전송 경로 설정
- _AWS SDK_를 통해 Lambda에서 Firehose로 로그 전송
- _WebSocket_ 서버를 통해 클라이언트에 실시간 로그 전송
- _Lambda 함수_로 Firehose 로그를 WebSocket 서버로 중계
섹션별 세부 요약
- Kinesis Firehose 설정
- AWS 콘솔에서 Kinesis → Firehose → Create Delivery Stream
- Direct PUT 방식 선택 및 목적지로 Amazon S3 또는 Discard records 설정
- lambda-logs-firehose로 이름 지정 및 스트림 이름 기록
- Lambda에서 Firehose 로그 전송
console.log
대신 AWS SDK로 Firehose에 로그 전송FirehoseClient
와PutRecordCommand
사용- JSON 형식 로그 데이터를 Base64로 인코딩하여 전송
- WebSocket 서버 구축
- Node.js로 WebSocket 서버 구현 (포트 3000)
- 클라이언트 연결 시 로그 데이터 실시간 전송
ws
라이브러리 사용 및broadcastLog
함수로 클라이언트 통지
- Firehose Lambda Destination 설정
- Firehose 설정에서 Lambda destination으로 WebSocket 트리거 설정
- Firehose 로그를 WebSocket 서버로 중계하는 Lambda 함수 구현
- Base64 데이터를 UTF-8로 디코딩 후 WebSocket 전송
결론
- *_AWS Lambda 로그를 실시간으로 웹 UI에 전송_**하는 비용 효율적인 솔루션을 제공합니다.
- Kinesis Firehose로 로그 버퍼링, WebSocket으로 실시간 전송
- Lambda 함수로 Firehose와 WebSocket 간 중계
- 브라우저 UI에서 로그를 실시간으로 확인 가능
- CloudWatch Logs 대신 사용하여 비용 절감 및 성능 향상 가능
- 실무 적용 시 WebSocket 서버와 Lambda 함수의 안정성 및 확장성을 고려해야 합니다.