mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
Deploy SharePoint renamer as Lambda with SQS trigger 🟩
This commit is contained in:
parent
b3e9d858d9
commit
8cb0e986e6
11 changed files with 185 additions and 1 deletions
39
.github/workflows/deploy_terraform.yml
vendored
39
.github/workflows/deploy_terraform.yml
vendored
|
|
@ -495,6 +495,45 @@ jobs:
|
|||
TF_VAR_pashub_coordination_password: ${{ secrets.PASHUB_COORDINATION_PASSWORD }}
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Build SharePoint Renamer image and Push
|
||||
# ============================================================
|
||||
sharepoint_renamer_image:
|
||||
needs: [determine_stage, shared_terraform]
|
||||
uses: ./.github/workflows/_build_image.yml
|
||||
with:
|
||||
ecr_repo: sharepoint-renamer-${{ needs.determine_stage.outputs.stage }}
|
||||
dockerfile_path: applications/sharepoint_renamer/handler/Dockerfile
|
||||
build_context: .
|
||||
secrets:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEV_AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_REGION: ${{ secrets.DEV_AWS_REGION }}
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Deploy SharePoint Renamer Lambda
|
||||
# ============================================================
|
||||
sharepoint_renamer_lambda:
|
||||
needs: [sharepoint_renamer_image, determine_stage]
|
||||
uses: ./.github/workflows/_deploy_lambda.yml
|
||||
with:
|
||||
lambda_name: sharepoint_renamer
|
||||
lambda_path: deployment/terraform/lambda/sharepoint_renamer
|
||||
stage: ${{ needs.determine_stage.outputs.stage }}
|
||||
ecr_repo: sharepoint-renamer-${{ needs.determine_stage.outputs.stage }}
|
||||
image_digest: ${{ needs.sharepoint_renamer_image.outputs.image_digest }}
|
||||
terraform_apply: ${{ needs.determine_stage.outputs.terraform_apply }}
|
||||
secrets:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEV_AWS_SECRET_ACCESS_KEY }}
|
||||
AWS_REGION: ${{ secrets.DEV_AWS_REGION }}
|
||||
TF_VAR_sharepoint_client_id: ${{ secrets.SHAREPOINT_CLIENT_ID }}
|
||||
TF_VAR_sharepoint_client_secret: ${{ secrets.SHAREPOINT_CLIENT_SECRET }}
|
||||
TF_VAR_sharepoint_tenant_id: ${{ secrets.SHAREPOINT_TENANT_ID }}
|
||||
TF_VAR_social_housing_wave_3_sharepoint_id: ${{ secrets.SOCIAL_HOUSING_WAVE_3_SHAREPOINT_ID }}
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Deploy FastAPI Lambda
|
||||
# ============================================================
|
||||
|
|
|
|||
16
applications/sharepoint_renamer/handler/Dockerfile
Normal file
16
applications/sharepoint_renamer/handler/Dockerfile
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
FROM public.ecr.aws/lambda/python:3.11
|
||||
|
||||
WORKDIR /var/task
|
||||
|
||||
COPY applications/sharepoint_renamer/handler/requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY utils/ utils/
|
||||
COPY backend/__init__.py backend/__init__.py
|
||||
COPY backend/pashub_fetcher/ backend/pashub_fetcher/
|
||||
COPY applications/sharepoint_renamer/ applications/sharepoint_renamer/
|
||||
COPY scripts/__init__.py scripts/__init__.py
|
||||
COPY scripts/rename_sharepoint_files.py scripts/rename_sharepoint_files.py
|
||||
COPY scripts/sero_address_list.csv scripts/sero_address_list.csv
|
||||
|
||||
CMD ["applications.sharepoint_renamer.handler.handler.handler"]
|
||||
7
applications/sharepoint_renamer/handler/handler.py
Normal file
7
applications/sharepoint_renamer/handler/handler.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from typing import Any
|
||||
|
||||
from scripts.rename_sharepoint_files import main
|
||||
|
||||
|
||||
def handler(event: dict[str, Any], context: Any) -> None:
|
||||
main()
|
||||
2
applications/sharepoint_renamer/handler/requirements.txt
Normal file
2
applications/sharepoint_renamer/handler/requirements.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
msal
|
||||
requests
|
||||
22
deployment/terraform/lambda/sharepoint_renamer/main.tf
Normal file
22
deployment/terraform/lambda/sharepoint_renamer/main.tf
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
module "lambda" {
|
||||
source = "../../modules/lambda_with_sqs"
|
||||
|
||||
name = "sharepoint_renamer"
|
||||
stage = var.stage
|
||||
|
||||
image_uri = local.image_uri
|
||||
timeout = var.timeout
|
||||
|
||||
reserved_concurrent_executions = var.reserved_concurrent_executions
|
||||
|
||||
batch_size = var.batch_size
|
||||
|
||||
environment = {
|
||||
STAGE = var.stage
|
||||
|
||||
SHAREPOINT_CLIENT_ID = var.sharepoint_client_id
|
||||
SHAREPOINT_CLIENT_SECRET = var.sharepoint_client_secret
|
||||
SHAREPOINT_TENANT_ID = var.sharepoint_tenant_id
|
||||
SOCIAL_HOUSING_WAVE_3_SHAREPOINT_ID = var.social_housing_wave_3_sharepoint_id
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
output "sharepoint_renamer_queue_url" {
|
||||
value = module.lambda.queue_url
|
||||
description = "URL of the SharePoint Renamer SQS queue"
|
||||
}
|
||||
|
||||
output "sharepoint_renamer_queue_arn" {
|
||||
value = module.lambda.queue_arn
|
||||
description = "ARN of the SharePoint Renamer SQS queue"
|
||||
}
|
||||
20
deployment/terraform/lambda/sharepoint_renamer/provider.tf
Normal file
20
deployment/terraform/lambda/sharepoint_renamer/provider.tf
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
terraform {
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = ">= 5.0"
|
||||
}
|
||||
}
|
||||
|
||||
backend "s3" {
|
||||
bucket = "sharepoint-renamer-terraform-state"
|
||||
key = "terraform.tfstate"
|
||||
region = "eu-west-2"
|
||||
}
|
||||
|
||||
required_version = ">= 1.2.0"
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = "eu-west-2"
|
||||
}
|
||||
55
deployment/terraform/lambda/sharepoint_renamer/variables.tf
Normal file
55
deployment/terraform/lambda/sharepoint_renamer/variables.tf
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
variable "stage" {
|
||||
description = "Deployment stage (e.g. dev, prod)"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "ecr_repo_url" {
|
||||
type = string
|
||||
description = "ECR repository URL (no tag, no digest)"
|
||||
}
|
||||
|
||||
variable "image_digest" {
|
||||
type = string
|
||||
description = "Image digest (sha256:...)"
|
||||
}
|
||||
|
||||
variable "timeout" {
|
||||
type = number
|
||||
default = 900
|
||||
description = "Lambda timeout in seconds."
|
||||
}
|
||||
|
||||
variable "reserved_concurrent_executions" {
|
||||
type = number
|
||||
default = 1
|
||||
description = "Prevent parallel renames causing race conditions on SharePoint."
|
||||
}
|
||||
|
||||
variable "batch_size" {
|
||||
type = number
|
||||
default = 1
|
||||
}
|
||||
|
||||
variable "sharepoint_client_id" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "sharepoint_client_secret" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "sharepoint_tenant_id" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "social_housing_wave_3_sharepoint_id" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
locals {
|
||||
image_uri = "${var.ecr_repo_url}@${var.image_digest}"
|
||||
}
|
||||
|
|
@ -844,3 +844,17 @@ module "audit_generator_registry" {
|
|||
stage = var.stage
|
||||
}
|
||||
|
||||
################################################
|
||||
# SharePoint Renamer – Lambda
|
||||
################################################
|
||||
module "sharepoint_renamer_state_bucket" {
|
||||
source = "../modules/tf_state_bucket"
|
||||
bucket_name = "sharepoint-renamer-terraform-state"
|
||||
}
|
||||
|
||||
module "sharepoint_renamer_registry" {
|
||||
source = "../modules/container_registry"
|
||||
name = "sharepoint-renamer"
|
||||
stage = var.stage
|
||||
}
|
||||
|
||||
|
|
|
|||
0
scripts/__init__.py
Normal file
0
scripts/__init__.py
Normal file
|
|
@ -17,7 +17,7 @@ from utils.sharepoint.domna_sharepoint_client import DomnaSharepointClient
|
|||
from utils.sharepoint.domna_sites import DomnaSites
|
||||
|
||||
DRY_RUN: bool = False
|
||||
CSV_PATH: str = "scripts/sero_address_list_test.csv"
|
||||
CSV_PATH: str = "scripts/sero_address_list.csv"
|
||||
|
||||
BASE_PATH = (
|
||||
"Osmosis-ACD Projects/Sero-Clarion Housing/"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue