##### SUMMARY
The documentation states the following:

```
encryption_key_id

KMS master key ID to use for the default encryption. This parameter is allowed if encryption is aws:kms. If not specified then it will default to the AWS provided KMS key.
```

However, omitting the variable yields the following:

```{"changed": false, "msg": "encryption is aws:kms but all of the following are missing: encryption_key_id"}```

due to these lines: https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/s3_bucket.py#L703-L704 .

Alternatively, specifying an empty string as key yields the following botocore exception:

```    "error": {
        "code": "InvalidArgument",
        "message": "if the default sse algorithm is aws:kms and a KMSMasterKeyID is specified, it must be non-empty",
        "argument_name": "ApplyServerSideEncryptionByDefault"
    },```

Specifying any other value will attempt to set the name of the key to that value.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME

s3_bucket

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ansible 2.10.0.dev0
  config file = /deploy-data/ansible-deploy/ansible.cfg
  configured module search path = ['/deploy-data/ansible-deploy/library']
  ansible python module location = /var/lib/awx/venv/ansible/lib/python3.6/site-packages/ansible
  executable location = /var/lib/awx/venv/ansible/bin/ansible
  python version = 3.6.8 (default, Jan 14 2019, 11:02:34) [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]]
```
This also applies to 2.9.0.dev0

##### OS / ENVIRONMENT

N/A

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
-  s3_bucket: This errors out because empty strings cannot be used
    name: "{{ bucket_name }}"
    region: "{{ region }}"
    encryption: "aws:kms"
    encryption_key_id: ""
-  s3_bucket: This errors out due to the key not being set
    name: "{{ bucket_name }}"
    region: "{{ region }}"
    encryption: "aws:kms"
-  name: This sets the key used to one named 'False'
    s3_bucket:
    name: "{{ bucket_name }}"
    region: "{{ region }}"
    encryption: "aws:kms"
    encryption_key_id: False
```

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

As per the documented changes, it would be expected that the default S3 KMS would be applied to the bucket.

##### ACTUAL RESULTS

See above.
if hasattr(s3_client, "get_bucket_encryption"):
        try:
            current_encryption = get_bucket_encryption(s3_client, name)
        except (ClientError, BotoCoreError) as e:
            module.fail_json_aws(e, msg="Failed to get bucket encryption")
    elif encryption is not None:
        module.fail_json(msg="Using bucket encryption requires botocore version >= 1.7.41")
    if encryption is not None:
        current_encryption_algorithm = current_encryption.get('SSEAlgorithm') if current_encryption else None
        current_encryption_key = current_encryption.get('KMSMasterKeyID') if current_encryption else None
        if encryption == 'none' and current_encryption_algorithm is not None:
            try:
                delete_bucket_encryption(s3_client, name)
            except (BotoCoreError, ClientError) as e:
                module.fail_json_aws(e, msg="Failed to delete bucket encryption")
            current_encryption = wait_encryption_is_applied(module, s3_client, name, None)
            changed = True
        elif encryption != 'none' and (encryption != current_encryption_algorithm) or (encryption == 'aws:kms' and current_encryption_key != encryption_key_id):
            expected_encryption = {'SSEAlgorithm': encryption}
            if encryption == 'aws:kms':
                expected_encryption.update({'KMSMasterKeyID': encryption_key_id})
            try:
                put_bucket_encryption(s3_client, name, expected_encryption)
            except (BotoCoreError, ClientError) as e:
                module.fail_json_aws(e, msg="Failed to set bucket encryption")
            current_encryption = wait_encryption_is_applied(module, s3_client, name, expected_encryption)
            changed = True
        result['encryption'] = current_encryption
    module.exit_json(changed=changed, name=name, **result)
def bucket_exists(s3_client, bucket_name):