Introduction

amazon.aws is the Ansible collection that provides modules, inventory plugins, and the aws_ssm connection plugin used to manage Amazon Web Services resources and connect to EC2 instances through AWS Systems Manager. Version 11.5.0 has been published on Ansible Galaxy, replacing 11.4.0.

This is a minor release: it introduces a new option on the aws_ec2 inventory plugin, removes a deprecated compatibility shim in favor of the Python standard library, and ships five bugfixes affecting ec2_spot_instance, aws_sqs_queue, rds_cluster, and the aws_ssm connection plugin.

Whats New

Minor Changes

  • The deprecated ansible.module_utils.six compatibility shims have been replaced with their Python standard library equivalents. ansible.module_utils.six is deprecated starting in ansible-core 2.21 and is scheduled for removal in 2.24 (PR #3039).
  • The aws_ec2 inventory plugin gains a use_deprecated_tags option, which allows disabling the deprecated tags host variable (and its associated deprecation and reserved-name warnings) independently of the global deprecation warning settings (issue #3028).

Bugfixes

  • aws_sqs_queue - Fixed UUID generation in the EDA event source plugin so that meta.uuid is set as a flat key readable by ansible-rulebook. The SQS MessageId is now validated as a proper RFC 4122 UUID, falling back to a deterministic UUID5 when it is invalid (PR #3034).
  • aws_ssm - The transfer bucket's server-side-encryption settings are now applied when uploading files from the controller to the managed node (put_file), matching the existing fetch_file behaviour. Previously the upload was made without encryption settings, so buckets whose policy denies unencrypted PutObject requests rejected every file transfer with AccessDenied (issue #3018).
  • aws_ssm connection plugin - Fixed a hang on reboot by handling ValidationException when terminating sessions that are already disconnected (issue #3044).
  • ec2_spot_instance - Fixed the network_interfaces.ipv6_addresses suboption, which was defined as ipv6address and serialized to the invalid boto3 key Ipv6address instead of Ipv6Address, causing a ParamValidationError when requesting a spot instance with an IPv6 address (issue #2557, PR #3110).
  • module_utils - Fixed fail_json_aws() to work with Python 3.14 and ansible-core 2.19+ by using try/except to detect fail_json exception parameter support instead of traceback.format_exc(), which fails outside an exception context in Python 3.14 (PR #3103).
  • rds_cluster - Fixed final_snapshot_identifier being silently dropped when deleting a DB cluster with skip_final_snapshot=false, which made the deletion fail. The option is now called final_db_snapshot_identifier, matching rds_instance and the FinalDBSnapshotIdentifier API parameter, with final_snapshot_identifier kept as an alias (issue #3084).
  • aws_ssm connection plugin - Fixed timeouts on Ubuntu clients, where dash on Ubuntu requires one-line commands without embedded \n (PR #3036).

Affected Components

ComponentTypeChange
aws_ec2Inventory pluginNew use_deprecated_tags option
module_utilsCoresix shim removed, fail_json_aws fixed for Python 3.14
aws_sqs_queueModuleEDA UUID generation fix
aws_ssmModuleSSE applied on put_file
aws_ssmConnection pluginFixed reboot hang and Ubuntu dash timeout
ec2_spot_instanceModuleFixed ipv6_addresses suboption serialization
rds_clusterModuleRenamed final_snapshot_identifier to final_db_snapshot_identifier (alias kept)

How to Install and Verify

# Install or upgrade the collection from Ansible Galaxy
ansible-galaxy collection install amazon.aws:==11.5.0

# Or upgrade to the latest available version
ansible-galaxy collection install amazon.aws --upgrade

# Verify the installed version
ansible-galaxy collection list amazon.aws

# Confirm from Python/ansible-doc
ansible-doc -t module amazon.aws.rds_cluster | head -n 20

Conclusion

Users relying on the aws_ssm connection plugin with Ubuntu managed nodes, or performing put_file transfers into encryption-enforcing S3 buckets, should prioritize this upgrade. Anyone calling rds_cluster with final_snapshot_identifier should also check their playbooks, since the option has been renamed to final_db_snapshot_identifier (the old name remains available as an alias, so existing playbooks keep working without changes).