Skip to content

Instantly share code, notes, and snippets.

@Tirke
Created January 10, 2020 08:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Tirke/6e67681c824d9fbebea5ff2175793229 to your computer and use it in GitHub Desktop.
Save Tirke/6e67681c824d9fbebea5ff2175793229 to your computer and use it in GitHub Desktop.
resource "aws_lambda_alias" "lambda-alias" {
name = "latest"
description = "alias pointing to the latest published version of the lambda"
function_name = aws_lambda_function.lambda.function_name
function_version = aws_lambda_function.lambda.version
}
resource "aws_appautoscaling_target" "scale-warmer-target" {
max_capacity = 1
min_capacity = 0
resource_id = "function:${aws_lambda_alias.lambda-alias.function_name}:${aws_lambda_alias.lambda-alias.name}"
service_namespace = "lambda"
scalable_dimension = "lambda:function:ProvisionedConcurrency"
}
resource "aws_appautoscaling_scheduled_action" "scale-warmer-up" {
name = "lambda-warm-up"
service_namespace = aws_appautoscaling_target.scale-warmer-target.service_namespace
resource_id = aws_appautoscaling_target.scale-warmer-target.resource_id
scalable_dimension = aws_appautoscaling_target.scale-warmer-target.scalable_dimension
schedule = "cron(00 07 ? * MON-FRI *)" // Scale up if working day at 07:00 am UTC
scalable_target_action {
max_capacity = 1
min_capacity = 1
}
}
resource "aws_appautoscaling_scheduled_action" "scale-warmer-down" {
name = "lambda-warm-down"
service_namespace = aws_appautoscaling_target.scale-warmer-target.service_namespace
resource_id = aws_appautoscaling_target.scale-warmer-target.resource_id
scalable_dimension = aws_appautoscaling_target.scale-warmer-target.scalable_dimension
schedule = "cron(30 17 ? * MON-FRI *)" // Scale down if working day at 05:30 pm UTC
scalable_target_action {
max_capacity = 0
min_capacity = 0
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment