!!! AWS Lambda
!! Resources
* [https://en.wikipedia.org/wiki/AWS_Lambda]
* [Getting Started with AWS Lambda|https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html]
* [the SLA|https://aws.amazon.com/lambda/sla/], you get credits if they don't meet the SLA
* [AWS Lambda limits|https://docs.aws.amazon.com/lambda/latest/dg/limits.html]
* [Building Lambda functions in Go|https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model.html]
* [AWS Lambda Function Handler in Go|https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model-handler-types.html]
* [AWS Lambda Context Object in Go|https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model-context.html]
* [Lambda environment variables|https://docs.aws.amazon.com/lambda/latest/dg/lambda-environment-variables.html]
You pay for the execution time of your function, rounded to 100 ms.\\
As event source you can have (just a few examples) S3 buckets, SES, SNS, DynamoDB and API Gateway or ALB (web requests), [complete list here|https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html], both synchronous and asynchronous.\\
Your function runs in one of the [available runtimes|https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html] ((versions of) languages)\\
The code you write does not have to be reentrant, ''"If the function is invoked again while a request is still being processed, another instance is provisioned, increasing the function's concurrency."''\\
You can specify a timeout during creation of your function.\\
If you invoke your Lambda function via an ALB, you need an ALB per function, you could end up with a lot of ALB's, which is quite a lot of management?
To create a Lambda function you first create a Lambda function deployment package, a .zip file consisting of your code (a Go executable) and any dependencies:
{{{
GOOS=linux go build main.go
zip function.zip main
}}}
!! Questions / things to find out
* configuration, how to configure your app?
* logging, where does the output of the app go?
* (blue/green) deployment
* security / context, what options are there?
* throttling options?
* monitoring (throughput and response times)
* integration with other functions and (AWS) services
* application session state options?
* What are layers?