Given a valid config, create an S3 Bucket.

    Returns {created: true} if the bucket was created and returns
    {created: False} if the bucket was not created.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_s3_bucket.create my_bucket \\
                         GrantFullControl='emailaddress=example@example.com' \\
                         GrantRead='uri="http://acs.amazonaws.com/groups/global/AllUsers"' \\
                         GrantReadACP='emailaddress="exampl@example.com",id="2345678909876432"' \\
                         LocationConstraint=us-west-1

def create(Bucket,
           ACL=None, LocationConstraint=None,
           GrantFullControl=None,
           GrantRead=None,
           GrantReadACP=None,
           GrantWrite=None,
           GrantWriteACP=None,
           region=None, key=None, keyid=None, profile=None):
    '''
    Given a valid config, create an S3 Bucket.

    Returns {created: true} if the bucket was created and returns
    {created: False} if the bucket was not created.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_s3_bucket.create my_bucket \\
                         GrantFullControl='emailaddress=example@example.com' \\
                         GrantRead='uri="http://acs.amazonaws.com/groups/global/AllUsers"' \\
                         GrantReadACP='emailaddress="exampl@example.com",id="2345678909876432"' \\
                         LocationConstraint=us-west-1

    '''

    try:
        conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
        kwargs = {}
        for arg in ('ACL', 'GrantFullControl',
                    'GrantRead', 'GrantReadACP',
                    'GrantWrite', 'GrantWriteACP'):
            if locals()[arg] is not None:
                kwargs[arg] = str(locals()[arg])  # future lint: disable=blacklisted-function
        if LocationConstraint:
            kwargs['CreateBucketConfiguration'] = {'LocationConstraint': LocationConstraint}
        location = conn.create_bucket(Bucket=Bucket,
                                  **kwargs)
        conn.get_waiter("bucket_exists").wait(Bucket=Bucket)
        if location:
            log.info('The newly created bucket name is located at %s', location['Location'])

            return {'created': True, 'name': Bucket, 'Location': location['Location']}
        else:
            log.warning('Bucket was not created')
            return {'created': False}
    except ClientError as e:
        return {'created': False, 'error': __utils__['boto3.get_error'](e)}