Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/moritzzimmer/func
Func is a CLI app to simplify development and deployment of serverless functions using Go, Terraform and AWS.
https://github.com/moritzzimmer/func
aws aws-lambda cli go golang lambda serverless terraform
Last synced: 15 days ago
JSON representation
Func is a CLI app to simplify development and deployment of serverless functions using Go, Terraform and AWS.
- Host: GitHub
- URL: https://github.com/moritzzimmer/func
- Owner: moritzzimmer
- License: mit
- Created: 2019-04-11T15:14:51.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-23T23:01:34.000Z (almost 2 years ago)
- Last Synced: 2024-06-19T05:54:37.509Z (5 months ago)
- Topics: aws, aws-lambda, cli, go, golang, lambda, serverless, terraform
- Language: Go
- Size: 2.42 MB
- Stars: 10
- Watchers: 2
- Forks: 2
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# func ![](https://github.com/moritzzimmer/func/workflows/ci/badge.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/moritzzimmer/func)](https://goreportcard.com/badge/github.com/moritzzimmer/func) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
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](https://github.com/moritzzimmer/terraform-aws-lambda))
- continuous integration using GitHub actionsFunc is in an early alpha stage so expect bugs and breaking changes but give it a try!
## installation
Before installing `func` please make sure your system meets the following requirements:
- a working Go environment ([Go 1.11+](https://golang.org/))
- a working terraform environment ([Terraform 0.11+](https://www.terraform.io/downloads.html))
- configured [AWS credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) with sufficient IAM permissions for creating/deleting ressources from [terraform-aws-lambda](https://github.com/moritzzimmer/terraform-aws-lambda) module### Homebrew (macOS)
```
brew install moritzzimmer/tap/func
```### from release archive - 64 bits
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/
```### verify installation
```
$ 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 funcFlags:
-h, --help help for funcUse "func [command] --help" for more information about a command.
```## generate new project
### quickstart
(outside of `$GOPATH`)
```
$ func new github.com/you/foo
$ cd foo/
$ make init package deploy
```### all options
```
$ 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, initExamples:
func new github.com/you/appFlags:
--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
```## shoulders of giants
func would not be possible if not for all of the great projects it depends on. Please see [SHOULDERS.md](SHOULDERS.md) to see a list of them.