Arien Malec
Arien Malec

Reputation: 933

Deploying AWS Lambda with Go & Cloudformation

I'm working through an automated deployment of a Go-based AWS Lambda, and having issues.

My AWS Serverless template is:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  HelloLambda:
    Type: AWS::Serverless::Function
    Properties:
      Handler: hello
      Runtime: go1.x
      CodeUri: ./deploy/hello.zip
      Environment:
        Variables: 
          S3_BUCKET: hello_lambda

I deploy this via:

GOOS=linux GOARCH=amd64 go build -o ./deploy/hello
zip ./deploy/hello.zip ./deploy/hello
aws cloudformation package \
   --template-file hello.yaml \
   --output-template-file serverless-deploy_hello.yaml \
   --s3-bucket hello_deploy
aws cloudformation deploy\
 --template-file serverless-deploy_hello.yaml\
  --stack-name hello-lambda\
  --capabilities CAPABILITY_IAM

When Cloudformation does its thing, serverless-deploy_hello.yaml has CodeUri: s3://hello_deploy/17ab86653aab79eee51fc6f77d7a152e and that s3 bucket contains the zip file (when I download it locally & use cmp it's bit-identical).

BUT when I test the resulting Lambda, it gives me:

{
  "errorMessage": "fork/exec /var/task/hello: no such file or directory",
  "errorType": "PathError"
}

Not quite sure what I'm doing wrong here....

==== RESOLVED ====

The zip command above zips the directory path as well, so the executable unzips to deploy/hello rather than ./hello.

Accordingly, the Lambda runtime can't connect to the process.

Upvotes: 15

Views: 7875

Answers (1)

GraphicalDot
GraphicalDot

Reputation: 2821

{
  "errorMessage": "fork/exec /var/task/hello: no such file or directory",
  "errorType": "PathError"
}

This will look for the hello function in your zipfile as an starting point of the Application. If you want to continue with the main function or some other function

func main() {
    lambda.Start(HandleLambdaEvent)
}

You need to change the handler Name on AWS Lambda function template (By default it is hello). enter image description here

Upvotes: 15

Related Questions