This module lets you ship AWS Logs from services that are only able to store them in an S3 Bucket (pretty useless) to other Services (e.g. Cloudwatch). It ships the Data as JSON encoded String (so easy for every System afterwards)
yarn add aws-log-shipper
const logShipper = require("aws-log-shipper");
module.exports.handler = logShipper.default;
Then configure your Lambda to use index.handler
as handler endpoint.
You should invoke this Lambda with s3:PutEvent
Bucket Notification of those Logfiles.
currently we can ship logs from the following services:
- Cloudfront
- ALB
- ELB (not yet, its hard to differntiate from ALB logs just by looking at file itself)
- S3
we configure the Lambda with ENV
vars completely
SHIPPER
: where to ship the logs (atm the only option iscloudwatch
)CF_LOG_GROUP
: which Cloudwatch Loggroup to use for Cloudfront logsALB_LOG_GROUP
: which Cloudwatch Loggroup to use for ALB logsELB_LOG_GROUP
: which Cloudwatch Loggroup to use for ELB logsS3_LOG_GROUP
: which Cloudwatch Loggroup to use for S3 logs
this was just a quick evening hack, so most things are a bit rough
- Tests
- Docs
- decouple the ENV vars a bit (to tied to Cloudwatch Shipper)
- differentiate between ELB and ALB logs