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