diff --git a/changelogs/fragments/aws_parameter_store_pagination.yaml b/changelogs/fragments/aws_parameter_store_pagination.yaml new file mode 100644 index 00000000000..189949b310b --- /dev/null +++ b/changelogs/fragments/aws_parameter_store_pagination.yaml @@ -0,0 +1,5 @@ +--- +bugfixes: + - aws_ssm_parameter_store - AWS Systems Manager Parameter Store may reach + an internal limit before finding the expected parameter, causing misleading + results. This is resolved by paginating the describe_parameters call. diff --git a/lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py b/lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py index f075456a663..7265dfda79c 100644 --- a/lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py +++ b/lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py @@ -185,7 +185,10 @@ def create_update_parameter(client, module): # Description field not available from get_parameter function so get it from describe_parameters describe_existing_parameter = None try: - describe_existing_parameter = client.describe_parameters(Filters=[{"Key": "Name", "Values": [args['Name']]}]) + describe_existing_parameter_paginator = client.get_paginator('describe_parameters') + describe_existing_parameter = describe_existing_parameter_paginator.paginate( + Filters=[{"Key": "Name", "Values": [args['Name']]}]).build_full_result() + except ClientError as e: module.fail_json_aws(e, msg="getting description value")