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"
});