Any bucket created through cloudformation will have `"LocationConstraint": null`, implying us-east-1, although in AWS CloudFormation the bucket's region will always match the template's region.
return o if o is None else json.dumps(o) if isinstance(o, (dict, list)) else str(o)
def select_attributes(obj, attrs):
    result = {}
    for attr in attrs:
        if obj.get(attr) is not None:
            result[attr] = str_or_none(obj.get(attr))
    return result
RESOURCE_TO_FUNCTION = {
    'S3::Bucket': {
        'create': {
            'function': 'create_bucket',
            'parameters': {
                'Bucket': ['BucketName', PLACEHOLDER_RESOURCE_NAME],
                'ACL': lambda params, **kwargs: convert_acl_cf_to_s3(params.get('AccessControl', 'PublicRead'))
            }
        }
    },
    'SQS::Queue': {
        'create': {
            'function': 'create_queue',
            'parameters': {
                'QueueName': ['QueueName', PLACEHOLDER_RESOURCE_NAME],
                'Attributes': lambda params, **kwargs: select_attributes(params,
                    ['DelaySeconds', 'MaximumMessageSize', 'MessageRetentionPeriod',
                     'VisibilityTimeout', 'RedrivePolicy']
                ),
                'tags': 'Tags'
            }
        }