mirror of
https://github.com/Sea-Haven-Industries/procurement-ingest.git
synced 2026-09-30 04:53:12 +00:00
refactor(cdk): replace deprecated logRetention with explicit LogGroup (INFRA-114)
This commit is contained in:
parent
3f42078f81
commit
62a3a7f0be
2 changed files with 59 additions and 5 deletions
|
|
@ -157,6 +157,21 @@ class PoIngestStack(Stack):
|
|||
enforce_ssl=True,
|
||||
)
|
||||
|
||||
# --- Explicit log group (INFRA-114) ---
|
||||
# Replaces the deprecated log_retention prop, which provisioned a
|
||||
# LogRetention custom resource whose role held logs:PutRetentionPolicy/
|
||||
# DeleteRetentionPolicy on Resource "*" (checkov CKV_AWS_111). The name
|
||||
# matches Lambda's default (/aws/lambda/<function-name>) so the function
|
||||
# keeps writing to the same group; RETAIN matches the repo convention for
|
||||
# stateful resources.
|
||||
email_processor_log_group = logs.LogGroup(
|
||||
self,
|
||||
"EmailProcessorLogGroup",
|
||||
log_group_name="/aws/lambda/po-email-processor",
|
||||
retention=logs.RetentionDays.TWO_MONTHS,
|
||||
removal_policy=RemovalPolicy.RETAIN,
|
||||
)
|
||||
|
||||
# --- Lambda function ---
|
||||
email_processor = lambda_.Function(
|
||||
self,
|
||||
|
|
@ -180,7 +195,7 @@ class PoIngestStack(Stack):
|
|||
),
|
||||
timeout=Duration.seconds(60),
|
||||
memory_size=256,
|
||||
log_retention=logs.RetentionDays.TWO_MONTHS,
|
||||
log_group=email_processor_log_group,
|
||||
dead_letter_queue=email_processor_dlq,
|
||||
environment={
|
||||
"PO_TABLE": "purchase-orders",
|
||||
|
|
@ -297,6 +312,14 @@ class PoIngestStack(Stack):
|
|||
)
|
||||
|
||||
# --- Web UI Lambda ---
|
||||
web_ui_log_group = logs.LogGroup(
|
||||
self,
|
||||
"WebUILogGroup",
|
||||
log_group_name="/aws/lambda/po-web-ui",
|
||||
retention=logs.RetentionDays.TWO_MONTHS,
|
||||
removal_policy=RemovalPolicy.RETAIN,
|
||||
)
|
||||
|
||||
web_ui = lambda_.Function(
|
||||
self,
|
||||
"WebUI",
|
||||
|
|
@ -307,7 +330,7 @@ class PoIngestStack(Stack):
|
|||
code=lambda_.Code.from_asset("../lambdas/po/web_ui"),
|
||||
timeout=Duration.seconds(60),
|
||||
memory_size=256,
|
||||
log_retention=logs.RetentionDays.TWO_MONTHS,
|
||||
log_group=web_ui_log_group,
|
||||
environment={
|
||||
"PO_TABLE": "purchase-orders",
|
||||
},
|
||||
|
|
@ -369,6 +392,14 @@ class PoIngestStack(Stack):
|
|||
# 518 WCU of write amplification. Re-add if a state-level query path ships.
|
||||
|
||||
# --- Site extractor Lambda (DynamoDB Streams → verified-sites) ---
|
||||
site_extractor_log_group = logs.LogGroup(
|
||||
self,
|
||||
"SiteExtractorLogGroup",
|
||||
log_group_name="/aws/lambda/po-ingest-site-extractor",
|
||||
retention=logs.RetentionDays.TWO_MONTHS,
|
||||
removal_policy=RemovalPolicy.RETAIN,
|
||||
)
|
||||
|
||||
site_extractor = lambda_.Function(
|
||||
self,
|
||||
"SiteExtractor",
|
||||
|
|
@ -379,7 +410,7 @@ class PoIngestStack(Stack):
|
|||
code=lambda_.Code.from_asset("../lambdas/po/site_extractor"),
|
||||
timeout=Duration.seconds(60),
|
||||
memory_size=256,
|
||||
log_retention=logs.RetentionDays.TWO_MONTHS,
|
||||
log_group=site_extractor_log_group,
|
||||
environment={
|
||||
"VERIFIED_SITES_TABLE": verified_sites_table.table_name,
|
||||
"PENDING_REVIEW_TABLE": "pending-site-review",
|
||||
|
|
|
|||
|
|
@ -156,6 +156,21 @@ class WorkorderIngestStack(Stack):
|
|||
enforce_ssl=True,
|
||||
)
|
||||
|
||||
# --- Explicit log group (INFRA-114) ---
|
||||
# Replaces the deprecated log_retention prop, which provisioned a
|
||||
# LogRetention custom resource whose role held logs:PutRetentionPolicy/
|
||||
# DeleteRetentionPolicy on Resource "*" (checkov CKV_AWS_111). The name
|
||||
# matches Lambda's default (/aws/lambda/<function-name>) so the function
|
||||
# keeps writing to the same group; RETAIN matches the repo convention for
|
||||
# stateful resources.
|
||||
email_processor_log_group = logs.LogGroup(
|
||||
self,
|
||||
"EmailProcessorLogGroup",
|
||||
log_group_name="/aws/lambda/workorder-email-processor",
|
||||
retention=logs.RetentionDays.TWO_MONTHS,
|
||||
removal_policy=RemovalPolicy.RETAIN,
|
||||
)
|
||||
|
||||
# --- Lambda function ---
|
||||
email_processor = lambda_.Function(
|
||||
self,
|
||||
|
|
@ -179,7 +194,7 @@ class WorkorderIngestStack(Stack):
|
|||
),
|
||||
timeout=Duration.seconds(60),
|
||||
memory_size=256,
|
||||
log_retention=logs.RetentionDays.TWO_MONTHS,
|
||||
log_group=email_processor_log_group,
|
||||
dead_letter_queue=email_processor_dlq,
|
||||
environment={
|
||||
"WORK_ORDERS_TABLE": work_orders_table.table_name,
|
||||
|
|
@ -311,6 +326,14 @@ class WorkorderIngestStack(Stack):
|
|||
)
|
||||
|
||||
# --- Web UI Lambda ---
|
||||
web_ui_log_group = logs.LogGroup(
|
||||
self,
|
||||
"WebUILogGroup",
|
||||
log_group_name="/aws/lambda/workorder-web-ui",
|
||||
retention=logs.RetentionDays.TWO_MONTHS,
|
||||
removal_policy=RemovalPolicy.RETAIN,
|
||||
)
|
||||
|
||||
web_ui = lambda_.Function(
|
||||
self,
|
||||
"WebUI",
|
||||
|
|
@ -321,7 +344,7 @@ class WorkorderIngestStack(Stack):
|
|||
code=lambda_.Code.from_asset("../lambdas/wo/web_ui"),
|
||||
timeout=Duration.seconds(15),
|
||||
memory_size=128,
|
||||
log_retention=logs.RetentionDays.TWO_MONTHS,
|
||||
log_group=web_ui_log_group,
|
||||
environment={
|
||||
"WORK_ORDERS_TABLE": work_orders_table.table_name,
|
||||
"COMMENTS_TABLE": comments_table.table_name,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue