README

lambda

Creates Lambda functions, layers, event source mappings, and VPC configuration.

Provisions Lambda functions from ZIP or container images, with environment variables, KMS encryption for env vars, optional VPC attachment, X-Ray tracing, reserved concurrency, Lambda layers, and event source mappings for SQS/Kinesis/DynamoDB Streams with bisect-on-error.

Usage

module "lambda" {
  source  = "hcassc.jfrog.io/iac-terraform-modules-virtual/compute/lambda/aws"
  version = "0.1.0"

  functions = {
    handler = {
      name     = "my-handler"
      runtime  = "python3.12"
      handler  = "index.handler"
      role_arn = module.iam_role.arn
      s3_bucket = module.artifacts_bucket.id
      s3_key    = "lambda/handler.zip"
      kms_key_arn = module.kms.key_arn
      environment = {
        ENV = "prod"
      }
      subnet_ids         = module.vpc.private_subnet_id_list
      security_group_ids = [module.security_groups.ids["lambda"]]
    }
  }
}

Requirements

Name Version
terraform ~> 1.5
aws ~> 6.50

Providers

Name Version
aws 6.50.0

Resources

Name Type
aws_lambda_event_source_mapping.this resource
aws_lambda_function.this resource
aws_lambda_layer_version.this resource

Inputs

Name Description Type Default Required
functions Map of Lambda function definitions map(object({ name = string description = optional(string, "") runtime = string handler = string role_arn = string filename = optional(string, null) s3_bucket = optional(string, null) s3_key = optional(string, null) s3_object_version = optional(string, null) image_uri = optional(string, null) architectures = optional(list(string), ["x86_64"]) memory_size = optional(number, 128) timeout = optional(number, 30) reserved_concurrent_executions = optional(number, -1) publish = optional(bool, false) kms_key_arn = optional(string, null) environment = optional(map(string), {}) layers = optional(list(string), []) # VPC config subnet_ids = optional(list(string), []) security_group_ids = optional(list(string), []) # Tracing tracing_mode = optional(string, "PassThrough") # Event source mappings event_sources = optional(list(object({ event_source_arn = string batch_size = optional(number, 10) starting_position = optional(string, null) function_response_types = optional(list(string), []) bisect_on_function_error = optional(bool, true) })), []) })) {} no
layers Map of Lambda layer definitions map(object({ name = string description = optional(string, "") filename = optional(string, null) s3_bucket = optional(string, null) s3_key = optional(string, null) compatible_runtimes = optional(list(string), []) compatible_architectures = optional(list(string), ["x86_64"]) })) {} no
tags Resource tags to apply to all resources map(string) {} no

Outputs

Name Description
function_arns Map of function logical key to ARN
function_names Map of function logical key to function name
invoke_arns Map of function logical key to invoke ARN (for API Gateway integration)
layer_arns Map of layer logical key to version ARN
qualified_arns Map of function logical key to qualified ARN (with version suffix when publish = true)