##### 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.
result['versioning'] = {
            'Versioning': versioning_status.get('Status', 'Disabled'),
            'MfaDelete': versioning_status.get('MFADelete', 'Disabled'),
        }
    
    try:
        requester_pays_status = get_bucket_request_payment(s3_client, name)
    except BotoCoreError as exp:
        module.fail_json_aws(exp, msg="Failed to get bucket request payment")
    except ClientError as exp:
        if exp.response['Error']['Code'] != 'NotImplemented' or requester_pays is not None:
            module.fail_json_aws(exp, msg="Failed to get bucket request payment")
    else:
        if requester_pays:
            payer = 'Requester' if requester_pays else 'BucketOwner'
            if requester_pays_status != payer:
                put_bucket_request_payment(s3_client, name, payer)
                requester_pays_status = wait_payer_is_applied(module, s3_client, name, payer, should_fail=False)
                if requester_pays_status is None:
                    
                    
                    put_bucket_request_payment(s3_client, name, payer)
                    requester_pays_status = wait_payer_is_applied(module, s3_client, name, payer, should_fail=True)
                changed = True
        result['requester_pays'] = requester_pays
    
    try:
        current_policy = get_bucket_policy(s3_client, name)
    except BotoCoreError as exp:
        module.fail_json_aws(exp, msg="Failed to get bucket policy")