Context
PR #208 added CloudWatch alarms on FanOutDlq and ApprovalMetricsPublisherDlq (threshold: ApproximateNumberOfMessagesVisible >= 1, 5-min window). The alarms are exposed as public readonly dlqAlarm on each construct but are not yet wired to any notification channel — they fire silently in the CloudWatch console.
Proposal
Create an SNS topic (or accept one as a construct prop) and add alarm actions so operators get notified (email, PagerDuty, Slack webhook, etc.) when poison-pill records land in a DLQ.
Acceptance criteria
Design considerations
- Should the topic be shared across all DLQ alarms or per-construct? A single shared
OperationalAlarmsTopic is simpler and matches the common pattern.
- Subscription management (email endpoints, chatbot integrations) can be handled out-of-band or via a
notificationEndpoints stack parameter.
References
Context
PR #208 added CloudWatch alarms on
FanOutDlqandApprovalMetricsPublisherDlq(threshold:ApproximateNumberOfMessagesVisible >= 1, 5-min window). The alarms are exposed aspublic readonly dlqAlarmon each construct but are not yet wired to any notification channel — they fire silently in the CloudWatch console.Proposal
Create an SNS topic (or accept one as a construct prop) and add alarm actions so operators get notified (email, PagerDuty, Slack webhook, etc.) when poison-pill records land in a DLQ.
Acceptance criteria
FanOutConsumer.dlqAlarmandApprovalMetricsPublisherConsumer.dlqAlarmhave an alarm action targeting the topiccdk synthproduces the expectedAWS::CloudWatch::Alarm→AWS::SNS::TopicrelationshipDesign considerations
OperationalAlarmsTopicis simpler and matches the common pattern.notificationEndpointsstack parameter.References