Skip to content

deps: require ex_aws_auth ~> 1.5 - #1132

Merged
mikehostetler merged 1 commit into
mainfrom
deps/ex-aws-auth-1-5
Oct 21, 2026
Merged

mikehostetler merged 1 commit into
mainfrom
deps/ex-aws-auth-1-5

Conversation

@neilberkman

@neilberkman neilberkman commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Requires ex_aws_auth ~> 1.5 and locks 1.5.0. That release fixes SigV4 canonicalization bugs that can produce SignatureDoesNotMatch:

  • Canonical headers were sorted by name:value instead of by name.
  • Host could be signed twice (SignedHeaders=host;host).
  • Header values collapsed only spaces, not all whitespace.
  • The Req plugin truncated multi-valued headers and did not regenerate host on re-sign.

Bedrock IAM credentials, STS and bidirectional streaming all sign through ex_aws_auth, so requiring 1.5 gives those users the fixes.

Three behaviour changes in 1.5 do not affect req_llm:

  • AWSAuth.Req.attach/2 now rejects unknown options. req_llm passes only :credentials and :service.
  • Region precedence is now explicit option, URL, then credentials.region. req_llm builds the Bedrock URL from the credentials' region, so both agree.
  • Returned header names are lowercase. req_llm does not read signed header names back.

The README and the missing-dependency error message now name ~> 1.5.

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Breaking Changes

Projects that pin ex_aws_auth below 1.5 need to raise that pin.

Testing

  • Tests pass (mix test): 5313 passed. One run had a timing failure in StreamServer.ErrorHandlingTest, which uses a 200 ms wait and passed on 5 isolated reruns.
  • Quality checks pass (mix quality)

These tests cover SigV4 signing with mocked HTTP. No live IAM-signed Bedrock request was made.

Checklist

  • My code follows the project's style guidelines
  • I have updated the documentation accordingly
  • I have added tests that prove my fix/feature works
  • All new and existing tests pass
  • My commits follow conventional commit format
  • I have NOT edited CHANGELOG.md (it is auto-generated by git_ops)

Related Issues

None filed.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

ex_aws_auth 1.5.0 fixes SigV4 canonicalization bugs that can produce
SignatureDoesNotMatch: canonical headers sorted by name:value instead
of name, Host signed twice, whitespace in header values not collapsed,
and multi-valued headers truncated by the Req plugin. Requiring 1.5
gives Bedrock IAM, STS and bidirectional streaming users those fixes.

req_llm passes only :credentials and :service to AWSAuth.Req.attach/2
and builds the Bedrock URL from the credentials' region, so the stricter
option validation and the new region precedence in 1.5 do not change
its requests.
@mikehostetler
mikehostetler merged commit 75894c8 into main Oct 21, 2026
21 checks passed
@mikehostetler
mikehostetler deleted the deps/ex-aws-auth-1-5 branch October 21, 2026 18:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants