diff --git a/changelogs/fragments/1627-ssm_parameter-KeyError-when-adding-description.yml b/changelogs/fragments/1627-ssm_parameter-KeyError-when-adding-description.yml new file mode 100644 index 00000000000..98344a6ff4a --- /dev/null +++ b/changelogs/fragments/1627-ssm_parameter-KeyError-when-adding-description.yml @@ -0,0 +1,2 @@ +bugfixes: + - ssm_parameter - Fix a ``KeyError`` when adding a description to an existing parameter (https://github.com/ansible-collections/community.aws/issues/1471). diff --git a/plugins/modules/ssm_parameter.py b/plugins/modules/ssm_parameter.py index af4de1c15fb..5381c0d67bf 100644 --- a/plugins/modules/ssm_parameter.py +++ b/plugins/modules/ssm_parameter.py @@ -383,7 +383,7 @@ def create_update_parameter(client, module): except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: module.fail_json_aws(e, msg="getting description value") - if describe_existing_parameter['Description'] != args['Description']: + if describe_existing_parameter.get('Description') != args['Description']: (changed, response) = update_parameter(client, module, **args) if changed: _wait_updated(client, module, module.params.get('name'), original_version) diff --git a/tests/integration/targets/ssm_parameter/tasks/main.yml b/tests/integration/targets/ssm_parameter/tasks/main.yml index 7f4e4f6e2d4..3d4fb643b30 100644 --- a/tests/integration/targets/ssm_parameter/tasks/main.yml +++ b/tests/integration/targets/ssm_parameter/tasks/main.yml @@ -415,6 +415,30 @@ that: - result is not changed + - name: Create key/value pair in aws parameter store with no description + aws_ssm_parameter_store: + name: '{{ simple_name }}' + value: '{{ simple_value }}' + register: result + + - assert: + that: + - result is changed + - '"description" not in result.parameter_metadata' + + - name: Add a description + aws_ssm_parameter_store: + name: '{{ simple_name }}' + value: '{{ simple_value }}' + description: '{{ simple_description }}' + register: result + + - assert: + that: + - result is changed + - '"description" in result.parameter_metadata' + - result.parameter_metadata.description == simple_description + always: # ============================================================ - name: Delete remaining key/value pairs in aws parameter store