概要
AWS Lambda上で稼働するWebアプリケーションのログをGoogle Cloud BigQueryで分析するために、CloudWatch Logsから継続的に転送する体制を構築しました。
構成
クリックして拡大表示タップして拡大表示
技術スタック
- AWS CDK
- AWSリソースはAWS CDK(TypeScript)を利用してIaC管理しました。
- 開発者ごとに独立した環境を起動できるようにCDKレイヤーを実装しました。
- GitHub Actions
- CI/CDパイプラインの構築にGitHub Actionsを利用しました。
- プルリクエスト作成時にESLint, Prettier, tscによる静的解析を実行するようにしました。
- プルリクエスト作成時にJestによるユニットテストを実行するようにしました。
- Jest
- Lambda関数にデプロイするTypeScriptコードのユニットテスト実行体制を構築しました。
- CloudWatch Logs サブスクリプションフィルタ
- CloudWatch LogsのログをKinesis Data Streamsに流すために利用しました。
- Kinesis Data Streams
- CloudWatch Logsに流れてくるログを一時格納し、一定件数をまとめてLambdaで処理していくために利用しました。
- Google Cloud BigQuery
- GA4のBigQueryエクスポートを利用しており、開発者が慣れていたため、アプリケーションのログの分析もBigQueryで行う構成としました。
所感
BigQueryはサーバーレスであり、リソースの確保にコストがかからないので利用しやすいです。一方で、AWSからBigQueryにデータを入れる場合、AWSから外部への通信部分で課金されるので、大量のデータを転送する場合はコストも考慮する必要があります。