@logtape/cloudwatch-logs
v2.0.5
Published
AWS CloudWatch Logs sink for LogTape
Downloads
1,361
Maintainers
Readme
@logtape/cloudwatch-logs: LogTape AWS CloudWatch Logs Sink
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.
Installation
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 BunUsage
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" },
],
});Testing
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 testIntegration 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 testIntegration 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.
Required IAM permissions
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:*:*:*"
}
]
}Docs
The docs of this package is available at https://logtape.org/sinks/cloudwatch-logs. For the API references, see https://jsr.io/@logtape/cloudwatch-logs.
