Golang runtime for Apex/Lambda.
Go
Latest commit b962b60 Jan 7, 2017 @tj tj committed on GitHub Merge pull request #38 from tleef/master
Create dynamo.StreamRecord to avoid json.Unmarshall issue

Readme.md

Apex Golang

Golang runtime support for Apex/Lambda – providing handlers for Lambda sources, and runtime requirements such as implementing the Node.js shim stdio interface.

Features

Currently supports:

  • Node.js shim
  • Environment variable population
  • Arbitrary JSON
  • CloudWatch Logs
  • Cognito
  • Kinesis
  • Dynamo
  • S3
  • SNS
  • SES

Example

package main

import (
  "encoding/json"
  "strings"

  "github.com/apex/go-apex"
)

type message struct {
  Value string `json:"value"`
}

func main() {
  apex.HandleFunc(func(event json.RawMessage, ctx *apex.Context) (interface{}, error) {
    var m message

    if err := json.Unmarshal(event, &m); err != nil {
      return nil, err
    }

    m.Value = strings.ToUpper(m.Value)

    return m, nil
  })
}

Run the program:

echo '{"event":{"value":"Hello World!"}}' | go run main.go
{"value":{"value":"HELLO WORLD!"}}

Notes

Due to the Node.js shim required to run Go in Lambda, you must use stderr for logging – stdout is reserved for the shim.

Badges

Build Status GoDoc


tjholowaychuk.com  ·  GitHub @tj  ·  Twitter @tjholowaychuk