Func is a CLI app to simplify development and deployment of AWS Lambda functions using Go and Terraform. It'll scaffold an optionated project structure generating code for
- function code
- build and deployment automation using make
- IaaS using terraform modules (terraform-aws-lambda)
- continuous integration using GitHub actions
Func is in an early alpha stage so expect bugs and breaking changes but give it a try!
Before installing func
please make sure your system meets the following requirements:
- a working Go environment (Go 1.11+)
- a working terraform environment (Terraform 0.11+)
- configured AWS credentials with sufficient IAM permissions for creating/deleting ressources from terraform-aws-lambda module
brew install moritzzimmer/tap/func
MacOS
$ curl -OL https://github.com/moritzzimmer/func/releases/download/v0.0.21/func_0.0.21_darwin_amd64.tar.gz
$ tar -xvzf func_0.0.21_darwin_amd64.tar.gz
$ sudo mv func /usr/local/bin/func
GNU/Linux
$ wget https://github.com/moritzzimmer/func/releases/download/v0.0.21/func_0.0.21_linux_amd64.tar.gz
$ tar -xvzf func_0.0.21_linux_amd64.tar.gz
$ sudo mv func /usr/local/bin/
$ func
Func is a CLI app to simplify development and deployment
of serverless functions using Go, Terraform and AWS.
Usage:
func [command]
Available Commands:
help Help about any command
new Creates a new Lambda project
version Print version information of func
Flags:
-h, --help help for func
Use "func [command] --help" for more information about a command.
(outside of $GOPATH
)
$ func new github.com/you/foo
$ cd foo/
$ make init package deploy
$ func help new
Creates Terraform, CI and Go ressources for a new AWS Lambda project
in a new directory.
Usage:
func new [module name] [flags]
Aliases:
new, initialize, initialise, create, init
Examples:
func new github.com/you/app
Flags:
--ci string ci provider config file to generate [none, gh] (default "none")
-d, --dry-run dry run
-e, --event string event type triggering the Lambda function [cloudwatch-event, dynamodb, kinesis, s3, sns, sqs] (default "cloudwatch-event")
-h, --help help for new
func would not be possible if not for all of the great projects it depends on. Please see SHOULDERS.md to see a list of them.