

Plan your destination strategy early. Rather than creating many log groups to work around the single-filter constraint, route from a single subscription filter to a destination that can fan out (for example, Kinesis Data Streams) or perform transformations.

Choose the destination that best supports your downstream consumers to avoid costly rework later.

- Resource policies on the destination (e.g., Kinesis or Firehose) that allow the source account to put records.
- Cross-account IAM roles granting PutRecords/PutRecordBatch for Kinesis, or delivery permissions for Firehose/S3.
- Secure transport and least-privilege IAM policies to limit scope.


- Forward only ERROR or FATAL events.
- Extract and forward specific fields to minimize payload size.
- Use OR conditions to capture multiple critical levels.
- Use no filter (pass-through) when you require full fidelity—expect higher ingestion costs.

- Direct to OpenSearch Service: If OpenSearch is the primary target, use Kinesis Data Firehose or a Lambda transformer to format and index logs directly into OpenSearch Service. This is common when you want real-time indexing and visualization.
- Lambda bridge to OpenSearch Serverless: When using OpenSearch Serverless (or when significant transformation is needed), insert a Lambda between the subscription and the OpenSearch API. Lambda receives batches, transforms/enriches records, and issues bulk index requests to the OpenSearch Serverless API. Also leverage OpenSearch tiered storage (hot/warm/cold) for cost/performance trade-offs.



- Account for concurrency and provisioned concurrency needs.
- Implement robust error handling, DLQs (dead-letter queues), and retry strategies.
- Optimize memory and timeouts (Lambda max timeout is 15 minutes).
- Use durable buffers like SQS or Kinesis if downstream systems can cause backpressure or longer processing times.


- AWS CloudWatch Logs subscription filters: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html
- Amazon Kinesis Data Streams: https://docs.aws.amazon.com/streams/
- Amazon Kinesis Data Firehose: https://docs.aws.amazon.com/firehose/
- AWS Lambda developer guide: https://docs.aws.amazon.com/lambda/
- Amazon OpenSearch Service: https://docs.aws.amazon.com/opensearch-service/