diff --git a/deployment/lambda/whlg_calculator/docker/.dockerignore b/deployment/lambda/whlg_calculator/docker/.dockerignore deleted file mode 100644 index d587d341..00000000 --- a/deployment/lambda/whlg_calculator/docker/.dockerignore +++ /dev/null @@ -1,21 +0,0 @@ -# Ignore junk and large files -*.pdf -*.csv -*.xml -*.parquet -*.ipynb -*.mp4 -*.mov -*.jpg -*.png -*.zip -*.tar.gz -__pycache__/ -*.pyc -*.pyo -*.pyd -build/ -dist/ -.etl_cache/ -tests/ -docs/ diff --git a/deployment/lambda/whlg_calculator/docker/Dockerfile b/deployment/lambda/whlg_calculator/docker/Dockerfile deleted file mode 100644 index cdd1f8a3..00000000 --- a/deployment/lambda/whlg_calculator/docker/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM public.ecr.aws/lambda/python:3.12 - -# Install Poetry (you could pin a version if you like) -RUN curl -sSL https://install.python-poetry.org | python3 - - -# Add Poetry to PATH -ENV PATH="/root/.local/bin:$PATH" - -# Set working directory -WORKDIR /var/task - -# Copy Poetry files first to leverage Docker layer caching -COPY pyproject.toml poetry.lock README.md ./ -COPY etl/ etl/ - - -# Install dependencies into /var/task -RUN poetry config virtualenvs.create false \ - && poetry install --only main --no-interaction --no-ansi - -# Copy app code -COPY deployment/lambda/extractor_and_loader/docker/app.py ./ - -# Set Lambda handler -CMD ["app.handler"] \ No newline at end of file diff --git a/deployment/lambda/whlg_calculator/docker/app.py b/deployment/lambda/whlg_calculator/docker/app.py deleted file mode 100644 index 4dcf1a8e..00000000 --- a/deployment/lambda/whlg_calculator/docker/app.py +++ /dev/null @@ -1,3 +0,0 @@ -def handler(event, context): - print("Hello and welcome to the WHLG Calculator") - print("Please contact the tech team for implementation") \ No newline at end of file diff --git a/deployment/lambda/whlg_calculator/docker/ecr.tf b/deployment/lambda/whlg_calculator/docker/ecr.tf deleted file mode 100644 index a1501dff..00000000 --- a/deployment/lambda/whlg_calculator/docker/ecr.tf +++ /dev/null @@ -1,63 +0,0 @@ -# ECR repo -resource "aws_ecr_repository" "whlg_calc_adhoc_ecr" { - name = "whlg_calc_adhoc_ecr" -} - -# ECR policy to allow Lambda access -resource "aws_ecr_repository_policy" "whlg_calc_adhoc_ecr_access" { - repository = aws_ecr_repository.whlg_calc_adhoc_ecr.name - - policy = jsonencode({ - Version = "2008-10-17", - Statement = [{ - Sid = "AllowLambdaPull", - Effect = "Allow", - Principal = { - Service = "lambda.amazonaws.com" - }, - Action = [ - "ecr:GetDownloadUrlForLayer", - "ecr:BatchGetImage", - "ecr:BatchCheckLayerAvailability" - ] - }] - }) -} - - - -# ECR lifecycle policy to delete tagged images older than 14 days -resource "aws_ecr_lifecycle_policy" "whlg_calc_adhoc_loader_lifecycle" { - repository = aws_ecr_repository.whlg_calc_adhoc_ecr.name - - policy = jsonencode({ - "rules": [ - { - "rulePriority": 2, - "description": "Expire images older than 14 days", - "selection": { - "tagStatus": "untagged", - "countType": "sinceImagePushed", - "countUnit": "days", - "countNumber": 1 - }, - "action": { - "type": "expire" - } - }, - { - "rulePriority": 1, - "description": "Keep last 5 images", - "selection": { - "tagStatus": "tagged", - "tagPrefixList": ["feature"], - "countType": "imageCountMoreThan", - "countNumber": 5 - }, - "action": { - "type": "expire" - } - } - ] - }) -} \ No newline at end of file diff --git a/deployment/lambda/whlg_calculator/docker/main.tf b/deployment/lambda/whlg_calculator/docker/main.tf deleted file mode 100644 index e69de29b..00000000 diff --git a/deployment/lambda/whlg_calculator/docker/provider.tf b/deployment/lambda/whlg_calculator/docker/provider.tf deleted file mode 100644 index 5f0fef0f..00000000 --- a/deployment/lambda/whlg_calculator/docker/provider.tf +++ /dev/null @@ -1,15 +0,0 @@ -terraform { - required_providers { - aws = { - source = "hashicorp/aws" - version = "~> 6.3.0" - } - } - backend "s3" { - bucket = "whlg-calc-tf-state" - region = "eu-west-2" - key = "env:/dev/lambda/ecr/whlg-calc.tfstate" - } - - required_version = ">= 1.2.0" -} diff --git a/deployment/lambda/whlg_calculator/main.tf b/deployment/lambda/whlg_calculator/main.tf deleted file mode 100644 index e69de29b..00000000 diff --git a/deployment/lambda/whlg_calculator/provider.tf b/deployment/lambda/whlg_calculator/provider.tf deleted file mode 100644 index df9abf1c..00000000 --- a/deployment/lambda/whlg_calculator/provider.tf +++ /dev/null @@ -1,15 +0,0 @@ -terraform { - required_providers { - aws = { - source = "hashicorp/aws" - version = "~> 6.3.0" - } - } - backend "s3" { - bucket = "whlg-calc-tf-state" - region = "eu-west-2" - key = "env:/dev/lambda/eachlambda/whlg_calc_lambda.tfstate" - } - - required_version = ">= 1.2.0" -} diff --git a/deployment/lambda/whlg_calculator/vars.tf b/deployment/lambda/whlg_calculator/vars.tf deleted file mode 100644 index ecdf359d..00000000 --- a/deployment/lambda/whlg_calculator/vars.tf +++ /dev/null @@ -1,5 +0,0 @@ -variable "lambda_image_tag" { - description = "Docker image tag (e.g. GitHub SHA)" - type = string - default = "local-dev-latest" -} \ No newline at end of file diff --git a/deployment/lambda/whlg_calculator/whlg_lambda.tf b/deployment/lambda/whlg_calculator/whlg_lambda.tf deleted file mode 100644 index 0a5433a9..00000000 --- a/deployment/lambda/whlg_calculator/whlg_lambda.tf +++ /dev/null @@ -1,83 +0,0 @@ -# Reference existing IAM role -data "aws_iam_role" "lambda_exec_role" { - name = "lambda-exec-role" -} - -# Reference existing ECR repository -data "aws_ecr_repository" "whlg_calc_adhoc_ecr" { - name = "whlg_calc_adhoc_ecr" -} - -# SQS queue -resource "aws_sqs_queue" "whlg_calc_adhoc_queue" { - name = "whlg_calc_adhoc-queue" - visibility_timeout_seconds = 1800 # 30 minutes (>= 300s and ~6x Lambda timeout) -} - - -# Custom IAM policy specific to lambda_example -resource "aws_iam_policy" "whlg_calc_adhoc_policy" { - name = "walthamforest_adhoc_policy_lambda" - - policy = jsonencode({ - Version = "2012-10-17", - Statement = [ - { - Effect = "Allow", - Action = [ - "sqs:ReceiveMessage", - "sqs:DeleteMessage", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl", - "sqs:ChangeMessageVisibility" - ], - Resource = aws_sqs_queue.whlg_calc_adhoc_queue.arn - }, - { - Effect = "Allow", - Action = [ - "ecr:GetDownloadUrlForLayer", - "ecr:BatchGetImage", - "ecr:BatchCheckLayerAvailability" - ], - Resource = data.aws_ecr_repository.whlg_calc_adhoc_ecr.arn - }, - { - Effect = "Allow", - Action = ["ecr:GetAuthorizationToken"], - Resource = "*" - } - ] - }) -} - -resource "aws_iam_role_policy_attachment" "whlg_calc_adhoc_policy_attach" { - role = data.aws_iam_role.lambda_exec_role.name - policy_arn = aws_iam_policy.whlg_calc_adhoc_policy.arn -} - -# Lambda function -resource "aws_lambda_function" "whlg_calc_adhoc" { - function_name = "whlg_calc_adhoc" - role = data.aws_iam_role.lambda_exec_role.arn - package_type = "Image" - image_uri = "${data.aws_ecr_repository.whlg_calc_adhoc_ecr.repository_url}:${var.lambda_image_tag}" - # Increase timeout (max 900 sec / 15 min) - # timeout = 300 # e.g. 5 minutes - - # Increase memory (default 128 MB) - memory_size = 2048 # try 1024 or 2048 MB to start - - # environment { - # variables = { - # DATABASE_URL = "postgresql://postgres:makingwarmhomes@terraform-20250331175522503500000002.cdgzupxvdyp0.eu-west-2.rds.amazonaws.com:5432/surveyDB" - # } - # } -} - -# SQS trigger -resource "aws_lambda_event_source_mapping" "whlg_calc_adhoc_trigger" { - event_source_arn = aws_sqs_queue.whlg_calc_adhoc_queue.arn - function_name = aws_lambda_function.whlg_calc_adhoc.arn - batch_size = 1 -}