fix(core,cloudformation): unknown X-Amz-Target -> UnknownOperationException; UpdateStack GetAtt merge (bug-hunt)#2287
Merged
Merged
Conversation
…eption; UpdateStack GetAtt merge (bug-hunt) - compat (1.44): a request carrying an unrecognized X-Amz-Target fell through to the apigateway catch-all and 404'd with a misleading "Stage not found". It's unambiguously an awsJson call, so dispatch now returns UnknownOperationException (400) the way AWS does. - orchestration (1.46): UpdateStack rebuilt StackResource.attributes from the update handler's subset only, dropping create-time attributes (and the well-known GetAtt overlay), so a 2nd deploy made Fn::GetAtt / Outputs resolve to the literal "Logical.Attr". Both create and update now go through a shared merged_resource_attributes helper that layers create-time attrs, the update handler's fresh values, and the well-known get_att overlay. Confirmed victim: AWS::Pipes::Pipe (CreationTime is create-time-only) now keeps its GetAtt output across an update. Tests: e2e dispatch_unknown_target (UnknownOperationException, not the apigateway 404) and cloudformation_pipes::cfn_update_preserves_create_time_getatt_output.
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.
Summary
Compat + orchestration findings from the 2026-07-15 bug hunt (1.44, 1.46).
X-Amz-Targetfell throughto the apigateway catch-all and 404'd with a misleading "Stage not found".
It's unambiguously an awsJson call, so dispatch now returns
UnknownOperationException(400), matching AWS.UpdateStackrebuiltStackResource.attributesfrom the update handler's subset only, dropping create-time attributes and the
well-known GetAtt overlay, so a 2nd deploy resolved
Fn::GetAtt/ Outputs tothe literal
"Logical.Attr". Create and update now share amerged_resource_attributeshelper that layers create-time attrs → updatehandler's fresh values → well-known
get_attoverlay. Confirmed victimAWS::Pipes::Pipe(whoseCreationTimeis create-time-only) keeps its GetAttoutput across an update.
Test plan
dispatch_unknown_target::unknown_x_amz_target_returns_unknown_operation_exception.cloudformation_pipes::cfn_update_preserves_create_time_getatt_output(create → update → CreationTime output stays a real timestamp, not the literal).
cargo build/clippy --all-targets/fmtclean on core, cloudformation, fakecloud-e2e.No new public API surface (dispatch correctness + provisioner internals), so no
SDK/docs regeneration needed.
Summary by cubic
Fixes awsJson dispatch for unknown targets and preserves CloudFormation GetAtt values across updates. Unknown
X-Amz-Targetnow returns 400UnknownOperationException, andUpdateStackkeeps create-time attributes so Outputs don’t degrade.X-Amz-Targetbut unknown operation now return 400UnknownOperationException(no more API Gateway 404).UpdateStackmerges create-time attrs → update attrs → well-knownget_attoverlay via a shared helper;Fn::GetAtt/Outputs stay correct (e.g.,AWS::Pipes::PipeCreationTime).Written for commit aecf9db. Summary will update on new commits.