From ef2705bb4b73af0d7fe4776ed207883bfcaf4082 Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Tue, 13 Aug 2024 13:24:16 +0100 Subject: [PATCH 1/7] default sg to default --- main.tf | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/main.tf b/main.tf index cc84643..e59d71c 100644 --- a/main.tf +++ b/main.tf @@ -1,3 +1,11 @@ +locals { + security_group_ids = var.security_group_ids != [] ? var.security_group_ids : [aws_security_group.default.id] +} + +data "aws_security_group" "default" { + count = var.security_group_ids != [] ? 0 : 1 + name = "${terraform.workspace}-default-lambda-sg" +} resource "aws_lambda_function" "lambda_function" { s3_bucket = var.s3_bucket s3_key = var.s3_key @@ -13,7 +21,7 @@ resource "aws_lambda_function" "lambda_function" { vpc_config { subnet_ids = var.subnet_ids - security_group_ids = var.security_group_ids + security_group_ids = local.security_group_ids } environment { From a2452197d501c54488fcc8510a948d75cdab6ed9 Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Thu, 15 Aug 2024 11:03:55 +0100 Subject: [PATCH 2/7] added use_default_sg variable --- main.tf | 4 ++-- variables.tf | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/main.tf b/main.tf index e59d71c..04dfec8 100644 --- a/main.tf +++ b/main.tf @@ -1,9 +1,9 @@ locals { - security_group_ids = var.security_group_ids != [] ? var.security_group_ids : [aws_security_group.default.id] + security_group_ids = var.use_default_sg == true ? [aws_security_group.default.id] : var.security_group_ids } data "aws_security_group" "default" { - count = var.security_group_ids != [] ? 0 : 1 + count = var.use_default_sg == true ? 1 : 0 name = "${terraform.workspace}-default-lambda-sg" } resource "aws_lambda_function" "lambda_function" { diff --git a/variables.tf b/variables.tf index 6bc60d0..ecff4b0 100644 --- a/variables.tf +++ b/variables.tf @@ -104,3 +104,8 @@ variable "architectures" { description = "The architectures supported by the Lambda function." default = ["x86_64"] } + +variable "use_default_sg" { + description = "Whether to use the default security group for the Lambda function." + default = false +} \ No newline at end of file From 5fefb44d6c7c848f9e21be26c31b1c6476f0ed1b Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Thu, 15 Aug 2024 11:38:02 +0100 Subject: [PATCH 3/7] fixed issue on local --- main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.tf b/main.tf index 04dfec8..2bd43ad 100644 --- a/main.tf +++ b/main.tf @@ -1,5 +1,5 @@ locals { - security_group_ids = var.use_default_sg == true ? [aws_security_group.default.id] : var.security_group_ids + security_group_ids = var.use_default_sg == true ? [data.aws_security_group.default[0].id] : var.security_group_ids } data "aws_security_group" "default" { From adfba38d9aee7837bc24b28373d99600fa9d9866 Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Thu, 15 Aug 2024 11:45:59 +0100 Subject: [PATCH 4/7] made vpc config dynamic --- main.tf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/main.tf b/main.tf index 2bd43ad..f2ffd32 100644 --- a/main.tf +++ b/main.tf @@ -19,11 +19,13 @@ resource "aws_lambda_function" "lambda_function" { tags = var.tags architectures = var.architectures - vpc_config { - subnet_ids = var.subnet_ids - security_group_ids = local.security_group_ids + dynamic vpc_config { + for_each = local.security_group_ids != [] ? [1] : [] + content { + subnet_ids = var.subnet_ids + security_group_ids = local.security_group_ids + } } - environment { variables = var.lambda_env } From 10e967ed47d31d6dc39af0d1df576a79955438f3 Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Wed, 21 Aug 2024 15:40:41 +0100 Subject: [PATCH 5/7] add use_default_security_group --- main.tf | 3 ++- variables.tf | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/main.tf b/main.tf index f2ffd32..38f0a1a 100644 --- a/main.tf +++ b/main.tf @@ -1,10 +1,11 @@ locals { - security_group_ids = var.use_default_sg == true ? [data.aws_security_group.default[0].id] : var.security_group_ids + security_group_ids = var.use_default_security_group == true ? [data.aws_security_group.default[0].id] : var.security_group_ids } data "aws_security_group" "default" { count = var.use_default_sg == true ? 1 : 0 name = "${terraform.workspace}-default-lambda-sg" + vpc_id = var.vpc_id } resource "aws_lambda_function" "lambda_function" { s3_bucket = var.s3_bucket diff --git a/variables.tf b/variables.tf index ecff4b0..276039d 100644 --- a/variables.tf +++ b/variables.tf @@ -108,4 +108,15 @@ variable "architectures" { variable "use_default_sg" { description = "Whether to use the default security group for the Lambda function." default = false +} + +variable "vpc_id" { + description = "The VPC ID in which the Lambda runs" + default = "" +} + +variable "use_default_security_group" { + type = bool + description = "Whether to use the default security group for the Lambda function." + default = false } \ No newline at end of file From 088fca623bc7d29049dc584d7b7ad6724f1c4c7c Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Fri, 23 Aug 2024 12:30:35 +0100 Subject: [PATCH 6/7] updated docs --- README.md | 26 +++++++++++++++----------- test/Dockerfile | 4 ++-- test/infra/main.tf | 17 ++++++++--------- test/requirements.txt | 2 +- test/run | 1 - 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 6d05ffb..4e63560 100644 --- a/README.md +++ b/README.md @@ -18,22 +18,26 @@ This module will deploy a Lambda function and a cron rule to run the Lambda func - `lambda_role_policy` (string) - The Lambda IAM Role Policy. - `lambda_env` - (string) - _optional_ - Environment parameters passed to the Lambda function. - `tags` (map) - A mapping of tags to assign to this lambda function. -- `architectures (list) - _optional_ - The architectures supported by the Lambda function. Defaults to ["x86_64"]. +- `architectures` (list) - _optional_ - The architectures supported by the Lambda function. Defaults to ["x86_64"]. +- `use_default_security_group` (bool) - _optional_ - Whether to use the default security group for the Lambda function. Defaults to false. +- `vpce_id` (string) - _optional_ - The ID of the VPC endpoint to associate with the Lambda function. ## Usage ```hcl module "lambda-function" { - source = "mergermarket/aws-lambda-cron/acuris" - version = "0.0.4" - s3_bucket = "s3_bucket_name" - s3_key = "s3_key_for_lambda" - function_name = "do_foo" - handler = "do_foo_handler" - runtime = "nodejs" - lambda_cron_schedule = "rate(5 minutes)" - lambda_env = "${var.lambda_env}" - architecture = ["arm64"] + source = "mergermarket/aws-lambda-cron/acuris" + version = "0.0.4" + s3_bucket = "s3_bucket_name" + s3_key = "s3_key_for_lambda" + function_name = "do_foo" + handler = "do_foo_handler" + runtime = "nodejs" + lambda_cron_schedule = "rate(5 minutes)" + lambda_env = "${var.lambda_env}" + architecture = ["arm64"] + vpc_id = module.platform_config.config["vpc"] + use_default_security_group = true } ``` Lambda environment variables file: diff --git a/test/Dockerfile b/test/Dockerfile index 2b0d871..f1c3562 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -1,9 +1,9 @@ FROM python:3-alpine COPY requirements.txt . -ENV TERRAFORM_VERSION=0.11.11 +ENV TERRAFORM_VERSION=0.13.7 ENV TERRAFORM_ZIP=terraform_${TERRAFORM_VERSION}_linux_amd64.zip -ENV TERRAFORM_SUM=94504f4a67bad612b5c8e3a4b7ce6ca2772b3c1559630dfd71e9c519e3d6149c +ENV TERRAFORM_SUM=4a52886e019b4fdad2439da5ff43388bbcc6cce9784fde32c53dcd0e28ca9957 RUN apk add -U ca-certificates curl && \ cd /tmp && \ diff --git a/test/infra/main.tf b/test/infra/main.tf index 94e2280..5d46897 100644 --- a/test/infra/main.tf +++ b/test/infra/main.tf @@ -1,7 +1,6 @@ provider "aws" { skip_credentials_validation = true skip_metadata_api_check = true - skip_get_ec2_platforms = true skip_region_validation = true skip_requesting_account_id = true max_retries = 1 @@ -17,12 +16,12 @@ module "lambda" { function_name = "check_lambda_function" handler = "some_handler" runtime = "python2.7" - lambda_env = "${var.lambda_env}" + lambda_env = var.lambda_env lambda_cron_schedule = "rate(5 minutes)" - subnet_ids = "${var.subnet_ids}" - security_group_ids = "${var.security_group_ids}" - tags = "${var.tags}" + subnet_ids = var.subnet_ids + security_group_ids = var.security_group_ids + tags = var.tags } module "lambda_long_name" { @@ -32,11 +31,11 @@ module "lambda_long_name" { function_name = "check_lambda_function_with_a_really_long_name_should_be_truncated" handler = "some_handler" runtime = "python2.7" - lambda_env = "${var.lambda_env}" + lambda_env = var.lambda_env lambda_cron_schedule = "rate(5 minutes)" - subnet_ids = "${var.subnet_ids}" - security_group_ids = "${var.security_group_ids}" + subnet_ids = var.subnet_ids + security_group_ids = var.security_group_ids } variable "subnet_ids" { @@ -64,5 +63,5 @@ variable "tags" { } output "lambda_function_arn" { - value = "${module.lambda.lambda_arn}" + value = module.lambda.lambda_arn } diff --git a/test/requirements.txt b/test/requirements.txt index bd253fe..e079f8a 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -1 +1 @@ -pytest==3.0.7 +pytest diff --git a/test/run b/test/run index 75e224f..00de982 100755 --- a/test/run +++ b/test/run @@ -6,4 +6,3 @@ repo_dir=$(git rev-parse --show-toplevel) name=$(basename $repo_dir)-test docker build -t $name $repo_dir/test - From 6349789a1c63fe2296fa9935780a20609aefa920 Mon Sep 17 00:00:00 2001 From: Marcio Goda Date: Fri, 23 Aug 2024 12:32:44 +0100 Subject: [PATCH 7/7] clean up unused variable --- main.tf | 2 +- variables.tf | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/main.tf b/main.tf index 38f0a1a..24b269e 100644 --- a/main.tf +++ b/main.tf @@ -3,7 +3,7 @@ locals { } data "aws_security_group" "default" { - count = var.use_default_sg == true ? 1 : 0 + count = var.use_default_security_group == true ? 1 : 0 name = "${terraform.workspace}-default-lambda-sg" vpc_id = var.vpc_id } diff --git a/variables.tf b/variables.tf index 276039d..0342523 100644 --- a/variables.tf +++ b/variables.tf @@ -105,11 +105,6 @@ variable "architectures" { default = ["x86_64"] } -variable "use_default_sg" { - description = "Whether to use the default security group for the Lambda function." - default = false -} - variable "vpc_id" { description = "The VPC ID in which the Lambda runs" default = ""