# Lambda layers ============================================================== resource "aws_lambda_layer_version" "this" { for_each = var.layers layer_name = each.value.name description = each.value.description filename = each.value.filename s3_bucket = each.value.s3_bucket s3_key = each.value.s3_key compatible_runtimes = each.value.compatible_runtimes compatible_architectures = each.value.compatible_architectures } # Lambda functions =========================================================== resource "aws_lambda_function" "this" { for_each = var.functions function_name = each.value.name description = each.value.description runtime = each.value.image_uri == null ? each.value.runtime : null handler = each.value.image_uri == null ? each.value.handler : null role = each.value.role_arn filename = each.value.filename s3_bucket = each.value.s3_bucket s3_key = each.value.s3_key s3_object_version = each.value.s3_object_version image_uri = each.value.image_uri architectures = each.value.architectures memory_size = each.value.memory_size timeout = each.value.timeout reserved_concurrent_executions = each.value.reserved_concurrent_executions publish = each.value.publish kms_key_arn = each.value.kms_key_arn layers = each.value.layers dynamic "environment" { for_each = length(each.value.environment) > 0 ? [each.value.environment] : [] content { variables = environment.value } } dynamic "vpc_config" { for_each = length(each.value.subnet_ids) > 0 ? [true] : [] content { subnet_ids = each.value.subnet_ids security_group_ids = each.value.security_group_ids } } tracing_config { mode = each.value.tracing_mode } tags = local.tags } # Event source mappings ====================================================== resource "aws_lambda_event_source_mapping" "this" { for_each = local.event_source_map function_name = aws_lambda_function.this[each.value.fn_key].arn event_source_arn = each.value.es.event_source_arn batch_size = each.value.es.batch_size starting_position = each.value.es.starting_position bisect_batch_on_function_error = each.value.es.bisect_on_function_error function_response_types = length(each.value.es.function_response_types) > 0 ? each.value.es.function_response_types : null }