# AWS CloudWatch alarms

> Subscribe your SNS topic to Pagerless. ALARM opens a problem, OK closes it, and alarm-name rules decide who gets woken.

URL: https://pagerless.dev/integrations/aws-cloudwatch
Updated: 2026-10-22

## Set up

```bash
aws sns subscribe \
  --topic-arn arn:aws:sns:us-east-1:123456789012:alarms \
  --protocol https \
  --notification-endpoint "https://pagerless:$PAGERLESS_KEY@events.pagerless.dev/v1/aws/sns?wake=prod-*&log=*-dev"
```

Pagerless confirms the subscription itself. Leave raw message delivery off. Every message's AWS signature is checked; unsigned or altered ones are refused.

## Loudness rules

| Parameter | Meaning |
| --- | --- |
| `level=` | Default for every alarm: `wake`, `tell` (default) or `log`. `page` means wake. |
| `wake=`, `tell=`, `log=` | Comma-separated alarm-name globs (`*` matches anything, case-insensitive). The loudest match wins. |
| `service=`, `env=` | Override the service and environment Pagerless shows. |

## What maps to what

- `ALARM` opens a problem at the matched level.
- `OK` closes it.
- `INSUFFICIENT_DATA` is ignored.
- The same alarm always groups as the same problem, whether it arrives as an SNS alarm action or an EventBridge state change.

Using Terraform? `npx pagerless connect` writes the `aws_sns_topic_subscription` for each topic. See [Terraform on AWS](https://pagerless.dev/integrations/terraform-aws).
