Go Serverless
GoFormation for users wishing to transfer to serverless!
GoFormation
is a Go library for working with AWS CloudFormation / AWS Serverless Application Model (SAM) templates.
Main features
- Describe Serverless templates as Go objects (structs), and then turn it into YAML.
Installation
As with other Go libraries, GoFormation can be installed with go get
.
$ go get github.com/thepauleh/goserverless/serverless
Usage
Marshalling Serverless with Go structs, into YAML
Below is an example of building a CloudFormation template programmatically, then outputting the resulting JSON
package mainimport ( "fmt" "github.com/thepauleh/goserverless/serverless")func main() { // Create a new CloudFormation template template := serverless.NewTemplate("myService") template.Service = "myService" template.Provider = &serverless.Provider{ Name: "aws", Runtime: "nodejs6.10", MemorySize: 512, Timeout: 10, VersionFunctions: false } // An example function template.Functions["users"] = &serverless.AWSServerlessFunction{ Handler: "service.o", Name: "${self:provider.stage}-users", Description: "Description of what the lambda function does", Runtime: "go1.x", MemorySize: 128, ReservedConcurrency: 5, Timeout: 30, Events: []serverless.Events{ serverless.HttpEvent{ Path: "users/create", Method: "post", }, }, } y, err := template.YAML() if err != nil { fmt.Printf("Failed to generate YAML: %s\n", err) } else { fmt.Printf("%s\n", string(y)) }}
Would output the following YAML template:
service: myServiceprovider: name: aws runtime: nodejs6.10 memorySize: 512 timeout: 10 versionFunctions: falsefunctions: users: handler: service.o name: ${self:provider.stage}-users description: Description of what the lambda function does runtime: go1.x memorySize: 128 timeout: 30 reservedConcurrency: 5 events: - http: path: users/create method: post