Changelog
View Sourcev5.0.0 - 2026-07-19
- BREAKING CHANGE: The compiled OTP application is now named
:ex_aws_sqsagain (it was:beamlab_ex_aws_sqsin v4.x). The Hex package name is unchanged (beamlab_ex_aws_sqs), but consumers must now depend on it with{:ex_aws_sqs, "~> 5.0", hex: :beamlab_ex_aws_sqs}instead of{:beamlab_ex_aws_sqs, "~> 4.0"}. This makes the package a proper drop-in for anything that declares a dependency on:ex_aws_sqsdirectly (e.g.broadway_sqs), which was impossible under the v4.x app name. Fixes #1
v4.1.0 - 2026-07-17
- Added
:message_system_attributessupport tosend_message/3andsend_message_batch/2entries — currently used for theAWSTraceHeaderX-Ray trace header (accepts the atom:aws_trace_headeror the literal string). - Added
stream_queues/2andstream_dead_letter_source_queues/3: lazy,NextToken-paginated streams, with an optional trailing argument passed through asExAws.request/2config overrides (e.g.:region,:http_client).list_message_move_tasks/2has no stream counterpart (AWS supports no pagination there). send_message_batch/2,delete_message_batch/2, andchange_message_visibility_batch/2now raiseArgumentErrorfor empty or oversized (>10) batches instead of round-tripping an invalid request to AWS.- Documented that
add_permission/2's default emptypermissionsmap is rejected by AWS (at least one account/action pair is required). - Fixed
sqs_queue_attribute_nametypespec: added:kms_master_key_idand:kms_data_key_reuse_period_seconds(both valid forget_queue_attributes/2). - Enabled doctests for
ExAws.SQSand corrected the inspected map key order in doc examples so they now run as tests. - Added golden tests pinning the exact AWS field name for every queue attribute
and message system attribute atom (documents the
SqsManagedSseEnabledmodel-vs-docs casing decision). - CI: cache
_build(incl. dialyzer PLTs) alongsidedeps, and addedmix deps.unlock --check-unused+mix docs --warnings-as-errorsgates. - Added a
mix qualityalias running the CI gates locally (compile with warnings-as-errors, format check, credo strict, dialyzer, tests). - README: documented request-endpoint vs
QueueUrlrouting semantics. CONTRIBUTING: how to run the integration tests locally. - Tidied
.gitignore(package tarball pattern), dropped a non-existenttest/supportentry fromelixirc_paths, and removed the inertstart_permanentmix option; tightened a few typespecs.
v4.0.0 - 2026-07-12
First release of this fork (BeamLabEU/beamlab_ex_aws_sqs),
based on ex-aws/ex_aws_sqs v3.4.0. Published to Hex as
beamlab_ex_aws_sqs (the original ex_aws_sqs name is already taken).
- BREAKING CHANGE: All operations now use the AWS SQS JSON protocol
(
AmazonSQS.<Action>/application/x-amz-json-1.0) instead of the legacy Query/XML protocol. Fixes ex-aws/ex_aws_sqs#34. Successful responses are now the raw JSON body AWS returns (e.g.%{"MessageId" => ...}) instead of a hand-parsed, snake_cased map — see the README's migration guide. - BREAKING CHANGE: Removed
ExAws.SQS.SaxyParserandExAws.SQS.SweetXmlParser, and the:saxy/:sweet_xmloptional dependencies along with them — there's no more XML to parse. - Documented
send_message_batch/2with a runnable example. Fixes ex-aws/ex_aws_sqs#35 - Relaxed the
:hackneydependency constraint (it's only used by this library's own test suite) so it no longer conflicts with apps on hackney 4.x. Fixes ex-aws/ex_aws_sqs#36 - Added
start_message_move_task/2,cancel_message_move_task/1, andlist_message_move_tasks/2(DLQ redrive tasks, added to the AWS API after upstream's last release). - Added pagination options (
:max_results,:next_token) tolist_queues/1andlist_dead_letter_source_queues/2. receive_message/2's:attribute_namesoption now sends the modernMessageSystemAttributeNamesfield instead of the deprecatedAttributeNamesfield.- Fixed binary message attribute handling for the JSON protocol:
BinaryValueis now correctly base64-encoded so that the configured JSON codec'sencode!/1(and the wire request) succeeds. Callers still pass the raw binary as:value. send_message_batch/2(and related batch helpers) now consistently accept both keyword lists and maps for entries (previously only keyword lists worked for entries containing message attributes).- Bumped minimum Elixir version to
~> 1.18,ex_awsto~> 2.7. Dropped the direct dependency on Jason in favor of Elixir's built-inJSONmodule (available since 1.18) — setconfig :ex_aws, json_codec: JSON.
Changelog entries below this point are from the original ex-aws/ex_aws_sqs project.
v3.4.0
- fix
sqs_message_attributetyping - fix: update to Config module import
- refactor: catch sweetxml parsing error / handle non-xml error body
- Add dialyzer, credo, CI workflow alignment
- Bump minimum Elixir version to 1.10
v3.3.1 - 2021-03-29
- Fix Issue #24 Always parse MessageGroupId as a string
v3.3.0 - 2021-03-28
- Updated min elixir version to 1.7
- Updated ex_aws dependency from "~> 2.0" -> "~> 2.1"
- documentation and formating updates
v3.2.1 - 2020-04-14
- Updated mix deps for
:saxy&:sweet_xmlto be marked optional
v3.2.0 - 2020-04-13
- Added optional support for saxy XML parser
- Saxy parser set as default parser if both
:saxyand:sweet_xmlloaded.
v3.1.0 - 2020-01-22
- Added support for Queue Tags
v3.0.2 - 2019-11-21
- Improved docs
v3.0.1 - 2019-11-21
- Updated
sqs_message_attribute_nametypespec forSQS.receive_messageto match AWS support attributes.
v3.0.0 - 2019-08-17
- BREAKING CHANGE: Changed queue specific functions to take the QueueUrl instead of the QueueName. Previously the name was used to build the path for the request. This is an anti-pattern according to aws docs and prevents this library from being used with alternative SQS compatible services, like localstack.
v2.0.1 - 2019-04-11
- Relaxed
:ex_awsversion constraint fromv2.0.0tov2.0
v2.0.0 - 2017-11-10
- Major Project Split. Please see the main ExAws repository for previous changelogs.