feat: add Fn::ForEach support for CloudFormation deploy-time loops#36801
Open
feat: add Fn::ForEach support for CloudFormation deploy-time loops#36801
Conversation
Core functionality: - Add Fn.forEach() and Fn.forEachRef() intrinsic functions - Add FnForEach class implementing IResolvable - Auto-add AWS::LanguageExtensions transform High-level constructs: - Add ForEachResource for creating multiple resources - Add ForEachOutput for creating multiple outputs - Add ForEachCondition for creating multiple conditions - Add CfnForEachFragment for template section injection Features: - Virtual CfnResource template for Aspect support - Loop variable validation (alphanumeric only) - Lazy evaluation for proper resolution order - Support for IResolvable collections - Helper methods: ref(), refFor(), getAtt(), getAttFor() Tests: - Add comprehensive test coverage for all ForEach constructs - Test transform auto-addition - Test validation and error cases
Core functionality: - Add Fn.forEach() intrinsic function with validation - Add Fn.forEachRef() for loop variable references - Add ForEachResource for creating multiple resources - Add ForEachOutput for creating multiple outputs - Add ForEachCondition for creating multiple conditions - Add CfnForEachFragment for template injection - Auto-add AWS::LanguageExtensions transform API improvements: - Add static type guards (isForEachResource, isForEachOutput, isForEachCondition) - Add ref(), getAtt(), refFor(), getAttFor() methods on ForEachResource - Support parameter references in collections - Add comprehensive JSDoc documentation Testing: - Add integration test for ForEach functionality - Add unit tests for all ForEach constructs - Add validation for alphanumeric loop names Documentation: - Add README section with examples - Add Rosetta fixture declarations
aws-cdk-automation
previously requested changes
Jan 26, 2026
- Add Token import to integ test
- Wrap buckets.getAtt('Arn') with Token.asString() for type safety
✅ Updated pull request passes all PRLinter validations. Dismissing previous PRLinter review.
Contributor
|
|
||||||||||||||
Contributor
|
|
||||||||||||||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue # (if applicable)
Closes #.
Reason for this change
Ensure ability to loop directly in CloudFormation for CDK-generated CloudFormation templates
Related: aws/aws-cdk-cli#1063
Description of changes
Core functionality:
API improvements:
Testing:
Documentation:
Describe any new or updated permissions being added
N/A
Description of how you validated changes
Validated via tests
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license