Skip to content

fix(core,cloudformation): unknown X-Amz-Target -> UnknownOperationException; UpdateStack GetAtt merge (bug-hunt)#2287

Merged
vieiralucas merged 1 commit into
mainfrom
bh-compat
Jul 16, 2026
Merged

fix(core,cloudformation): unknown X-Amz-Target -> UnknownOperationException; UpdateStack GetAtt merge (bug-hunt)#2287
vieiralucas merged 1 commit into
mainfrom
bh-compat

Conversation

@vieiralucas

@vieiralucas vieiralucas commented Jul 16, 2026

Copy link
Copy Markdown
Member

Summary

Compat + orchestration findings from the 2026-07-15 bug hunt (1.44, 1.46).

  • 1.44 (compat) — a request with 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), matching AWS.
  • 1.46 (orchestration)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 resolved Fn::GetAtt / Outputs to
    the literal "Logical.Attr". Create and update now share a
    merged_resource_attributes helper that layers create-time attrs → update
    handler's fresh values → well-known get_att overlay. Confirmed victim
    AWS::Pipes::Pipe (whose CreationTime is create-time-only) keeps its GetAtt
    output across an update.

Test plan

  • E2E dispatch_unknown_target::unknown_x_amz_target_returns_unknown_operation_exception.
  • E2E 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/fmt clean 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-Target now returns 400 UnknownOperationException, and UpdateStack keeps create-time attributes so Outputs don’t degrade.

  • Bug Fixes
    • Dispatch: Requests with X-Amz-Target but unknown operation now return 400 UnknownOperationException (no more API Gateway 404).
    • CloudFormation: UpdateStack merges create-time attrs → update attrs → well-known get_att overlay via a shared helper; Fn::GetAtt/Outputs stay correct (e.g., AWS::Pipes::Pipe CreationTime).

Written for commit aecf9db. Summary will update on new commits.

Review in cubic

…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.
@vieiralucas vieiralucas requested a review from Copilot July 16, 2026 00:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vieiralucas vieiralucas merged commit cf97f75 into main Jul 16, 2026
181 of 182 checks passed
@vieiralucas vieiralucas deleted the bh-compat branch July 16, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants