This package provides an AWS CloudWatch Logs sink for LogTape. It allows you to send your LogTape logs directly to AWS CloudWatch Logs with intelligent batching and error handling.
The package is available on JSR and npm.
deno add jsr:@logtape/cloudwatch-logs # for Deno
npm add @logtape/cloudwatch-logs # for npm
pnpm add @logtape/cloudwatch-logs # for pnpm
yarn add @logtape/cloudwatch-logs # for Yarn
bun add @logtape/cloudwatch-logs # for Bun
The quickest way to get started is to use the getCloudWatchLogsSink()
function
with your log group and stream names:
import { configure } from "@logtape/logtape";
import { getCloudWatchLogsSink } from "@logtape/cloudwatch-logs";
await configure({
sinks: {
cloudwatch: getCloudWatchLogsSink({
logGroupName: "/aws/lambda/my-function",
logStreamName: "my-stream",
region: "us-east-1",
}),
},
loggers: [
{ category: [], sinks: ["cloudwatch"], lowestLevel: "info" },
],
});
You can also pass an existing CloudWatch Logs client:
import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs";
import { configure } from "@logtape/logtape";
import { getCloudWatchLogsSink } from "@logtape/cloudwatch-logs";
const client = new CloudWatchLogsClient({ region: "us-east-1" });
await configure({
sinks: {
cloudwatch: getCloudWatchLogsSink({
client,
logGroupName: "/aws/lambda/my-function",
logStreamName: "my-stream",
}),
},
loggers: [
{ category: [], sinks: ["cloudwatch"], lowestLevel: "info" },
],
});
The package includes both unit tests and integration tests. Unit tests use mocked AWS SDK calls and can be run without AWS credentials:
deno task test
Integration tests require real AWS credentials and will create temporary log groups and streams in your AWS account:
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="us-east-1"
deno task test
Integration tests will automatically skip if AWS credentials are not provided.
[!WARNING] Integration tests may incur small AWS charges for CloudWatch Logs usage. Test resources are automatically cleaned up after each test.
To use this sink, your AWS credentials need the following CloudWatch Logs permissions:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}