aws-s3-deployment: Support CfnMapping (Fn::FindInMap) in deploy time values for Source.jsonData #34185
+366
−4
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 #30369
Closes #30369
Reason for this change
In large APIs with custom response templates—such as structured code error mappings—it's common to rely on CfnMapping to reduce template size and avoid CloudFormation's 1MB limit. Repeating static values throughout the template quickly causes size constraints.
By allowing Fn::FindInMap to be used in Source.jsonData, we enable developers to define the mapping once and reference it efficiently. This pattern helps optimize template size and maintainability for dynamic configuration values.
Solves issue
Added support for Fn::FindInMap in deploy-time JSON data passed via Source.jsonData(...).
Extended the renderData() logic to recognize Fn::FindInMap as a valid intrinsic.
Added unit and integration tests to validate this support.
-->
Describe any new or updated permissions being added
N/A – no new permissions are introduced in this change.
Description of how you validated changes
- Valid use of Fn::FindInMap inside strings and as standalone values
- Marker resolution for mixed Fn::Join inputs
- Edge cases (e.g., invalid intrinsics, lazy resolution)
binding.
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license