실시간 AWS Lambda 로그 스트리밍 웹 UI - CloudWatch 생략

실시간 Lambda 로그 웹 UI에 스트리밍 - CloudWatch 없이

분야

프로그래밍/소프트웨어 개발

대상자

AWS Lambda 및 로그 관리에 관심 있는 개발자. 실시간 로그 시각화 및 비용 효율적인 솔루션을 구축하고자 하는 중급~고급 개발자.

핵심 요약

  • *_Kinesis Firehose_, _Lambda destinations_, _WebSocket 서버_를 활용해 _실시간 Lambda 로그_**를 웹 UI로 직접 전송합니다.
  • _CloudWatch Logs_ 대신 _Kinesis Firehose_로 로그 버퍼링 및 전송 경로 설정
  • _AWS SDK_를 통해 Lambda에서 Firehose로 로그 전송
  • _WebSocket_ 서버를 통해 클라이언트에 실시간 로그 전송
  • _Lambda 함수_로 Firehose 로그를 WebSocket 서버로 중계

섹션별 세부 요약

  1. Kinesis Firehose 설정
  • AWS 콘솔에서 Kinesis → Firehose → Create Delivery Stream
  • Direct PUT 방식 선택 및 목적지로 Amazon S3 또는 Discard records 설정
  • lambda-logs-firehose로 이름 지정 및 스트림 이름 기록
  1. Lambda에서 Firehose 로그 전송
  • console.log 대신 AWS SDK로 Firehose에 로그 전송
  • FirehoseClientPutRecordCommand 사용
  • JSON 형식 로그 데이터를 Base64로 인코딩하여 전송
  1. WebSocket 서버 구축
  • Node.js로 WebSocket 서버 구현 (포트 3000)
  • 클라이언트 연결 시 로그 데이터 실시간 전송
  • ws 라이브러리 사용 및 broadcastLog 함수로 클라이언트 통지
  1. 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 함수의 안정성 및 확장성을 고려해야 합니다.