- changed status to resolved
Error invoking Lambda function with LAMBDA_EXECUTOR=docker and LAMBDA_REMOTE_DOCKER=false
Issue #50
resolved
When running Localstack via docker-compose, I run into the following error when trying to invoke a Lambda function with LAMBDA_REMOTE_DOCKER=false
:
localstack_1 | WARNING:localstack.services.awslambda.lambda_api:Error executing Lambda function: Command 'docker run -v "/tmp/localstack/zipfile.3e532dc0":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "dist/handler.hello"' returned non-zero exit status 1 Traceback (most recent call last):
localstack_1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_api.py", line 278, in run_lambda
localstack_1 | 'HOSTNAME': DOCKER_BRIDGE_IP,
localstack_1 | File "/opt/code/localstack/localstack/utils/common.py", line 410, in run
localstack_1 | return do_run(cmd)
localstack_1 | File "/opt/code/localstack/localstack/utils/common.py", line 407, in do_run
localstack_1 | raise e
localstack_1 | CalledProcessError: Command 'docker run -v "/tmp/localstack/zipfile.3e532dc0":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "dist/handler.hello"' returned non-zero exit status 1
localstack_1 |
My docker-compose.yml file looks like:
version: '2.1'
services:
localstack:
image: atlassianlabs/localstack
ports:
- "4567-4582:4567-4582"
- "8080:8080"
environment:
- SERVICES=${SERVICES- }
- DEBUG=${DEBUG- }
- DATA_DIR=${DATA_DIR- }
- LAMBDA_EXECUTOR=docker
- LAMBDA_REMOTE_DOCKER=false
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
- DEFAULT_REGION=eu-west-1
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
I'm not sure if this is an issue on my side with my Docker setup/configuration.
Comments (1)
-
reporter - Log in to comment
This was an issue on my side. By default, the following volume is mounted in the
docker-compose.yml
file:"${TMPDIR:-/tmp/localstack}:/tmp/localstack"
However,/tmp
was outside of the folders shared with docker. Changing it to"${TMPDIR:-/Users/marco/tmp/localstack}:/tmp/localstack"
worked on my end. Alternatively, I think adding/tmp
to the folders shared with docker would also resolve it.