Skip to content

SubscriptionFilter

The SubscriptionFilter resource allows you to manage AWS Logs SubscriptionFilters for streaming log data to various destinations such as Amazon Kinesis or Lambda functions.

Minimal Example

Create a basic subscription filter to stream logs from a log group to a specified destination.

ts
import AWS from "alchemy/aws/control";

const minimalSubscriptionFilter = await AWS.Logs.SubscriptionFilter("basicFilter", {
  FilterPattern: "[host, ident, auth, timestamp, request]",
  LogGroupName: "my-log-group",
  DestinationArn: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction",
  ApplyOnTransformedLogs: true
});

Advanced Configuration

Configure a subscription filter with advanced options like custom filter name and distribution method.

ts
const advancedSubscriptionFilter = await AWS.Logs.SubscriptionFilter("advancedFilter", {
  FilterPattern: "{ $.level = \"ERROR\" }",
  LogGroupName: "my-log-group",
  DestinationArn: "arn:aws:kinesis:us-west-2:123456789012:stream/myKinesisStream",
  FilterName: "ErrorFilter",
  Distribution: "ByLogStream"
});

Filtering Specific Log Patterns

Set up a subscription filter to capture logs matching a specific pattern for a Lambda function.

ts
const lambdaFilter = await AWS.Logs.SubscriptionFilter("lambdaErrorFilter", {
  FilterPattern: "{ $.error = true }",
  LogGroupName: "application-log-group",
  DestinationArn: "arn:aws:lambda:us-west-2:123456789012:function:errorHandler",
  FilterName: "LambdaErrorHandler",
  ApplyOnTransformedLogs: false
});

Streaming Logs to Kinesis

Create a subscription filter that streams log data to a Kinesis stream for real-time processing.

ts
const kinesisFilter = await AWS.Logs.SubscriptionFilter("kinesisLogFilter", {
  FilterPattern: "[ip, timestamp, request]",
  LogGroupName: "web-application-logs",
  DestinationArn: "arn:aws:kinesis:us-west-2:123456789012:stream/webAppLogsStream",
  FilterName: "WebLogsToKinesis",
  Distribution: "Random"
});