1- # Note: This is all disabled in the preprod environment
21# Define the directory containing the Docker image and calculate its SHA-256 hash for triggering redeployments
32locals {
43 mesh_processor_lambda_dir = abspath (" ${ path . root } /../mesh_processor" )
87
98
109resource "aws_ecr_repository" "mesh_file_converter_lambda_repository" {
11- count = var. environment == " int" ? 0 : 1
1210 image_scanning_configuration {
1311 scan_on_push = true
1412 }
@@ -18,12 +16,11 @@ resource "aws_ecr_repository" "mesh_file_converter_lambda_repository" {
1816
1917# Module for building and pushing Docker image to ECR
2018module "mesh_processor_docker_image" {
21- count = var. environment == " int" ? 0 : 1
2219 source = " terraform-aws-modules/lambda/aws//modules/docker-build"
2320 version = " 8.0.1"
2421
2522 create_ecr_repo = false
26- ecr_repo = aws_ecr_repository. mesh_file_converter_lambda_repository [ 0 ] . name
23+ ecr_repo = aws_ecr_repository. mesh_file_converter_lambda_repository . name
2724 ecr_repo_lifecycle_policy = jsonencode ({
2825 " rules" : [
2926 {
@@ -51,8 +48,7 @@ module "mesh_processor_docker_image" {
5148
5249# Define the lambdaECRImageRetreival policy
5350resource "aws_ecr_repository_policy" "mesh_processor_lambda_ECRImageRetreival_policy" {
54- count = var. environment == " int" ? 0 : 1
55- repository = aws_ecr_repository. mesh_file_converter_lambda_repository [0 ]. name
51+ repository = aws_ecr_repository. mesh_file_converter_lambda_repository . name
5652
5753 policy = jsonencode ({
5854 Version = " 2012-10-17"
@@ -82,8 +78,7 @@ resource "aws_ecr_repository_policy" "mesh_processor_lambda_ECRImageRetreival_po
8278
8379# IAM Role for Lambda
8480resource "aws_iam_role" "mesh_processor_lambda_exec_role" {
85- count = var. environment == " int" ? 0 : 1
86- name = " ${ local . short_prefix } -mesh_processor-lambda-exec-role"
81+ name = " ${ local . short_prefix } -mesh_processor-lambda-exec-role"
8782 assume_role_policy = jsonencode ({
8883 Version = " 2012-10-17" ,
8984 Statement = [{
@@ -99,8 +94,7 @@ resource "aws_iam_role" "mesh_processor_lambda_exec_role" {
9994
10095# Policy for Lambda execution role
10196resource "aws_iam_policy" "mesh_processor_lambda_exec_policy" {
102- count = var. environment == " int" ? 0 : 1
103- name = " ${ local . short_prefix } -mesh_processor-lambda-exec-policy"
97+ name = " ${ local . short_prefix } -mesh_processor-lambda-exec-policy"
10498 policy = jsonencode ({
10599 Version = " 2012-10-17" ,
106100 Statement = [
@@ -146,7 +140,6 @@ resource "aws_iam_policy" "mesh_processor_lambda_exec_policy" {
146140}
147141
148142resource "aws_iam_policy" "mesh_processor_lambda_kms_access_policy" {
149- count = var. environment == " int" ? 0 : 1
150143 name = " ${ local . short_prefix } -mesh_processor-lambda-kms-policy"
151144 description = " Allow Lambda to decrypt environment variables"
152145
@@ -161,7 +154,7 @@ resource "aws_iam_policy" "mesh_processor_lambda_kms_access_policy" {
161154 " kms:GenerateDataKey*"
162155 ]
163156 Resource = [
164- data.aws_kms_key.mesh_s3_encryption_key[ 0 ] .arn
157+ data.aws_kms_key.mesh_s3_encryption_key.arn
165158 # "arn:aws:kms:eu-west-2:345594581768:key/9b756762-bc6f-42fb-ba56-2c0c00c15289"
166159 ]
167160 }
@@ -171,44 +164,39 @@ resource "aws_iam_policy" "mesh_processor_lambda_kms_access_policy" {
171164
172165# Attach the execution policy to the Lambda role
173166resource "aws_iam_role_policy_attachment" "mesh_processor_lambda_exec_policy_attachment" {
174- count = var. environment == " int" ? 0 : 1
175- role = aws_iam_role. mesh_processor_lambda_exec_role [0 ]. name
176- policy_arn = aws_iam_policy. mesh_processor_lambda_exec_policy [0 ]. arn
167+ role = aws_iam_role. mesh_processor_lambda_exec_role . name
168+ policy_arn = aws_iam_policy. mesh_processor_lambda_exec_policy . arn
177169}
178170
179171
180172# Attach the kms policy to the Lambda role
181173resource "aws_iam_role_policy_attachment" "mesh_processor_lambda_kms_policy_attachment" {
182- count = var. environment == " int" ? 0 : 1
183- role = aws_iam_role. mesh_processor_lambda_exec_role [0 ]. name
184- policy_arn = aws_iam_policy. mesh_processor_lambda_kms_access_policy [0 ]. arn
174+ role = aws_iam_role. mesh_processor_lambda_exec_role . name
175+ policy_arn = aws_iam_policy. mesh_processor_lambda_kms_access_policy . arn
185176}
186177
187178# Lambda Function with Security Group and VPC.
188179resource "aws_lambda_function" "mesh_file_converter_lambda" {
189- count = var. environment == " int" ? 0 : 1
190180 function_name = " ${ local . short_prefix } -mesh_processor_lambda"
191- role = aws_iam_role. mesh_processor_lambda_exec_role [ 0 ] . arn
181+ role = aws_iam_role. mesh_processor_lambda_exec_role . arn
192182 package_type = " Image"
193- image_uri = module. mesh_processor_docker_image [ 0 ] . image_uri
183+ image_uri = module. mesh_processor_docker_image . image_uri
194184 architectures = [" x86_64" ]
195185 timeout = 360
196186
197187 environment {
198188 variables = {
199- Destination_BUCKET_NAME = aws_s3_bucket.batch_data_source_bucket.bucket
200- MESH_FILE_PROC_LAMBDA_NAME = " imms-${ var . sub_environment } -meshfileproc_lambda"
189+ Destination_BUCKET_NAME = aws_s3_bucket.batch_data_source_bucket.bucket
201190 }
202191 }
203192
204193}
205194
206195# Permission for S3 to invoke Lambda function
207196resource "aws_lambda_permission" "mesh_s3_invoke_permission" {
208- count = var. environment == " int" ? 0 : 1
209197 statement_id = " AllowExecutionFromS3"
210198 action = " lambda:InvokeFunction"
211- function_name = aws_lambda_function. mesh_file_converter_lambda [ 0 ] . function_name
199+ function_name = aws_lambda_function. mesh_file_converter_lambda . function_name
212200 principal = " s3.amazonaws.com"
213201 source_arn = " arn:aws:s3:::local-immunisation-mesh"
214202}
@@ -218,18 +206,16 @@ resource "aws_lambda_permission" "mesh_s3_invoke_permission" {
218206# S3 Bucket notification to trigger Lambda function
219207resource "aws_s3_bucket_notification" "mesh_datasources_lambda_notification" {
220208 # TODO - what is this bucket and why isn't it managed by Terraform?
221- count = var. environment == " int" ? 0 : 1
222209 bucket = " local-immunisation-mesh"
223210
224211 lambda_function {
225- lambda_function_arn = aws_lambda_function. mesh_file_converter_lambda [ 0 ] . arn
212+ lambda_function_arn = aws_lambda_function. mesh_file_converter_lambda . arn
226213 events = [" s3:ObjectCreated:*" ]
227214 # filter_prefix =""
228215 }
229216}
230217
231218resource "aws_cloudwatch_log_group" "mesh_file_converter_log_group" {
232- count = var. environment == " int" ? 0 : 1
233219 name = " /aws/lambda/${ local . short_prefix } -mesh_processor_lambda"
234220 retention_in_days = 30
235221}
0 commit comments