## Problem
Currently, even if `LAMBDA_REMOTE_DOCKER=1`, we unzip the zip files in the directory they are in, which is usually /var/lib/localstack, which usually has a bind mount to the host.
On docker desktop, due to the use of grpc-FUSE (on macos), this can be very slow, about 200 times slower than on volumes / directly on the host. With experimental virtio filesystem enabled (also on macos), this can be reduced to about 30 times as slow, but still problematic.
This means a lambda may take a lot of time processing, for each additional layer some more. This especially affects nodejs lambdas with huge node_modules folders.

## Probable solution
At least if `LAMBDA_REMOTE_DOCKER=1`, we should leave the initial zip files on the bind mount (for persistence etc), but the working directories after unzipping should be located on non-bind mounts, to speed up the IO for unzipping.
from localstack.utils.functions import run_safe
from localstack.utils.http import canonicalize_headers, parse_chunked_data
from localstack.utils.patch import patch
from localstack.utils.run import run_for_max_seconds
LOG = logging.getLogger(__name__)
LAMBDA_POLICY_NAME_PATTERN = "lambda_policy_{name}_{qualifier}"
LAMBDA_TEST_ROLE = "arn:aws:iam::{account_id}:role/lambda-test-role"
APP_NAME = "lambda_api"
ARCHIVE_FILE_PATTERN = "%s/lambda.handler.*.jar" % config.dirs.tmp
LAMBDA_SCRIPT_PATTERN = "%s/lambda_script_*.py" % config.dirs.tmp
LAMBDA_ZIP_FILE_NAME = "original_lambda_archive.zip"
LAMBDA_JAR_FILE_NAME = "original_lambda_archive.jar"
LAMBDA_DEFAULT_TIMEOUT = 3
INVALID_PARAMETER_VALUE_EXCEPTION = "InvalidParameterValueException"
VERSION_LATEST = LambdaFunction.QUALIFIER_LATEST
FUNCTION_MAX_SIZE = 69905067
FUNCTION_MAX_UNZIPPED_SIZE = 262144000
BATCH_SIZE_RANGES = {
    "kafka": (100, 10000),
    "kinesis": (100, 10000),
    "dynamodb": (100, 1000),
    "sqs": (
        10,
        10,
    ),  
}
DATE_FORMAT = "%Y-%m-%dT%H:%M:%S.%f+00:00"
app = Flask(APP_NAME)
@patch(app.route)
def app_route(self, fn, *args, **kwargs):