From 0be7ef6c89e9f09bb58863c5665e442cf7c48649 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Thu, 17 Jul 2025 15:56:37 +0000 Subject: [PATCH] lambda example completed --- .../lambda/lambda_example/docker/output.tf | 3 +++ .../lambda_example_and_config.tf | 21 ++++++++++++------- deployment/lambda/lambda_example/main.tf | 0 deployment/lambda/lambda_example/provider.tf | 16 ++++++++++++++ 4 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 deployment/lambda/lambda_example/docker/output.tf create mode 100644 deployment/lambda/lambda_example/main.tf create mode 100644 deployment/lambda/lambda_example/provider.tf diff --git a/deployment/lambda/lambda_example/docker/output.tf b/deployment/lambda/lambda_example/docker/output.tf new file mode 100644 index 0000000..1b797cf --- /dev/null +++ b/deployment/lambda/lambda_example/docker/output.tf @@ -0,0 +1,3 @@ +output "ecr_repo_url" { + value = aws_ecr_repository.lambda_example.repository_url +} \ No newline at end of file diff --git a/deployment/lambda/lambda_example/lambda_example_and_config.tf b/deployment/lambda/lambda_example/lambda_example_and_config.tf index 581d038..1fbd5ad 100644 --- a/deployment/lambda/lambda_example/lambda_example_and_config.tf +++ b/deployment/lambda/lambda_example/lambda_example_and_config.tf @@ -1,10 +1,18 @@ +# Reference existing IAM role +data "aws_iam_role" "lambda_exec_role" { + name = "lambda-exec-role" +} + +# Reference existing ECR repository +data "aws_ecr_repository" "lambda_example" { + name = "lambda_example" +} + # SQS queue for lambda_example resource "aws_sqs_queue" "lambda_example_queue" { name = "lambda-example-queue" } - - # Custom IAM policy specific to lambda_example resource "aws_iam_policy" "lambda_example_policy" { name = "lambda-example-policy" @@ -28,7 +36,7 @@ resource "aws_iam_policy" "lambda_example_policy" { "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], - Resource = aws_ecr_repository.lambda_example.arn + Resource = data.aws_ecr_repository.lambda_example.arn }, { Effect = "Allow", @@ -40,16 +48,16 @@ resource "aws_iam_policy" "lambda_example_policy" { } resource "aws_iam_role_policy_attachment" "lambda_example_policy_attach" { - role = aws_iam_role.lambda_exec_role.name + role = data.aws_iam_role.lambda_exec_role.name policy_arn = aws_iam_policy.lambda_example_policy.arn } # Lambda function resource "aws_lambda_function" "lambda_example" { function_name = "lambda-example" - role = aws_iam_role.lambda_exec_role.arn + role = data.aws_iam_role.lambda_exec_role.arn package_type = "Image" - image_uri = "${aws_ecr_repository.lambda_example.repository_url}:latest" + image_uri = "${data.aws_ecr_repository.lambda_example.repository_url}:latest" timeout = 10 } @@ -59,4 +67,3 @@ resource "aws_lambda_event_source_mapping" "lambda_example_trigger" { function_name = aws_lambda_function.lambda_example.arn batch_size = 1 } - diff --git a/deployment/lambda/lambda_example/main.tf b/deployment/lambda/lambda_example/main.tf new file mode 100644 index 0000000..e69de29 diff --git a/deployment/lambda/lambda_example/provider.tf b/deployment/lambda/lambda_example/provider.tf new file mode 100644 index 0000000..bac0dad --- /dev/null +++ b/deployment/lambda/lambda_example/provider.tf @@ -0,0 +1,16 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 6.3.0" + } + } + backend "s3" { + bucket = "survey-extractor-tf-state" + region = "eu-west-2" + profile = "domna.dev" # /home/vscode/aws/credentials + key = "env:/dev/lambda/eachlambda/lambda_example.tfstate" + } + + required_version = ">= 1.2.0" +}