Error invoking Lambda function with LAMBDA_EXECUTOR=docker and LAMBDA_REMOTE_DOCKER=false

Issue #50 resolved
Marco Lüthy created an issue

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)

  1. Marco Lüthy reporter

    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.

  2. Log in to comment