diff --git a/backend/pashub_fetcher/handler/Dockerfile b/backend/pashub_fetcher/handler/Dockerfile index e450d340..f8c2008c 100644 --- a/backend/pashub_fetcher/handler/Dockerfile +++ b/backend/pashub_fetcher/handler/Dockerfile @@ -8,7 +8,8 @@ RUN chmod +x /usr/local/bin/aws-lambda-rie WORKDIR /var/task COPY utils/ utils/ -COPY backend/pashub_fetcher/ backend/pashub_fetcher/ +COPY backend/ backend/ +COPY datatypes/ datatypes/ COPY backend/pashub_fetcher/handler/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt @@ -22,5 +23,4 @@ ENTRYPOINT ["python", "-m", "awslambdaric"] # ----------------------------- # Lambda handler # ----------------------------- -CMD ["backend.pashub_fetcher.handler.handler"] -# CMD ["backend.pashub_fetcher.handler.handler.handler"] \ No newline at end of file +CMD ["backend.pashub_fetcher.handler.handler.handler"] \ No newline at end of file diff --git a/backend/pashub_fetcher/handler/requirements.txt b/backend/pashub_fetcher/handler/requirements.txt index c4e416a8..ba235c7f 100644 --- a/backend/pashub_fetcher/handler/requirements.txt +++ b/backend/pashub_fetcher/handler/requirements.txt @@ -2,4 +2,12 @@ awslambdaric playwright==1.58.0 requests msal -openpyxl \ No newline at end of file +openpyxl +pydantic-settings +sqlalchemy +sqlmodel +psycopg2-binary +pytz +boto3==1.35.44 +pandas==2.2.2 +numpy<2.0 diff --git a/backend/pashub_fetcher/local_handler/docker-compose.yml b/backend/pashub_fetcher/local_handler/docker-compose.yml index 34ba9277..8b183d80 100644 --- a/backend/pashub_fetcher/local_handler/docker-compose.yml +++ b/backend/pashub_fetcher/local_handler/docker-compose.yml @@ -5,6 +5,8 @@ services: build: context: ../../../ dockerfile: backend/pashub_fetcher/handler/Dockerfile + entrypoint: ["/usr/local/bin/aws-lambda-rie", "python", "-m", "awslambdaric"] + command: ["backend.pashub_fetcher.handler.handler.handler"] ports: - "9000:8080" env_file: diff --git a/backend/pashub_fetcher/local_handler/invoke_local_lambda.py b/backend/pashub_fetcher/local_handler/invoke_local_lambda.py index 219446fd..5248a874 100644 --- a/backend/pashub_fetcher/local_handler/invoke_local_lambda.py +++ b/backend/pashub_fetcher/local_handler/invoke_local_lambda.py @@ -12,8 +12,9 @@ payload = { { "body": json.dumps( { - "pashub_link": "https://pashub.net/jobs/00000000-0000-0000-0000-000000000000/details", + "pashub_link": "https://google.co.uk", "uprn": "123456", + "hubspot_deal_id": "498926855369", } ) } diff --git a/infrastructure/terraform/lambda/hubspot_deal_etl/main.tf b/infrastructure/terraform/lambda/hubspot_deal_etl/main.tf index e8762337..48dd6b78 100644 --- a/infrastructure/terraform/lambda/hubspot_deal_etl/main.tf +++ b/infrastructure/terraform/lambda/hubspot_deal_etl/main.tf @@ -55,4 +55,25 @@ module "hubspot_deal_etl" { resource "aws_iam_role_policy_attachment" "lambda_s3_policy" { role = module.hubspot_deal_etl.role_name policy_arn = data.terraform_remote_state.shared.outputs.hubspot_etl_s3_read_and_write_arn +} + +# Create and attach S3 send policy for PasHub Fetcher queue +module "hubspot_deal_etl_sqs_policy" { + source = "../../modules/general_iam_policy" + + policy_name = "hubspot-deal-etl-sqs-send-${var.stage}" + policy_description = "Allow Hubspot ETL Lambda to send messages to PasHub Fetcher queue" + + actions = [ + "sqs:SendMessage" + ] + + resources = [ + data.terraform_remote_state.pashub_to_ara.outputs.pashub_to_ara_queue_arn + ] +} + +resource "aws_iam_role_policy_attachment" "hubspot_deal_etl_sqs_send" { + role = module.hubspot_deal_etl.role_name + policy_arn = module.hubspot_deal_etl_sqs_policy.policy_arn } \ No newline at end of file diff --git a/infrastructure/terraform/lambda/pashub_to_ara/outputs.tf b/infrastructure/terraform/lambda/pashub_to_ara/outputs.tf index d44b8763..584c9b63 100644 --- a/infrastructure/terraform/lambda/pashub_to_ara/outputs.tf +++ b/infrastructure/terraform/lambda/pashub_to_ara/outputs.tf @@ -2,3 +2,8 @@ output "pashub_to_ara_queue_url" { value = module.lambda.queue_url description = "URL of the PasHub to Ara SQS queue" } + +output "pashub_to_ara_queue_arn" { + value = module.lambda.queue_arn + description = "ARN of the PasHub to Ara SQS queue" +}