GuidesIntegrations
AWS CloudWatch
Create Runframe incidents automatically from CloudWatch alarms via SNS webhooks.
AWS CloudWatch
Create incidents automatically from CloudWatch alarms via SNS.
How it works
CloudWatch Alarm → SNS Topic → POST /webhooks/{routingKey} → Runframe IncidentCloudWatch alarms publish to an SNS topic, which POSTs to Runframe's webhook endpoint. Runframe verifies the SNS signature, auto-confirms the subscription, and parses the alarm payload to create or resolve incidents.
Setup from Runframe
- Navigate to Integrations Hub
- Click Set up webhook next to CloudWatch
- Copy the unique webhook URL (format:
https://api.runframe.io/webhooks/{routingKey})
Setup from AWS
- Create an SNS topic in the same region as your CloudWatch alarms
- Add a subscription to the SNS topic:
- Protocol: HTTPS
- Endpoint: Your Runframe webhook URL
- Runframe automatically confirms the SNS subscription (no manual action needed)
- Configure your CloudWatch alarms to send notifications to the SNS topic
- Add a
service_iddimension to your metrics for automatic service routing
Field mapping
| CloudWatch field | Runframe field |
|---|---|
| AlarmName | Incident title |
| AlarmDescription + NewStateReason | Description |
| NewStateValue | Status (see mapping below) |
Trigger.Dimensions service_id | Routes to specific service |
| AlarmArn | AWS Console link for investigation |
| StateChangeTime | Detection time |
Alarm state mapping
| CloudWatch state | Runframe action |
|---|---|
| ALARM | Creates incident (status: new) |
| OK | Resolves incident |
| INSUFFICIENT_DATA | Sets status to investigating |
Security
CloudWatch webhooks are verified using two layers:
- SNS signature verification — Runframe cryptographically verifies every SNS message using the certificate-based RSA signature (supports SignatureVersion 1 and 2)
- Routing key — The secret URL acts as an additional authentication layer
Certificate URL validation
Runframe only accepts signing certificates from sns.*.amazonaws.com domains with the expected path pattern. Certificates are cached for 24 hours.
Testing
- Create a CloudWatch alarm with a low threshold that triggers easily
- Verify the SNS subscription is auto-confirmed (check SNS console)
- Trigger the alarm and confirm Runframe creates an incident
- Clear the alarm and verify the incident auto-resolves