Categorygithub.com/lbernardo/lambda-local
repositorypackage
2.0.0+incompatible
Repository: https://github.com/lbernardo/lambda-local.git
Documentation: pkg.go.dev

# Packages

Copyright © 2019 NAME HERE <EMAIL ADDRESS> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

lambda-local

Execute and test local Lambda functions integrate serverless framework

$ lambda-local 
Execute functions lambda aws 

Usage:
  lambda-local [command]

Available Commands:
  help        Help about any command
  start       Start local functions lambda
  endpoints   List endpoints functions lambda

Flags:
  -h, --help   help for lambda-local

Use "lambda-local [command] --help" for more information about a command.
subcommand is required

Start local lambda functions development

Build

For build

make build

or

go build -o lambda-local

Install

go install github.com/lbernardo/lambda-local

Note: $GOPATH/bin must be set to $PATH

Start local functions lambda

$ lambda-local start --volume $PWD

Start server lambda 0.0.0.0:3000
Start local functions lambda

Usage:
  lambda-local start [flags]

Flags:
  -h, --help            help for start
      --host string     host usage [default 0.0.0.0] (default "0.0.0.0")
      --port string     port usage [default 3000] (default "3000")
      --volume string   Docker volume mount execution [required] [ [ex: --volume $PWD]
      --network string  Set network name usage
      --yaml string     File yaml serverless [default serverless.yml]
      --env  string     File for using environment variables other than serverless. Can replace serverless variables

** Usage --volume for define source path of project **

Example usage

serverless.yml

service: myservice

provider:
  name: aws
  runtime: go1.x

package:
 exclude:
   - ./**
 include:
   - ./bin/**

functions:
  hello:
    handler: bin/main
    events:
      - http:
          path: hello
          method: get

Makefile

build:
	env GOOS=linux go build -ldflags="-s -w" -o bin/hello adapters/hello/*

adapter/hello/hello.go

package main

import (
	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
)

func HandleRequest(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
	return events.APIGatewayProxyResponse{
		Body:       "Hello",
		StatusCode: 200,
	}, nil
}

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

terminal

$ make build

> env GOOS=linux go build -ldflags="-s -w" -o bin/hello adapters/hello/* 

$ lambda-local start --volume $PWD --port 5000

> Start server lambda 0.0.0.0:5000

curl

$ curl http://localhost:5000/hello
> Hello

Docker

Use docker for your projects

  • Use Dockerfile for create image
  • Use docker/start.server.sh for start server in docker
  • Use docker-compose for create application containers

docker-compose

version: "3"

services:
  application:
    container_name: application_example_go
    image: "lambda-local"
    volumes: 
      - .:/var/app
      - /var/run/docker.sock:/var/run/docker.sock # Use for lambda execute containers
    ports: 
      - 3000:3000
    environment: 
      - VOLUME_APP=$PWD # Source path project [required]
      - HOST=0.0.0.0 # Host execute
      - PORT=3000 # Port execute