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.
for k in keys:
            key_name = k['key_name']
            version_id = k['version_id']
            success = self.backend.delete_key(
                bucket_name, undo_clean_key_name(key_name), version_id
            )
            if success:
                deleted_names.append({
                    'key': key_name,
                    'version_id': version_id
                })
            else:
                error_names.append(key_name)
        return (
            200,
            {},
            template.render(deleted=deleted_names, delete_errors=error_names),
        )
    s3_responses.S3ResponseInstance._bucket_response_delete_keys = types.MethodType(
        s3_bucket_response_delete_keys, s3_responses.S3ResponseInstance
    )
def main():
    setup_logging()
    
    apply_patches()
    
    sys.exit(moto_main())
if __name__ == '__main__':
    main()