-
Notifications
You must be signed in to change notification settings - Fork 9.8k
[Enhancement] aws_lb_listener_rule: Add transform configuration block
#44702
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
[Enhancement] aws_lb_listener_rule: Add transform configuration block
#44702
Conversation
Community GuidelinesThis comment is added to every new Pull Request to provide quick reference to how the Terraform AWS Provider is maintained. Please review the information below, and thank you for contributing to the community that keeps the provider thriving! 🚀 Voting for Prioritization
Pull Request Authors
|
5306aa8 to
03657ae
Compare
a07d792 to
500235b
Compare
|
I rebased this branch onto the latest main branch and resolved conflicts that were caused by the merge of my other PR (#44741). $ make testacc TESTS='TestAccELBV2ListenerRule_transform' PKG=elbv2
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
make: Running acceptance tests on branch: 🌿 f-aws_lb_listener_rule-add_transform 🌿...
TF_ACC=1 go1.24.8 test ./internal/service/elbv2/... -v -count 1 -parallel 20 -run='TestAccELBV2ListenerRule_transform' -timeout 360m -vet=off
2025/10/28 02:40:17 Creating Terraform AWS Provider (SDKv2-style)...
2025/10/28 02:40:17 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccELBV2ListenerRule_transform
=== PAUSE TestAccELBV2ListenerRule_transform
=== CONT TestAccELBV2ListenerRule_transform
--- PASS: TestAccELBV2ListenerRule_transform (288.16s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/elbv2 292.738s |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🎉
% make t K=elbv2 T="TestAccELBV2ListenerRule_|TestAccELBV2ListenerRuleDataSource_"
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
make: Running acceptance tests on branch: 🌿 tmp1 🌿...
TF_ACC=1 go1.24.8 test ./internal/service/elbv2/... -v -count 1 -parallel 20 -run='TestAccELBV2ListenerRule_|TestAccELBV2ListenerRuleDataSource_' -timeout 360m -vet=off
2025/10/30 10:48:02 Creating Terraform AWS Provider (SDKv2-style)...
2025/10/30 10:48:02 Initializing Terraform AWS Provider (SDKv2-style)...
--- PASS: TestAccELBV2ListenerRule_ConditionHTTPHeader_invalid (4.41s)
=== CONT TestAccELBV2ListenerRuleDataSource_conditionPathPattern
--- PASS: TestAccELBV2ListenerRuleDataSource_tags (219.62s)
=== CONT TestAccELBV2ListenerRule_EmptyAction
=== RUN TestAccELBV2ListenerRule_EmptyAction/forward
=== PAUSE TestAccELBV2ListenerRule_EmptyAction/forward
=== RUN TestAccELBV2ListenerRule_EmptyAction/authenticate-oidc
=== PAUSE TestAccELBV2ListenerRule_EmptyAction/authenticate-oidc
=== RUN TestAccELBV2ListenerRule_EmptyAction/authenticate-cognito
=== PAUSE TestAccELBV2ListenerRule_EmptyAction/authenticate-cognito
=== RUN TestAccELBV2ListenerRule_EmptyAction/redirect
=== PAUSE TestAccELBV2ListenerRule_EmptyAction/redirect
=== RUN TestAccELBV2ListenerRule_EmptyAction/fixed-response
=== PAUSE TestAccELBV2ListenerRule_EmptyAction/fixed-response
=== CONT TestAccELBV2ListenerRule_conditionHostHeaderRegex
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionPathPatternRegex (220.55s)
=== CONT TestAccELBV2ListenerRule_conditionHostHeader
--- PASS: TestAccELBV2ListenerRule_conditionHTTPHeaderRegex (224.94s)
=== CONT TestAccELBV2ListenerRule_conditionAttributesCount
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionQueryString (226.47s)
=== CONT TestAccELBV2ListenerRule_redirectWithTargetGroupARN
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionPathPattern (222.38s)
=== CONT TestAccELBV2ListenerRule_Action_defaultOrder
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionHTTPRequestMethod (229.17s)
=== CONT TestAccELBV2ListenerRule_Action_actionDisappears
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionSourceIP (229.76s)
=== CONT TestAccELBV2ListenerRule_Action_specifyOrder
--- PASS: TestAccELBV2ListenerRule_conditionHTTPRequestMethod (232.91s)
=== CONT TestAccELBV2ListenerRuleDataSource_conditionHostHeaderRegex
--- PASS: TestAccELBV2ListenerRuleDataSource_actionForwardWeightedStickiness (236.28s)
=== CONT TestAccELBV2ListenerRuleDataSource_conditionHTTPHeader
--- PASS: TestAccELBV2ListenerRule_conditionPathPattern (237.00s)
=== CONT TestAccELBV2ListenerRuleDataSource_byARN
--- PASS: TestAccELBV2ListenerRule_conditionQueryString (242.65s)
=== CONT TestAccELBV2ListenerRule_oidc
--- PASS: TestAccELBV2ListenerRule_conditionSourceIP (243.44s)
=== CONT TestAccELBV2ListenerRuleDataSource_conditionHTTPHeaderRegex
--- PASS: TestAccELBV2ListenerRule_conditionMultiple (243.73s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_providerOnly
--- PASS: TestAccELBV2ListenerRule_conditionAttributesCount (19.38s)
=== CONT TestAccELBV2ListenerRule_tags_ComputedTag_OnUpdate_Add
--- PASS: TestAccELBV2ListenerRule_tags_ComputedTag_OnUpdate_Replace (250.62s)
=== CONT TestAccELBV2ListenerRuleDataSource_actionFixedResponse
--- PASS: TestAccELBV2ListenerRule_conditionHTTPHeader (252.89s)
=== CONT TestAccELBV2ListenerRule_tags_ComputedTag_OnCreate
--- PASS: TestAccELBV2ListenerRule_Identity_Basic (254.53s)
=== CONT TestAccELBV2ListenerRuleDataSource_actionAuthenticateCognito
--- PASS: TestAccELBV2ListenerRule_conditionUpdateMultiple (279.87s)
=== CONT TestAccELBV2ListenerRuleDataSource_byListenerAndPriority
--- PASS: TestAccELBV2ListenerRule_conditionPathPatternRegex (307.86s)
=== CONT TestAccELBV2ListenerRule_tags_EmptyMap
--- PASS: TestAccELBV2ListenerRule_conditionUpdateMixed (317.09s)
=== CONT TestAccELBV2ListenerRule_tags_EmptyTag_OnUpdate_Replace
--- PASS: TestAccELBV2ListenerRule_priority (382.01s)
=== CONT TestAccELBV2ListenerRule_tags_EmptyTag_OnUpdate_Add
--- PASS: TestAccELBV2ListenerRule_conditionHostHeader (217.00s)
=== CONT TestAccELBV2ListenerRule_tags_EmptyTag_OnCreate
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionHTTPHeader (207.42s)
=== CONT TestAccELBV2ListenerRule_tags_AddOnUpdate
--- PASS: TestAccELBV2ListenerRule_conditionHostHeaderRegex (227.05s)
=== CONT TestAccELBV2ListenerRule_Identity_ExistingResource_NoRefresh_NoChange
--- PASS: TestAccELBV2ListenerRule_oidc (210.75s)
=== CONT TestAccELBV2ListenerRule_tags_null
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionHostHeaderRegex (222.49s)
=== CONT TestAccELBV2ListenerRule_tags
--- PASS: TestAccELBV2ListenerRule_Action_defaultOrder (230.07s)
=== CONT TestAccELBV2ListenerRuleDataSource_tags_DefaultTags_nonOverlapping
--- PASS: TestAccELBV2ListenerRule_Action_actionDisappears (228.67s)
=== CONT TestAccELBV2ListenerRuleDataSource_tags_IgnoreTags_Overlap_ResourceTag
--- PASS: TestAccELBV2ListenerRuleDataSource_actionAuthenticateCognito (214.05s)
=== CONT TestAccELBV2ListenerRuleDataSource_tags_IgnoreTags_Overlap_DefaultTag
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionHTTPHeaderRegex (227.17s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_updateToResourceOnly
--- PASS: TestAccELBV2ListenerRule_Action_specifyOrder (241.76s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_nullOverlappingResourceTag
--- PASS: TestAccELBV2ListenerRuleDataSource_actionFixedResponse (228.74s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_emptyProviderOnlyTag
--- PASS: TestAccELBV2ListenerRule_tags_ComputedTag_OnCreate (233.48s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_emptyResourceTag
--- PASS: TestAccELBV2ListenerRule_tags_ComputedTag_OnUpdate_Add (250.39s)
=== CONT TestAccELBV2ListenerRuleDataSource_tags_EmptyMap
--- PASS: TestAccELBV2ListenerRuleDataSource_byListenerAndPriority (217.00s)
=== CONT TestAccELBV2ListenerRule_cognito
--- PASS: TestAccELBV2ListenerRule_redirectWithTargetGroupARN (274.25s)
=== CONT TestAccELBV2ListenerRule_Identity_ExistingResource
--- PASS: TestAccELBV2ListenerRule_tags_EmptyTag_OnUpdate_Replace (228.74s)
=== CONT TestAccELBV2ListenerRule_Identity_RegionOverride
--- PASS: TestAccELBV2ListenerRule_tags_EmptyMap (241.89s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_overlapping
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_providerOnly (396.05s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_nonOverlapping
--- PASS: TestAccELBV2ListenerRule_tags_EmptyTag_OnUpdate_Add (261.85s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_updateToProviderOnly
--- PASS: TestAccELBV2ListenerRuleDataSource_tags_IgnoreTags_Overlap_ResourceTag (219.47s)
=== CONT TestAccELBV2ListenerRuleDataSource_conditionHostHeader
--- PASS: TestAccELBV2ListenerRule_tags_null (228.56s)
=== CONT TestAccELBV2ListenerRuleDataSource_actionRedirect
--- PASS: TestAccELBV2ListenerRule_Identity_ExistingResource_NoRefresh_NoChange (235.68s)
=== CONT TestAccELBV2ListenerRuleDataSource_tags_NullMap
--- PASS: TestAccELBV2ListenerRule_tags_EmptyTag_OnCreate (246.10s)
=== CONT TestAccELBV2ListenerRule_redirect
--- PASS: TestAccELBV2ListenerRuleDataSource_tags_DefaultTags_nonOverlapping (232.59s)
=== CONT TestAccELBV2ListenerRule_changeListenerRuleARNForcesNew
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_nullOverlappingResourceTag (218.40s)
=== CONT TestAccELBV2ListenerRule_updateRulePriority
--- PASS: TestAccELBV2ListenerRuleDataSource_tags_IgnoreTags_Overlap_DefaultTag (223.59s)
=== CONT TestAccELBV2ListenerRule_updateFixedResponse
--- PASS: TestAccELBV2ListenerRule_tags_AddOnUpdate (248.42s)
=== CONT TestAccELBV2ListenerRule_fixedResponse
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_emptyProviderOnlyTag (221.11s)
=== CONT TestAccELBV2ListenerRule_forwardWeighted
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_emptyResourceTag (221.25s)
=== CONT TestAccELBV2ListenerRule_tags_DefaultTags_nullNonOverlappingResourceTag
--- PASS: TestAccELBV2ListenerRuleDataSource_tags_EmptyMap (218.10s)
=== CONT TestAccELBV2ListenerRuleDataSource_actionAuthenticateOIDC
--- PASS: TestAccELBV2ListenerRule_cognito (225.60s)
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlock_RemoveAction
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_updateToResourceOnly (260.93s)
=== CONT TestAccELBV2ListenerRule_backwardsCompatibility
--- PASS: TestAccELBV2ListenerRule_tags (286.78s)
=== CONT TestAccELBV2ListenerRule_ActionForward_IgnoreFields
--- PASS: TestAccELBV2ListenerRule_Identity_ExistingResource (244.04s)
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlock_AddStickiness
--- PASS: TestAccELBV2ListenerRule_Identity_RegionOverride (243.88s)
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlock_RemoveStickiness
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_overlapping (318.18s)
=== CONT TestAccELBV2ListenerRule_basic
--- PASS: TestAccELBV2ListenerRuleDataSource_conditionHostHeader (209.34s)
=== CONT TestAccELBV2ListenerRule_updateForwardBasic
--- PASS: TestAccELBV2ListenerRuleDataSource_byARN (655.28s)
=== CONT TestAccELBV2ListenerRule_disappears
--- PASS: TestAccELBV2ListenerRuleDataSource_actionRedirect (222.68s)
=== CONT TestAccELBV2ListenerRule_tags_IgnoreTags_Overlap_ResourceTag
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_updateToProviderOnly (263.96s)
=== CONT TestAccELBV2ListenerRule_tags_IgnoreTags_Overlap_DefaultTag
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlock_AddAction
--- PASS: TestAccELBV2ListenerRuleDataSource_tags_NullMap (228.14s)
--- PASS: TestAccELBV2ListenerRule_changeListenerRuleARNForcesNew (222.99s)
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlockToTargetGroupARN_WeightAndStickiness
--- PASS: TestAccELBV2ListenerRule_fixedResponse (230.55s)
=== CONT TestAccELBV2ListenerRule_ActionForward_TargetGroupARNToForwardBlock_NoChanges
--- PASS: TestAccELBV2ListenerRuleDataSource_actionAuthenticateOIDC (211.20s)
=== CONT TestAccELBV2ListenerRule_ActionForward_TargetGroupARNToForwardBlock_WeightAndStickiness
--- PASS: TestAccELBV2ListenerRule_updateRulePriority (234.79s)
=== CONT TestAccELBV2ListenerRule_ActionForward_ForwardBlockToTargetGroupARN_NoChanges
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_nullNonOverlappingResourceTag (229.67s)
=== CONT TestAccELBV2ListenerRule_EmptyAction/forward
=== CONT TestAccELBV2ListenerRule_EmptyAction/redirect
=== CONT TestAccELBV2ListenerRule_EmptyAction/fixed-response
--- PASS: TestAccELBV2ListenerRule_updateFixedResponse (250.23s)
=== CONT TestAccELBV2ListenerRule_EmptyAction/authenticate-cognito
=== CONT TestAccELBV2ListenerRule_EmptyAction/authenticate-oidc
--- PASS: TestAccELBV2ListenerRule_EmptyAction (0.00s)
--- PASS: TestAccELBV2ListenerRule_EmptyAction/forward (1.79s)
--- PASS: TestAccELBV2ListenerRule_EmptyAction/redirect (1.76s)
--- PASS: TestAccELBV2ListenerRule_EmptyAction/fixed-response (1.80s)
--- PASS: TestAccELBV2ListenerRule_EmptyAction/authenticate-cognito (1.91s)
--- PASS: TestAccELBV2ListenerRule_EmptyAction/authenticate-oidc (2.08s)
--- PASS: TestAccELBV2ListenerRule_forwardWeighted (251.89s)
--- PASS: TestAccELBV2ListenerRule_redirect (274.56s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_IgnoreFields (227.82s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlock_RemoveAction (249.70s)
--- PASS: TestAccELBV2ListenerRule_backwardsCompatibility (242.69s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlock_AddStickiness (230.42s)
--- PASS: TestAccELBV2ListenerRule_tags_DefaultTags_nonOverlapping (345.54s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlock_RemoveStickiness (242.53s)
--- PASS: TestAccELBV2ListenerRule_basic (207.07s)
--- PASS: TestAccELBV2ListenerRule_disappears (224.15s)
--- PASS: TestAccELBV2ListenerRule_updateForwardBasic (233.51s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlockToTargetGroupARN_WeightAndStickiness (225.24s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlock_AddAction (245.63s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_TargetGroupARNToForwardBlock_WeightAndStickiness (241.59s)
--- PASS: TestAccELBV2ListenerRule_tags_IgnoreTags_Overlap_ResourceTag (264.63s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_TargetGroupARNToForwardBlock_NoChanges (250.00s)
--- PASS: TestAccELBV2ListenerRule_tags_IgnoreTags_Overlap_DefaultTag (268.78s)
--- PASS: TestAccELBV2ListenerRule_ActionForward_ForwardBlockToTargetGroupARN_NoChanges (256.50s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/elbv2 1190.865s|
Thank you for your contribution, @tabito-hara! 👍 |
|
Warning This Issue has been closed, meaning that any additional comments are much easier for the maintainers to miss. Please assume that the maintainers will not see them. Ongoing conversations amongst community members are welcome, however, the issue will be locked after 30 days. Moving conversations to another venue, such as the AWS Provider forum, is recommended. If you have additional concerns, please open a new issue, referencing this one where needed. |
|
This functionality has been released in v6.19.0 of the Terraform AWS Provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading. For further feature requests or bug reports with this functionality, please create a new GitHub issue following the template. Thank you! |
Rollback Plan
If a change needs to be reverted, we will publish an updated version of the library.
Changes to Security Controls
Are there any changes to security controls (access controls, encryption, logging) in this pull request? If so, explain.
Description
Add a
transformconfiguration block to theaws_lb_listener_ruleresource and data source.AWS API Behavior and Provider Implementation
rewritefield is defined as an array; however, the AWS API accepts only onerewriteentry.MaxItemsforrewriteis set to1in the schema definition.ResetTransform = trueparameter must be passed to theModifyRuleAPI. The provider implementation uses this parameter to remove the transform configuration.rewrite.regexandrewrite.replaceare0and1, respectively.These constraints are not clearly documented in the API reference but are derived from the descriptions shown in the AWS Management Console.
Documentation
transformblock is added.Relations
Closes #44675
References
API documentation
User documentation
Output from Acceptance Testing
Resource
Data Source