modules/terraform-aws-amplify-static-website-deployment-from-s3/main.tf (33 lines of code) (raw):
locals {
default_lambda_conf = {
name = "aws-amplify-zip-deployer-from-s3"
description = "An automated workflow to deploy ZIP bundles from S3 to an AWS Amplify static website"
memory_size = 256
timeout = 60
reserved_concurrent_executions = 1
cloudwatch_log_group_retention_in_days = 1
}
# It seems that the input variable var.lambda_function contains null values when the user provides a subset of supported
# values. This is a workaround to filter out the null values from it such that the merge function does not set to null the default
# values.
normalized_lambda_conf = { for k, v in var.lambda_function : k => v if v != null }
final_lambda_conf = merge(local.default_lambda_conf, local.normalized_lambda_conf)
}
module "main" {
source = "babbel/lambda-with-inline-code/aws"
version = "1.6.0"
function_name = local.final_lambda_conf.name
description = local.final_lambda_conf.description
runtime = "python3.12"
source_dir = "${path.module}/bin"
memory_size = local.final_lambda_conf.memory_size
timeout = local.final_lambda_conf.timeout
reserved_concurrent_executions = local.final_lambda_conf.reserved_concurrent_executions
cloudwatch_log_group_retention_in_days = local.final_lambda_conf.cloudwatch_log_group_retention_in_days
environment_variables = {
AWS_AMPLIFY_APP_ID = var.aws_amplify_app.id
AWS_AMPLIFY_DEPLOYMENT_BRANCH_NAME = var.aws_amplify_app.deployment_name
AWS_S3_BUCKET_NAME = var.aws_s3_bucket_store.bucket_name
AWS_S3_KEY = format("%s/%s", trimsuffix(var.aws_s3_bucket_store.bucket_path, "/"), var.aws_s3_bucket_store.zip_file_name)
REGION = var.aws_s3_bucket_store.region
}
handler = "main.lambda_handler"
tags = var.tags
}