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
Section titled “Minimal Example”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});
Advanced Configuration
Section titled “Advanced Configuration”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"});
Filtering Specific Log Patterns
Section titled “Filtering Specific Log Patterns”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});
Streaming Logs to Kinesis
Section titled “Streaming Logs to Kinesis”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"});