In [this PR](https://github.com/localstack/localstack/pull/1200/files) we introduced a new way of starting S3 in a separate process.

In the meantime, the service startup has been significantly reworked, and it seems that we can integrate the S3 starter into the [`multiserver.py`](https://github.com/localstack/localstack/blob/master/localstack/utils/server/multiserver.py) based loading approach that loads multiple APIs in a single process, for performance reasons. We should look into that.
resource_map_new = dict(resources_map._resource_json_map)
        resource_map_new[logical_id] = resource_json
        should_be_created = template_deployer.should_be_deployed(logical_id, resource_map_new, stack_name)
        
        resource_json_arns_fixed = clone(json_safe(convert_objs_to_ids(resource_json)))
        set_moto_account_ids(resource_json_arns_fixed)
        
        if (resource or update) and not force_create:
            parse_and_update_resource_orig(logical_id,
                resource_json_arns_fixed, resources_map, region_name)
        elif not resource:
            try:
                resource = parse_and_create_resource_orig(logical_id,
                    resource_json_arns_fixed, resources_map, region_name)
                resource.logical_id = logical_id
            except Exception as e:
                if should_be_created:
                    raise
                else:
                    LOG.info('Error on moto CF resource creation. Ignoring, as should_be_created=%s: %s' %
                             (should_be_created, e))
        
        if hasattr(resource, 'region_name') and resource.region_name != region_name:
            LOG.debug('Updating incorrect region from %s to %s' % (resource.region_name, region_name))
            resource.region_name = region_name
        
        is_updateable = False
        if not should_be_created:
            
            is_updateable = template_deployer.is_updateable(logical_id, resource_map_new, stack_name)