@logtape/cloudwatch-logs
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@logtape/cloudwatch-logs: LogTape AWS CloudWatch Logs Sink

JSR npm GitHub Actions

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 Bun

Usage

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 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.

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:*:*:*"
    }
  ]
}

Package Sidebar

Install

npm i @logtape/cloudwatch-logs

Homepage

logtape.org/

Weekly Downloads

507

Version

1.0.0

License

MIT

Unpacked Size

62.5 kB

Total Files

26

Last publish

Collaborators

  • hongminhee