Skip to content
GitHubXDiscord

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.

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

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

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

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

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

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

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

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