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'
```
def fix_ids(obj, **kwargs):
        if isinstance(obj, dict):
            obj = dict(obj)
            for key, value in obj.items():
                if isinstance(value, BaseModel):
                    entity_id = get_entity_id(value)
                    obj[key] = entity_id or value
        return obj
    return recurse_object(resource_json, fix_ids)
def update_physical_resource_id(resource):
    phys_res_id = getattr(resource, 'physical_resource_id', None)
    if not phys_res_id:
        if isinstance(resource, lambda_models.LambdaFunction):
            func_arn = aws_stack.lambda_function_arn(resource.function_name)
            resource.function_arn = resource.physical_resource_id = func_arn
        elif isinstance(resource, sfn_models.StateMachine):
            sm_arn = aws_stack.state_machine_arn(resource.name)
            resource.physical_resource_id = sm_arn
        elif isinstance(resource, service_models.StepFunctionsActivity):
            act_arn = aws_stack.stepfunctions_activity_arn(resource.params.get('Name'))
            resource.physical_resource_id = act_arn
        elif isinstance(resource, kinesis_models.Stream):
            resource.physical_resource_id = resource.stream_name
        else:
            LOG.warning('Unable to determine physical_resource_id for resource %s' % type(resource))
def apply_patches():
    """ Apply patches to make LocalStack seamlessly interact with the moto backend.
        TODO: Eventually, these patches should be contributed to the upstream repo! """
    
    def get_key(self, bucket_name, key_name, version_id=None):