Further development of this module will be continued in moritzzimmer/terraform-aws-lambda. Users of spring-media/lambda/aws
should migrate to this module as a drop-in replacement for all provisions up to release/tag 5.2.1
to benefit from new features and bugfixes.
module "lambda" {
source = "moritzzimmer/lambda/aws"
version = "5.2.1"
filename = "my-package.zip"
function_name = "my-function"
handler = "my-handler"
runtime = "go1.x"
source_code_hash = filebase64sha256("${path.module}/my-package.zip")
}
Terraform module to create AWS Lambda resources with configurable event sources, IAM configuration (following the principal of least privilege), VPC as well as SSM/KMS and log streaming support.
The following event sources are supported (see examples):
Furthermore this module supports:
module | terraform | branch |
---|---|---|
4.x.x | 0.12+ | master |
3.x.x | 0.11.x | terraform_0.11x |
The module can be used for all runtimes supported by AWS Lambda.
Deployment packages can be specified either directly as a local file (using the filename
argument) or indirectly via Amazon S3 (using the s3_bucket
, s3_key
and s3_object_versions
arguments), see documentation for details.
basic
provider "aws" {
region = "eu-west-1"
}
module "lambda" {
source = "spring-media/lambda/aws"
version = "5.2.1"
filename = "my-package.zip"
function_name = "my-function"
handler = "my-handler"
runtime = "go1.x"
source_code_hash = filebase64sha256("${path.module}/my-package.zip")
}
with event trigger
module "lambda" {
// see above
event = {
type = "cloudwatch-event"
schedule_expression = "rate(1 minute)"
}
}
in a VPC
module "lambda" {
// see above
vpc_config = {
security_group_ids = ["sg-1"]
subnet_ids = ["subnet-1", "subnet-2"]
}
}
with access to parameter store
module "lambda" {
// see above
ssm_parameter_names = ["some/config/root/*"]
kms_key_arn = "arn:aws:kms:eu-west-1:647379381847:key/f79f2b-04684-4ad9-f9de8a-79d72f"
}
with log subscription (stream to ElasticSearch)
module "lambda" {
// see above
logfilter_destination_arn = "arn:aws:lambda:eu-west-1:647379381847:function:cloudwatch_logs_to_es_production"
}
Contributions are very welcome! Check out the Contribution Guidelines for instructions.
This Module follows the principles of Semantic Versioning. You can find each new release in the releases page.
During initial development, the major version will be 0 (e.g., 0.x.y
), which indicates the code does not yet have a
stable API. Once we hit 1.0.0
, we will make every effort to maintain a backwards compatible API and use the MAJOR,
MINOR, and PATCH versions on each release to indicate any incompatibilities.