From e0380123b69111e21d588aedc0ebaab45f90c734 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Mon, 6 Jul 2026 15:32:17 +0000 Subject: [PATCH] fix(terraform): wire landlord-overrides SQS queue into FastAPI Lambda The /v1/bulk-uploads/trigger-landlord-overrides endpoint reads settings.LANDLORD_OVERRIDES_SQS_URL, but the fast-api Lambda's terraform never set it, so it fell back to the config default "changeme" and SendMessage failed with AWS.SimpleQueueService.NonExistentQueue. The landlord-overrides queue (and its finaliser sibling) were added to the router/config but only the finaliser was wired here. This adds the missing: - terraform_remote_state data source for the queue's state - LANDLORD_OVERRIDES_SQS_URL env var on the FastAPI Lambda - queue ARN in the fastapi-sqs-send IAM policy (else AccessDenied) Mirrors the existing postcode-splitter / combiner / finaliser wiring. Co-Authored-By: Claude Opus 4.8 (1M context) --- deployment/terraform/lambda/fast-api/main.tf | 23 +++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/deployment/terraform/lambda/fast-api/main.tf b/deployment/terraform/lambda/fast-api/main.tf index 04d05af72..696f46650 100644 --- a/deployment/terraform/lambda/fast-api/main.tf +++ b/deployment/terraform/lambda/fast-api/main.tf @@ -55,6 +55,15 @@ data "terraform_remote_state" "bulk_upload_finaliser" { } } +data "terraform_remote_state" "landlord_description_overrides" { + backend = "s3" + config = { + bucket = "landlord-description-overrides-terraform-state", + key = "env:/${var.stage}/terraform.tfstate" + region = "eu-west-2" + } +} + ############################################ # Load Credentials ############################################ @@ -111,11 +120,12 @@ module "fastapi" { CARBON_BASELINE_PREDICTIONS_BUCKET = data.terraform_remote_state.shared.outputs.retrofit_carbon_baseline_predictions_bucket_name HEAT_BASELINE_PREDICTIONS_BUCKET = data.terraform_remote_state.shared.outputs.retrofit_heat_baseline_predictions_bucket_name - ENGINE_SQS_URL = data.terraform_remote_state.engine.outputs.ara_engine_queue_url - CATEGORISATION_SQS_URL = data.terraform_remote_state.categorisation.outputs.categorisation_queue_url - POSTCODE_SPLITTER_SQS_URL = data.terraform_remote_state.postcode_splitter.outputs.postcode_splitter_queue_url - COMBINER_SQS_URL = data.terraform_remote_state.bulk_address2uprn_combiner.outputs.bulk_address2uprn_combiner_queue_url - FINALISER_SQS_URL = data.terraform_remote_state.bulk_upload_finaliser.outputs.bulk_upload_finaliser_queue_url + ENGINE_SQS_URL = data.terraform_remote_state.engine.outputs.ara_engine_queue_url + CATEGORISATION_SQS_URL = data.terraform_remote_state.categorisation.outputs.categorisation_queue_url + POSTCODE_SPLITTER_SQS_URL = data.terraform_remote_state.postcode_splitter.outputs.postcode_splitter_queue_url + COMBINER_SQS_URL = data.terraform_remote_state.bulk_address2uprn_combiner.outputs.bulk_address2uprn_combiner_queue_url + FINALISER_SQS_URL = data.terraform_remote_state.bulk_upload_finaliser.outputs.bulk_upload_finaliser_queue_url + LANDLORD_OVERRIDES_SQS_URL = data.terraform_remote_state.landlord_description_overrides.outputs.landlord_description_overrides_queue_url } } @@ -138,7 +148,8 @@ module "fastapi_sqs_policy" { data.terraform_remote_state.categorisation.outputs.categorisation_queue_arn, data.terraform_remote_state.postcode_splitter.outputs.postcode_splitter_queue_arn, data.terraform_remote_state.bulk_address2uprn_combiner.outputs.bulk_address2uprn_combiner_queue_arn, - data.terraform_remote_state.bulk_upload_finaliser.outputs.bulk_upload_finaliser_queue_arn + data.terraform_remote_state.bulk_upload_finaliser.outputs.bulk_upload_finaliser_queue_arn, + data.terraform_remote_state.landlord_description_overrides.outputs.landlord_description_overrides_queue_arn ] conditions = null