Unable to invoke a Lamda function (Node.js)

Issue #44 resolved
Yohei Onishi created an issue

I tried to invoke a Lamda function (Node.js) but I got an error. Please help me how I fix it! Thanks.

My configuration:

  • Arch Linux
  • localstack (installed by pip)
  • Python 3.6.1

I start localstack as docker with LAMBDA_EXECUTOR setting.

$ export LAMBDA_EXECUTOR=docker
$ localstack start --docker
Starting local dev environment. CTRL-C to quit.
docker run -it  -e LAMBDA_EXECUTOR=docker -p 8080:8080 -p 4567-4582:4567-4582 -v "/tmp/localstack:/tmp/localstack" -v "/var/run/docker.sock:/var/run/docker.sock" -e DOCKER_HOST="unix:///var/run/docker.sock" "atlassianlabs/localstack"

I created the same function as the sample on the AWS Lamda tutorial and invoke it. http://docs.aws.amazon.com/lambda/latest/dg/with-userapp-walkthrough-custom-events.html

$ cat helloworld.js
console.log('Loading function');

exports.handler = function(event, context, callback) {
    console.log('value1 =', event.key1);
    console.log('value2 =', event.key2);
    console.log('value3 =', event.key3);
    callback(null, "Success");

};

$ zip helloworld.zip helloworld.js

$ aws \
  --endpoint-url=http://localhost:4574 \
  lambda create-function \
  --region ap-northeast-1 \
  --function-name helloworld \
  --zip-file fileb://`pwd`/helloworld.zip \
  --role r1 \
  --handler helloworld.handler \
  --runtime nodejs6.10

$ aws \
  --endpoint-url=http://localhost:4574 \
  lambda list-functions
{
    "Functions": [
        {
            "FunctionName": "helloworld",
            "FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:helloworld",
            "Runtime": "nodejs6.10",
            "Handler": "helloworld.handler",
            "Timeout": 60,
            "Version": "$LATEST"
        }
    ]
}

$ aws \
  --endpoint-url=http://localhost:4574 \
  lambda invoke \
  --invocation-type RequestResponse \
  --function-name helloworld \
  --region ap-northeast-1 \
  --payload '{"key1":"value1", "key2":"value2", "key3":"value3"}' \
  outputfile.txt 
An error occurred (Exception) when calling the Invoke operation: Error executing Lambda function: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1 Traceback (most recent call last):
  File "/opt/code/localstack/localstack/mock/apis/lambda_api.py", line 271, in run_lambda
    'HOSTNAME': DOCKER_BRIDGE_IP,
  File "/opt/code/localstack/localstack/utils/common.py", line 406, in run
    return do_run(cmd)
  File "/opt/code/localstack/localstack/utils/common.py", line 403, in do_run
    raise e
CalledProcessError: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1

localstack got this error.

WARNING:localstack.mock.apis.lambda_api:Error executing Lambda function: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1 Traceback (most recent call last):
File "/opt/code/localstack/localstack/mock/apis/lambda_api.py", line 271, in run_lambda
'HOSTNAME': DOCKER_BRIDGE_IP,
File "/opt/code/localstack/localstack/utils/common.py", line 406, in run
return do_run(cmd)
File "/opt/code/localstack/localstack/utils/common.py", line 403, in do_run
raise e
CalledProcessError: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1

docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"
ERROR: 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"': START RequestId: 014a1628-f685-1532-21a5-ddb97ce88e42 Version: $LATEST
module initialization error: Error
    at Error (native)
at Object.fs.openSync (fs.js:641:18)
at Object.fs.readFileSync (fs.js:509:33)
at Object.Module._extensions..js (module.js:578:20)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
2017-07-04T01:28:28.936Z        014a1628-f685-1532-21a5-ddb97ce88e42    TypeError: awslambda.reportException is not a function

docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"WARNING:localstack.mock.apis.lambda_api:Error executing Lambda function: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1 Traceback (most recent call last):
File "/opt/code/localstack/localstack/mock/apis/lambda_api.py", line 271, in run_lambda
'HOSTNAME': DOCKER_BRIDGE_IP,
File "/opt/code/localstack/localstack/utils/common.py", line 406, in run
return do_run(cmd)
File "/opt/code/localstack/localstack/utils/common.py", line 403, in do_run
raise e
CalledProcessError: Command 'docker run -v "/tmp/localstack/zipfile.1fea74ef":/var/task -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" "lambci/lambda:nodejs6.10" "helloworld.handler"' returned non-zero exit status 1

Comments (5)

  1. Waldemar Hummer Account Deactivated

    Thanks for reporting @yoheio. This is fixed in the latest commit, can you please give it a try by re-installing/upgrading to the latest LocalStack CLI (should install version 0.6.0.1):

    pip install --upgrade localstack
    

    Please let me know if that works for you. Thanks.

  2. Log in to comment