We're using an old version of `boto` (through `moto`) to detect the available regions for Lambda (and other APIs). We should switch from `boto` to the newer `boto3` library, which includes the up-to-date endpoints.

```
code/localstack/localstack/services/cloudformation/cloudformation_starter.py", line 502, in Lambda_create_from_cloudformation_json
    return Lambda_create_from_cloudformation_json_orig(resource_name, cloudformation_json, region_name)
  File "/opt/code/localstack/.venv/lib/python3.7/site-packages/moto/awslambda/models.py", line 519, in create_from_cloudformation_json
    backend = lambda_backends[region_name]
KeyError: 'eu-west-2'
```
port = port or config.PORT_CLOUDFORMATION
    backend_port = DEFAULT_PORT_CLOUDFORMATION_BACKEND
    print('Starting mock CloudFormation (%s port %s)...' % (get_service_protocol(), port))
    start_proxy_for_service('cloudformation', port, backend_port, update_listener)
    if RUN_SERVER_IN_PROCESS:
        cmd = 'python "%s" cloudformation -p %s -H 0.0.0.0' % (__file__, backend_port)
        env_vars = {'PYTHONPATH': ':'.join(sys.path)}
        return do_run(cmd, asynchronous, env_vars=env_vars)
    else:
        argv = ['cloudformation', '-p', str(backend_port), '-H', '0.0.0.0']
        thread = FuncThread(start_up, argv)
        thread.start()
        return thread
def set_moto_account_ids(resource_json):
    def fix_ids(obj, **kwargs):
        if isinstance(obj, dict):
            for key, value in obj.items():
                if isinstance(value, six.string_types):
                    if 'arn' in key.lower() or (':%s:' % TEST_AWS_ACCOUNT_ID) in value:
                        obj[key] = value.replace(TEST_AWS_ACCOUNT_ID, MOTO_ACCOUNT_ID)
        return obj
    return recurse_object(resource_json, fix_ids)
def get_entity_id(entity, resource_json=None):