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 }}
|
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
|
# 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
|
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
|
from utils.sharepoint.domna_sites import DomnaSites
|
||||||
|
|
||||||
DRY_RUN: bool = False
|
DRY_RUN: bool = False
|
||||||
CSV_PATH: str = "scripts/sero_address_list_test.csv"
|
CSV_PATH: str = "scripts/sero_address_list.csv"
|
||||||
|
|
||||||
BASE_PATH = (
|
BASE_PATH = (
|
||||||
"Osmosis-ACD Projects/Sero-Clarion Housing/"
|
"Osmosis-ACD Projects/Sero-Clarion Housing/"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue