Skip to content

This module implements Lambda functionality in AWS with all known best practices with regards to logging and security.

License

Notifications You must be signed in to change notification settings

wearetechnative/terraform-aws-lambda

Repository files navigation

Terraform AWS lambda

This module implements Lambda functionality in AWS with all known best practices with regards to logging and security.

How does it work

First use after you clone this repository or when .pre-commit-config.yaml is updated

Run pre-commit install to install any guardrails implemented using pre-commit.

See pre-commit installation on how to install pre-commit.

Usage

See the examples of some basic scenarios.

The artifact hash is ignored when ECR is used for compatibility with CI/CD setups.

Future work

The local setup (uploading of .zip) should be replaced by a dedicated S3 bucket because this method is an improvement in every aspect over local uploads.

Providers

Name Version
archive n/a
aws >=4.21.0

Modules

Name Source Version
default_exec_role git@github.com:wearetechnative/terraform-aws-iam-role 9a975f62956b6c4f2593c169d06d1cfe8aad36be

Resources

Name Type
aws_cloudwatch_log_group.cloudwatch_logs resource
aws_iam_policy.cloudwatch_logs resource
aws_iam_policy.sqs_dlq resource
aws_iam_policy.vpc resource
aws_iam_role_policy_attachment.cloudwatch_logs resource
aws_iam_role_policy_attachment.sqs_dlq resource
aws_iam_role_policy_attachment.vpc resource
aws_lambda_function.this resource
aws_lambda_function_event_invoke_config.this resource
archive_file.lambda_source data source
aws_caller_identity.current data source
aws_iam_policy_document.cloudwatch_logs data source
aws_iam_policy_document.sqs_dlq data source
aws_iam_policy_document.vpc data source
aws_partition.current data source
aws_region.current data source
aws_security_group.vpc data source
aws_subnet.vpc data source

Inputs

Name Description Type Default Required
architecture Architecture for Lambda function can be either x86_64 or arm64. Defaults to x86_64. string "x86_64" no
environment_variables Key value map of environment variables. map(string) {} no
handler Entrypoint in the application. Defaults to index.handler. string "index.handler" no
kms_key_arn KMS key to use for encrypting RDS instances. string n/a yes
memory_size Lambda memory size. Defaults to 128. number 128 no
name Prefix name for DynamoDB. Must be unique within the region. string n/a yes
role_arn Exec role for Lambda function. string null no
role_arn_provided Workaround TerraForm limitation. Set to true if var.role_arn is set, otherwise false. bool false no
runtime Lambda runtime which must be set when var.source_type is s3 or local. string null no
security_group_ids Security group IDs if VPC connectivity is required. Requires var.subnet_ids to be set too. list(string) [] no
source_directory_location ECR location URL, S3 bucket or directory path depending on the value of var.source_type. string n/a yes
source_file_name ECR tag, S3 key or null (local) depending on the value of var.source_type. string n/a yes
source_type Is set to either ecr, s3 or local. Currently only supports ecr and local. string "ecr" no
sqs_dlq_arn Dead Letter Queue for on_failure delivery of invocations string n/a yes
subnet_ids Subnet IDs if VPC connectivity is required. Requires var.security_group_ids to be set too. list(string) [] no
timeout Lambda timeout. Defaults to 3 seconds. number 3 no

Outputs

Name Description
lambda_function_arn n/a
lambda_function_name n/a

About

This module implements Lambda functionality in AWS with all known best practices with regards to logging and security.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages