Visit gosparta.io for complete documentation.
Sparta takes a set of golang functions and automatically provisions them in AWS Lambda as a logical unit.
AWS Lambda functions are defined using the standard AWS Lambda signatures:
func()
func() error
func(TIn) error
func() (TOut, error)
func(context.Context) error
func(context.Context, TIn) error
func(context.Context) (TOut, error)
func(context.Context, TIn) (TOut, error)
The TIn and TOut parameters represent encoding/json un/marshallable types.
For instance:
// Standard AWS λ function
func helloWorld(ctx context.Context) (string, error) {
...
}
where
ctx
: The request context that includes Sparta both the AWS Context as well as Sparta specific values
Consumers define a set of lambda functions and provide them to Sparta to create a self-documenting, self-deploying AWS Lambda binary:
lambdaFn := sparta.HandleAWSLambda("Hello World",
helloWorld,
sparta.IAMRoleDefinition{})
var lambdaFunctions []*sparta.LambdaAWSInfo
lambdaFunctions = append(lambdaFunctions, lambdaFn)
err := sparta.Main("HelloWorldStack",
"My Hello World stack",
lambdaFunctions,
nil,
nil)
Given a set of registered golang functions, Sparta will:
- Either verify or provision the defined IAM roles
- Build a deployable application via
Provision()
- Zip the contents and associated proxying logic
- Dynamically create a CloudFormation template to either create or update the service state.
- Optionally:
- Register with S3 and SNS for push source configuration
- Provision an API Gateway service to make your functions publicly available
- Provision an S3 static website
Visit gosparta.io for complete documentation.
Thanks to all Sparta contributors (alphabetical)
- Kyle Anderson
- James Brook
- Ryan Brown
- sdbeard
- Scott Raine
- Paul Seiffert
- Thom Shutt