From e9d42babbf8bf137d6e2ab17eafa8d8f30a0085c Mon Sep 17 00:00:00 2001 From: Sloane Hertel Date: Thu, 11 Oct 2018 11:22:36 -0400 Subject: [PATCH] [aws_ssm_parameter_store] use describe_parameters paginator (#45632) (#45666) * [aws_ssm_parameter_store] use describe_parameters paginator (#45632) Fix the service reaching an internal limit while processing the results and returning unexpected data (cherry picked from commit 7aaa5da41d802367fe4ed42c623cfc45467f5532) * changelog --- changelogs/fragments/aws_parameter_store_pagination.yaml | 5 +++++ lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/aws_parameter_store_pagination.yaml 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")