The logs-cloudwatch command-line tool provides an easy way to send AWS CloudWatch Logs to Apex Logs.
$ curl -sf https://gobinaries.com/apex/logs-cloudwatch | sh
Command usage:
logs-cloudwatch
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
--project-id Apex Logs destination project ID
--auth-token Apex Logs authentication token
--endpoint Apex Logs integration endpoint URL
--region AWS region id
--stack-name AWS CloudFormation stack name (default: ApexLogs)
--exclude AWS CloudWatch log group filters
--include AWS CloudWatch log group filters
--confirm Confirm creation of the stack (default: false)
--template Output the template and exit
Provide your Apex Logs destination project ID, API endpoint (with /integrations/cloudwatch as the path), and API token to provide AWS write-access to your logs. For help creating an API token visit the Apex Logs documentation.
logs-cloudwatch \
--project-id <project-id> \
--endpoint https://<endpoint>/integrations/cloudwatch \
--auth-token <api-token> \
--include /aws/lambda/ \
--region us-west-2
Omitting the --confirm flag will output a preview of the matching log groups:
==> Finding log groups
==> Found 4 matching log groups:
/aws/lambda/logs-api
/aws/lambda/news-api
/aws/lambda/primary-api
/aws/lambda/up-api
==> Run command again with --confirm to create the stack
Tweak your --include and --exclude filters as necessary to get the log groups you want, then add the --confirm flag to generate the stack.
Running logs-cloudwatch without --include or --exclude flags will subscribe to all log groups. The filter patterns are simply sub-string matches, for example get_ would match /aws/lambda/get_team_members, and API would match API-Gateway-Execution-Logs_g2sdfdwn5rkc6/production.
Send all logs:
$ logs-cloudwatchInclude only AWS Lambda logs, matching groups such as /aws/lambda/get_team_members:
$ logs-cloudwatch --include /aws/lambda/Include only AWS Lambda logs, matching groups such as /aws/lambda/get_team_members, but excluding a few.
$ logs-cloudwatch --include /aws/lambda/ --exclude /aws/lambda/api,/aws/lambda/appExclude RDS and API Gateway logs:
$ logs-cloudwatch --exclude API-Gateway,RDS