AWS CloudWatch

Fluidify Regen receives CloudWatch alarms via Amazon SNS webhooks. When an alarm transitions to ALARM state, Regen creates an alert and optionally an incident.

Webhook URL

POST https://your-domain.com/api/v1/webhooks/cloudwatch

Setup

Step 1: Create an SNS topic

aws sns create-topic --name fluidify-regen-alerts

Note the topic ARN: arn:aws:sns:us-east-1:123456789:fluidify-regen-alerts

Step 2: Subscribe Regen as an HTTPS endpoint

aws sns subscribe \
  --topic-arn arn:aws:sns:us-east-1:123456789:fluidify-regen-alerts \
  --protocol https \
  --notification-endpoint https://your-domain.com/api/v1/webhooks/cloudwatch

Regen automatically confirms the subscription when it receives the confirmation request from SNS.

Note: SNS requires HTTPS. Use a domain with a valid TLS certificate. For local testing, use an HTTPS tunnel (e.g. ngrok).

Step 3: Add the SNS topic to a CloudWatch alarm

aws cloudwatch put-metric-alarm \
  --alarm-name "HighErrorRate" \
  --alarm-actions arn:aws:sns:us-east-1:123456789:fluidify-regen-alerts \
  --ok-actions arn:aws:sns:us-east-1:123456789:fluidify-regen-alerts \
  ...

Always add both --alarm-actions (firing) and --ok-actions (resolving) so Regen can close the alert automatically.

How alarm fields map to Regen

CloudWatch field Regen field Notes
AlarmName Title
AlarmDescription Description
NewStateValue Status ALARM → firing, OK → resolved
AlarmArn ExternalID Used for deduplication
AWSAccountId + region Labels Stored for context
Trigger.MetricName Labels Stored for context

Severity mapping

CloudWatch alarms don't have a native severity field. Regen maps based on alarm name keywords:

Alarm name contains Regen severity
critical, p0, p1 Critical
warning, warn, p2 Warning
(anything else) Warning (default)

To set severity explicitly, include it in the alarm name:

  • payments-api-error-rate-critical
  • disk-usage-warning