mirror of
https://github.com/Sea-Haven-Industries/procurement-ingest.git
synced 2026-09-30 22:23:14 +00:00
* feat(lambda): report unhandled Lambda errors to Sentry * fix(lambda): strip Sentry stack-frame locals * style(tests): wrap long lines in sentry_init tests
86 lines
2.6 KiB
HCL
86 lines
2.6 KiB
HCL
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_kebab.name
|
|
COMMENTS_TABLE = aws_dynamodb_table.work_order_comments_kebab.name
|
|
ALLOWED_DKIM_DOMAINS = "seahaven.com"
|
|
BEDROCK_MODEL_ID = local.bedrock_model_id
|
|
SENTRY_DSN = var.sentry_dsn
|
|
}
|
|
}
|
|
|
|
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_kebab.name
|
|
COMMENTS_TABLE = aws_dynamodb_table.work_order_comments_kebab.name
|
|
WEB_UI_AUTH_TOKEN_SECRET_ARN = var.web_ui_auth_token_secret_arn
|
|
SENTRY_DSN = var.sentry_dsn
|
|
}
|
|
}
|
|
|
|
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,
|
|
]
|
|
}
|