CloudWatch Synthetics charges $0.0012 per canary run in US East, after a free tier of 100 runs a month. A canary that checks one URL every minute runs about 43,833 times a month, so it costs $52.60 in run charges alone. Add the Lambda, CloudWatch Logs and S3 charges AWS uses in its own pricing example and the real figure is about $71.93 per URL per month.
That price is fine for one scripted checkout flow. It gets expensive fast when canaries are used as plain uptime checks across a list of URLs, because every run is billed and the fastest schedule is once a minute. Every rate below comes from the AWS CloudWatch pricing page and the Synthetics documentation, read in October 2026, in US dollars for US East. The arithmetic is ours, using a 43,833-minute average month, and each step is shown.
Using canaries only to check that URLs answer?
AlertPing checks 100 websites, APIs, ports and SSL certificates every 30 seconds from 2 regions outside your AWS account, with SMS, Slack and webhook alerts, for a flat $59 a month on Team. That is about the price of one once-a-minute canary. See the plans and limits.
CloudWatch Synthetics pricing rate card
The canary run is the headline price, but a canary is a Lambda function that writes logs, screenshots and HAR files to S3 and publishes metrics. Each of those is billed by its own service. These are the rates AWS applies in its published canary example.
| Line item | Rate (US East) | Per canary run, AWS example |
|---|---|---|
| Canary run | $0.0012 per run, first 100 runs a month free | $0.0012 |
| Lambda duration | $0.000016667 per GB-second | $0.00033 (20 s at 1 GB) |
| Lambda requests | $0.20 per million | $0.0000002 |
| CloudWatch Logs | $0.50 per GB ingested, $0.03 per GB-month stored | $0.0000795 (0.00015 GB) |
| S3 artifacts | $0.005 per 1,000 PUTs, $0.023 per GB-month | $0.000028 (0.001 GB) |
| Alarm | $0.10 per standard alarm metric, $0.30 high resolution | Per alarm per month, not per run |
| Custom metrics | $0.30 per metric per month | Per metric per month |
| All-in per run | about $0.00164 |
The run charge is 73% of the per-run total. The other 27% is Lambda, logs and S3, which is why a canary bill is always higher than the Synthetics line on its own. Your Lambda share depends on how long the script runs and how much memory it gets; a simple HTTP check finishes faster than AWS's 20-second browser example.
What a canary costs per URL at each interval
A canary can run once, on a cron expression, or continuously at a rate between once a minute and once an hour. There is no sub-minute option, so once a minute is the most a canary can tell you.
| Schedule, one URL | Runs a month | Run charges | All-in with Lambda, logs, S3 |
|---|---|---|---|
| Every 1 minute | 43,833 | $52.60 | $71.93 |
| Every 5 minutes | 8,767 | $10.52 | $14.39 |
| Every 10 minutes | 4,383 | $5.26 | $7.19 |
| Every 15 minutes | 2,922 | $3.51 | $4.80 |
The free tier is 100 runs a month for the whole account. At one run a minute that covers about 1.7 hours, so for any always-on check it rounds to zero.
CloudWatch Synthetics cost for 5 to 100 URLs
This is where canaries used as uptime checks start to hurt. The bill scales linearly with URLs and with frequency, and nothing in the price list flattens it.
| URLs checked every minute | Run charges a month | All-in a month | Same URLs every 5 minutes, run charges |
|---|---|---|---|
| 5 | $263.00 | $359.66 | $52.60 |
| 10 | $526.00 | $719.32 | $105.20 |
| 20 | $1,051.99 | $1,438.63 | $210.40 |
| 50 | $2,629.98 | $3,596.59 | $526.00 |
| 100 | $5,259.96 | $7,193.17 | $1,051.99 |
Add one standard alarm per canary at $0.10 a month each. That is $10 for 100 canaries, small next to the run charges but easy to forget when you budget.
AWS's own CloudWatch Synthetics pricing example
AWS publishes a worked example on its pricing page, and it is worth reading because it shows the line items most estimates miss. Five canaries run 12 times an hour (every 5 minutes) for a 31-day month, which is 44,640 runs.
- Canary runs: 44,640 x $0.0012 = $53.57.
- Five alarms: 5 x $0.10 = $0.50.
- Lambda: $14.89, for 20-second runs at 1 GB of memory.
- CloudWatch Logs: $3.55 for ingestion and storage.
- S3: $1.25 for PUT requests and artifact storage.
- Metrics: 3 x $0.30 = $0.90.
- Total: $74.66 a month, of which $20.59 is outside CloudWatch itself.
That is $14.93 per canary per month at a 5-minute interval, or roughly $15 to know every 5 minutes whether one page loads.
Hidden line items in a CloudWatch canary bill
Extra Regions multiply the run count
Multilocation canaries run the same script in additional Regions, and each Region runs its own canary runs. A once-a-minute canary in two Regions is about $105.20 a month in run charges for a single URL. You want a second location, because a check from one place cannot tell a local network fault from a real outage, but on canaries that second opinion doubles the price.
Lambda time grows with the script
Browser canaries that load a full page and take screenshots run longer than an API check, and Lambda bills every second at the configured memory. AWS recommends a timeout of no less than 15 seconds to allow for cold starts, so even a simple check carries some Lambda cost on every run.
Logs and artifacts keep accruing
Run data is retained for 1 to 455 days and S3 artifacts stay until you set a lifecycle rule. None of it is large per run, but on 100 canaries it adds up month after month. Tagging each canary and its Lambda function is the only way to see the true total, and if several teams own canaries it is worth a tool that can track every line of your AWS and SaaS spend in one place rather than reading Cost Explorer filters by hand.
Three worked CloudWatch Synthetics bills
One scripted login flow every 15 minutes
2,922 runs a month is $3.51 in run charges and about $4.80 all-in, plus a $0.10 alarm. This is the job canaries are good at, and at this price there is no reason to look elsewhere.
10 customer-facing URLs every minute
438,330 runs a month is $526.00 in run charges and about $719.32 all-in, plus $1 of alarms. That is $8,632 a year all-in to learn within a minute that a page stopped answering.
50 endpoints every 5 minutes from two Regions
876,660 runs is $1,051.99 a month in run charges alone, about $12,624 a year before Lambda, logs and S3. Most teams that reach this size did not plan to; they added one canary per service and the bill grew with the service list.
When CloudWatch canaries are the right tool
Keep canaries for the jobs a simple uptime check cannot do. They run real Puppeteer, Playwright or Selenium scripts through multi-step flows, capture screenshots and HAR files, reach endpoints inside a private VPC, and keep everything inside your AWS bill and IAM model. A handful of canaries on login, checkout and internal APIs at 5 to 15 minutes costs very little. Our synthetic monitoring tools comparison covers the vendors that compete on scripted journeys, and the Datadog Synthetics pricing post does the same math for Datadog.
A flat-rate alternative for uptime checks
For the list of URLs, APIs and ports you simply need to know are up, a flat monitor costs less than one canary. AlertPing Starter is $49 a month for 20 monitors at 60-second checks, and Team is $59 a month for 100 monitors at 30-second checks, half the interval a canary can reach. A single once-a-minute canary ($52.60 in run charges) already costs more than Starter, and at 5-minute canaries about 6 URLs cost as much as Team.
There is also a reliability argument. A canary runs inside the AWS Region it watches, so a regional problem can take out the check and the site together. AlertPing checks from US East and EU Central outside your account and confirms every failure from the second region before it sends SMS, email, Slack or webhook alerts. The AWS uptime monitoring page shows how teams pair it with CloudWatch.
CloudWatch Synthetics pricing questions
How much does CloudWatch Synthetics cost?
CloudWatch Synthetics costs $0.0012 per canary run in US East, after 100 free runs a month. One URL checked every minute is about 43,833 runs, or $52.60 a month in run charges, and about $71.93 once the Lambda, logs and S3 charges in AWS's own example are added. Every 5 minutes it is $10.52 in run charges.
Is CloudWatch Synthetics free?
Only for the first 100 canary runs a month per account. At one run a minute that covers about 1.7 hours of monitoring, so any canary that runs continuously is a paid resource. Lambda, CloudWatch Logs and S3 charges for each run are billed separately on top of the run charge.
How often can a CloudWatch canary run?
At most once a minute. A canary runs once, on a cron expression, or continuously at a rate between once a minute and once an hour. There is no 30-second or 10-second option, so detection time on canaries is at least a minute plus however many failed runs your alarm waits for.
How are CloudWatch Synthetics canaries billed?
Per run. Each canary execution costs $0.0012 in US East, and multilocation canaries count runs in every Region. The canary also uses Lambda, CloudWatch Logs and S3, which bill under their own services, plus $0.10 a month for each standard alarm and $0.30 for each custom metric.
Is there a cheaper alternative to CloudWatch Synthetics?
For plain uptime checks, yes. A flat monitor such as AlertPing Team checks 100 URLs, APIs or ports every 30 seconds from two regions for $59 a month, less than 100 canaries cost in a day at one run a minute. Keep canaries for scripted multi-step flows and endpoints inside a private VPC.