Skip to content

feat: cloudwatch logs transformer support #34996

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 16, 2025

Conversation

leonmk-aws
Copy link
Contributor

Issue # (if applicable)

Closes #34861.

Reason for this change

Creates CDK constructs for CloudWatch Logs Transformers. Transformers already have CFN constructs and this achieves functional parity.

Description of changes

Added a Transformer construct which is an abstraction over cfnTransformer.

Created a factory class ProcessorFactory with static methods to create each of the 5 overarching types of processors described in https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html, namely: ParserProcessor, VendedLogParser, StringMutatorProcessor, JsonMutatorProcessor and DataConverterProcessor. These classes implement a _bind() method responsible for returning the props expected by CFN constructs for each processor of the respective types. These classes are further split into their processors defined by enums (ParserProcessorType, VendedLogType, StringMutatorType, JsonMutatorType, DataConverterType) and properties for each processor.

A Transformer expects a transformerConfig which is a list of processors. Processors can be created using the static methods createParserProcessor, createVendedLogParser, createStringMutatorProcessor, createJsonMutatorProcessor and createDataConverterProcessor in the ProcessorFactory, by passing the type (from the enums defined above) and the relevant props for that processor. ValidationError is thrown if the expected/required props are not passed.

Further validations are performed for limit breaches or positions of parsers being incorrect.

Describe any new or updated permissions being added

Description of how you validated changes

Added unit tests for each processor and each validation. Added integ test.

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

Notes

This recreates #34863 that was reverted #34984

### Issue # (if applicable)

Closes aws#34861.

### Reason for this change

Creates CDK constructs for CloudWatch Logs Transformers. Transformers already have CFN constructs and this achieves functional parity.

### Description of changes

Added a `Transformer` construct which is an abstraction over `cfnTransformer`.

Created a factory class `ProcessorFactory` with static methods to create each of the 5 overarching types of processors described in https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html, namely: `ParserProcessor`, `VendedLogParser`, `StringMutatorProcessor`, `JsonMutatorProcessor` and `DataConverterProcessor`. 
These classes implement a `_bind()` method responsible for returning the props expected by CFN constructs for each processor of the respective types.
These classes are further split into their processors defined by enums (`ParserProcessorType`, `VendedLogType`, `StringMutatorType`, `JsonMutatorType`, `DataConverterType`) and properties for each processor.

A `Transformer` expects a `transformerConfig` which is a list of processors. Processors can be created using the static methods `createParserProcessor`, `createVendedLogParser`, `createStringMutatorProcessor`, `createJsonMutatorProcessor` and `createDataConverterProcessor` in the `ProcessorFactory`, by passing the type (from the enums defined above) and the relevant props for that processor. `ValidationError` is thrown if the expected/required props are not passed.

Further validations are performed for limit breaches or positions of parsers being incorrect.

### Describe any new or updated permissions being added

-


### Description of how you validated changes

Added unit tests for each processor and each validation. Added integ test.

### Checklist
- [X] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
@aws-cdk-automation aws-cdk-automation requested a review from a team July 16, 2025 08:11
@github-actions github-actions bot added effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p2 labels Jul 16, 2025
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Jul 16, 2025
@aws-cdk-automation aws-cdk-automation added the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Jul 16, 2025
@alvazjor alvazjor self-assigned this Jul 16, 2025
Copy link
Contributor

mergify bot commented Jul 16, 2025

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: f8ba980
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

Copy link
Contributor

mergify bot commented Jul 16, 2025

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify mergify bot merged commit ba61463 into aws:main Jul 16, 2025
18 checks passed
Copy link
Contributor

Comments on closed issues and PRs are hard for our team to see.
If you need help, please open a new issue that references this one.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jul 16, 2025
@leonmk-aws leonmk-aws deleted the cloudwatch_logs_transformer_support branch July 16, 2025 14:52
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
contribution/core This is a PR that came from AWS. effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p2 pr/needs-maintainer-review This PR needs a review from a Core Team Member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(aws-logs): Transformer support
4 participants