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) |