Terraform + GitHub Actions for AWS serverless deployments.
Lambda + API Gateway with CodeDeploy rollouts and provisioned concurrency controls — driven by clean module variables and just recipes.
just tg ci aws/oidc apply
just tg dev aws/oidc apply
just tg prod aws/oidc applyGiven a terragrunt file is found at infra/live/dev/aws/api/terragrunt.hcl
just tg dev aws/api planmodule "lambda_example" {
source = "../lambda"
...
provisioned_config = var.your_provisioned_config
}- use case: background processes
- we can handle an initial lag while lambda warms up/boots
provisioned_config = {
fixed = 0
}- use case: high predictable usage
- we never want lag due to warm up and can predict traffic
provisioned_config = {
fixed = 1
}- use case: react to traffic i.e. api backend
- limit the cost with autoscale.max
- ensure minimal concurrency (no cold starts) with autoscale.min
- set tolerance to amount of used concurrent executions. Below will trigger when 70% are used and add more to meet demands.
- set cool down seconds to reasonable time before you would like the system to react.
provisioned_config = {
auto_scale = {
max = 3,
min = 1,
trigger_percent = 70
cool_down_seconds = 60
}
}module "lambda_example" {
source = "../lambda"
...
deployment_config = var.your_deployment_config
}- use case: background processes
deployment_config = {
strategy = "all_at_once"
}- use case: api or service serving traffic
- incrementally rolls out new version to 10% of lambdas and rolls back if errors detected. If not goes to 100%.
- waits to make a decision on health after 1 minute
deployment_config = {
strategy = "canary"
percentage = 10
interval_minutes = 1
}- use case: api or service serving traffic
- checks for lambda health on 10% of lambdas and rolls back if errors detected
- rolls out changes on increments of 1 minute
deployment_config = {
strategy = "linear"
percentage = 10
interval_minutes = 1
}