procurement-ingest/terraform/wo_lambda.tf

85 lines
2.5 KiB
Terraform
Raw Normal View History

resource "aws_cloudwatch_log_group" "wo_email_processor" {
name = "/aws/lambda/workorder-email-processor"
retention_in_days = 60
lifecycle {
prevent_destroy = true
}
}
resource "aws_cloudwatch_log_group" "wo_web_ui" {
name = "/aws/lambda/workorder-web-ui"
retention_in_days = 60
lifecycle {
prevent_destroy = true
}
}
resource "aws_lambda_function" "wo_email_processor" {
function_name = "workorder-email-processor"
role = aws_iam_role.wo_email_processor.arn
handler = "handler.handler"
runtime = "python3.12"
architectures = ["arm64"]
memory_size = 256
timeout = 60
s3_bucket = aws_s3_bucket.artifacts.id
s3_key = aws_s3_object.lambda["wo_email_processor"].key
source_code_hash = data.archive_file.lambda["wo_email_processor"].output_base64sha256
dead_letter_config {
target_arn = aws_sqs_queue.wo_email_processor_dlq.arn
}
environment {
variables = {
WORK_ORDERS_TABLE = aws_dynamodb_table.work_orders.name
COMMENTS_TABLE = aws_dynamodb_table.work_order_comments.name
ALLOWED_DKIM_DOMAINS = "seahaven.com"
BEDROCK_MODEL_ID = local.bedrock_model_id
}
}
depends_on = [
aws_s3_object.lambda,
aws_cloudwatch_log_group.wo_email_processor,
aws_iam_role_policy_attachment.wo_email_processor_basic,
aws_iam_role_policy.wo_email_processor_s3,
aws_iam_role_policy.wo_email_processor_ddb,
aws_iam_role_policy.wo_email_processor_bedrock,
aws_iam_role_policy.wo_email_processor_dlq,
]
}
resource "aws_lambda_function" "wo_web_ui" {
function_name = "workorder-web-ui"
role = aws_iam_role.wo_web_ui.arn
handler = "handler.handler"
runtime = "python3.12"
architectures = ["arm64"]
memory_size = 128
timeout = 15
s3_bucket = aws_s3_bucket.artifacts.id
s3_key = aws_s3_object.lambda["wo_web_ui"].key
source_code_hash = data.archive_file.lambda["wo_web_ui"].output_base64sha256
environment {
variables = {
WORK_ORDERS_TABLE = aws_dynamodb_table.work_orders.name
COMMENTS_TABLE = aws_dynamodb_table.work_order_comments.name
WEB_UI_AUTH_TOKEN_SECRET_ARN = var.web_ui_auth_token_secret_arn
}
}
depends_on = [
aws_s3_object.lambda,
aws_cloudwatch_log_group.wo_web_ui,
aws_iam_role_policy_attachment.wo_web_ui_basic,
aws_iam_role_policy.wo_web_ui_ddb,
aws_iam_role_policy.wo_web_ui_secrets,
]
}