CloudWatch Synthetics Pricing: AWS Canary Cost per Run
August 2026 · Uptimehub
Checked from regions with auto-retry. No single-location false alarms.
All systems operational. Steady pulse across every region.
api.example.com returned no response from all 6 regions. Auto-retry confirmed the outage, then we alerted your team.
api.example.com is back up. The incident is logged to your status page history automatically.
90-day uptime · branded · your domain
Live demo · drive it, no signup needed
AWS CloudWatch Synthetics costs $0.0012 per canary run in the US regions, with the first 100 runs each month free. Because you pay per run rather than per monitor, the interval sets the bill: one canary checked every 5 minutes is 8,640 runs and about $10.37 a month, while the same canary at a 1 minute interval is 43,200 runs and $51.84. The run charge is also not the whole invoice. Every canary run invokes a Lambda function, writes to S3, ships logs to CloudWatch Logs and publishes custom metrics, and all four are billed separately.
That rate comes from the AWS Price List, publication 6 August 2026, rather than from the pricing web page. The distinction matters more than it sounds. The CloudWatch pricing page renders its Synthetics figures inside a tabbed section that does not always survive scraping, and the number we pulled from it on a first pass was almost three times the real one. The machine-readable price list carries exactly one paid canary SKU per region and cannot be misread, so it is the source worth using when you are building a budget.
How CloudWatch Synthetics is billed
A canary is a script AWS runs on a schedule from a Lambda function in your own account. It can call an endpoint, drive a headless Chrome session, walk a multi-step flow, or check a page for broken links. AWS charges for the fact that it ran, not for what it did.
This is the part that catches people out, and it is genuinely unusual in this market. Every other major synthetic monitoring vendor charges far more for a browser check than an API check, because a browser check burns real compute. Datadog charges $0.0005 per API run and $0.012 per browser run, a 24 fold difference. Checkly is 25 fold. AWS has a single canary run rate that applies whether your script issues one GET request or clicks through a five step checkout in Chrome.
That makes CloudWatch Synthetics expensive for simple availability checks and unusually cheap for browser work, which is the reverse of how almost everyone else prices. If your monitoring is mostly scripted journeys, AWS is worth pricing out properly. If it is mostly "is this URL returning 200", you are paying browser-canary rates for an HTTP request.
What a canary actually costs per month
A 30 day month contains 43,200 minutes. That single number converts a rate into a bill, and it is the one to compute before reading any vendor's pricing page. Runs per canary, per location:
| Check interval | Runs per month | Cost at $0.0012 |
|---|---|---|
| Every 1 minute | 43,200 | $51.84 |
| Every 5 minutes | 8,640 | $10.37 |
| Every 15 minutes | 2,880 | $3.46 |
| Every 60 minutes | 720 | $0.86 |
The spread from top to bottom is 60 fold, and nothing about the canary changed except a schedule expression. Multiply by your canary count and again by your location count. Ten canaries from three regions at a 5 minute interval is 259,200 runs, which is $310.92 a month before any of the downstream AWS charges land.
The reliability side of that trade deserves a mention, because the cheap end of the table is not free. A 5 minute interval means a worst case detection delay of 5 minutes, which spends roughly 12% of a 99.9% monthly error budget before anyone is paged. At 15 minutes it is about 35%. Under per run billing, the setting that controls your cost is the same setting that controls how fast you find out you are down, so the two pull directly against each other.
The AWS region premium nobody mentions
Every other vendor on the market charges one rate wherever the check runs from. AWS prices canary runs per region, so adding a location is not a flat multiplier.
| Region | Price per canary run | Versus US East |
|---|---|---|
| US East (N. Virginia) | $0.0012 | Baseline |
| US West (Oregon) | $0.0012 | Same |
| EU (Ireland) | $0.0014 | 17% more |
| Asia Pacific (Singapore) | $0.0017 | 42% more |
If you run a canary from four regions to prove your service works globally, the Singapore leg costs 42% more than the Virginia leg for identical work. It is a small number per run and a real number per year, and it is invisible unless you go looking for it.
The four charges that are not the canary run charge
The run rate is the headline. The invoice is wider than that, because a canary is not a managed black box, it is code running in your account using your resources.
- AWS Lambda. Every canary run is a Lambda invocation, billed for both requests and GB-seconds of duration. A browser canary holding Chrome open for 20 seconds costs far more Lambda time than an HTTP canary finishing in 300 milliseconds, which is where the browser-versus-API cost difference reappears after being absent from the run rate.
- Amazon S3. Canaries write their artifacts to a bucket you own: HAR files, and for browser canaries, screenshots. Screenshots on a frequent schedule accumulate quickly, and they keep accumulating until someone sets a lifecycle rule.
- CloudWatch Logs. Each run writes execution logs, billed on ingestion and then on storage.
- CloudWatch custom metrics. Canaries publish metrics such as SuccessPercent and Duration into the CloudWatchSynthetics namespace, and custom metrics are billed per metric per month. Canaries using step functions also carry a StepName dimension, which multiplies the metric count by the number of steps.
None of these is large on its own. Together they are the usual reason an AWS synthetics bill arrives higher than the run arithmetic predicted, and because they are spread across four service lines, no single line on the invoice ever looks like a monitoring cost. If you are running consumption-priced infrastructure, this is exactly the category of spend that is better caught by a real-time budget alert than by reading the invoice a month later.
Is the free tier useful?
AWS includes 100 canary runs per month at no charge. That allowance is easier to judge stated in time than in runs. At a 1 minute interval it covers 100 minutes. At a 5 minute interval it lasts a little over 8 hours. A single canary running continuously for a full month at 5 minute checks uses 8,640 runs, so the free tier covers roughly 1% of one monitor.
It is enough to build a canary and confirm it works. It is not a monitoring plan, and it is worth saying plainly because several other vendors in this market do offer genuinely usable free tiers measured in monitors rather than runs.
How CloudWatch Synthetics compares on price
Priced per run against the rest of the market, AWS sits in the expensive half for API checks and the cheap end for browser checks. Per API check run: Checkly $0.00025, Datadog and Grafana Cloud $0.0005, Dynatrace $0.001, AWS $0.0012, New Relic $0.005. Per browser run, AWS stays at $0.0012 while Grafana is $0.005, Checkly $0.00625 and Datadog $0.012.
The wider comparison, including how each vendor defines a billable unit, is set out in our synthetic monitoring pricing comparison, and the single-vendor arithmetic for the most common alternative is in Datadog Synthetics pricing. Comparing rates alone is not enough, because the units differ: Grafana bills per probe per minute of run time and rounds up, Dynatrace bills browser journeys per action rather than per run, and both of those change the answer more than the headline rate does.
When CloudWatch Synthetics is the right choice
It is a strong fit when your workloads already live in AWS and you want checks that run inside your VPC, hit private endpoints, and appear on the same X-Ray trace map as the services they call. Canaries can reach things a third-party checker cannot, and that is a capability argument no pricing table overturns.
It fits badly when what you actually need is continuous external availability checking on a fixed set of public endpoints. There the run count is large, predictable and permanent, the interval you want is the fastest one you can afford, and every one of those properties makes per run billing costly. You are also monitoring AWS from inside AWS, which is a real weakness during a regional event: a canary in the region that is failing cannot reliably tell you the region is failing.
For that job, a flat per-monitor service is both cheaper and easier to forecast. Our own plans cover HTTP, API, keyword, SSL, DNS, TCP port and cron heartbeat checks from six regions at a fixed monthly price, with the interval treated as a plan feature rather than a meter, and the wider flat-rate market is compared in the uptime monitoring pricing comparison. If your requirement is scripted multi-step browser journeys, we do not run those, and the honest recommendation is a purpose-built browser checker.
How to cut a CloudWatch Synthetics bill
Four changes do most of the work, in rough order of effect. Loosen the interval on canaries that are not customer-facing, since this is the only lever that is perfectly linear. Cut location count to the regions you can actually act on, remembering that Asia Pacific costs more per run than Virginia. Replace browser canaries with HTTP canaries wherever a script is not genuinely required, which saves Lambda duration even though the run rate is identical. And set an S3 lifecycle policy plus a CloudWatch Logs retention period, because artifact storage is the charge that grows quietly forever if nobody bounds it.
Common questions
How much does AWS CloudWatch Synthetics cost?
$0.0012 per canary run in US East and US West, $0.0014 in Ireland and $0.0017 in Singapore, with the first 100 runs each month free. One canary at a 5 minute interval from one region is 8,640 runs, or about $10.37 a month. Lambda, S3, CloudWatch Logs and custom metric charges are billed on top and are not included in that figure.
Does CloudWatch Synthetics charge more for browser canaries?
Not on the run rate. The AWS price list carries a single canary run SKU per region that applies to browser and API canaries alike, which makes AWS unusual: Datadog charges 24 times more for a browser run and Checkly 25 times more. Browser canaries do still cost more in practice, because they hold a headless Chrome session open and Lambda bills for that duration.
How many canary runs are in a month?
A 30 day month holds 43,200 minutes, so one canary from one location produces 43,200 runs at a 1 minute interval, 8,640 at 5 minutes, 2,880 at 15 minutes and 720 hourly. Multiply by your canary count and again by your location count. Ten canaries from three regions at 5 minutes is 259,200 runs a month.
Is CloudWatch Synthetics cheaper than Datadog?
For API checks, no. AWS is $0.0012 per run against Datadog's $0.0005 on annual billing, so AWS costs about 2.4 times more for the same HTTP check. For browser checks, AWS is dramatically cheaper: $0.0012 against $0.012, a tenth of the price per run. Which one wins depends entirely on whether your checks drive a browser.
Why is my CloudWatch Synthetics bill higher than expected?
Usually because the run charge was the only thing budgeted. Canaries also bill Lambda invocations and duration, S3 storage for HAR files and screenshots, CloudWatch Logs ingestion and retention, and custom metrics per metric per month. Screenshot storage and log retention are the two that grow without anyone deciding to spend more, since neither is bounded unless you set a lifecycle rule.
Can I run CloudWatch canaries against private endpoints?
Yes. Canaries run as Lambda functions in your account and can be attached to a VPC, which lets them reach internal services that an external monitoring provider cannot see. That is one of the strongest reasons to choose CloudWatch Synthetics, and it is a capability rather than a price argument. The trade is that a canary inside the failing region is a poor judge of whether that region is failing.
Know your site is down before your customers do
Start monitoring your sites, APIs and services from six regions, with alerts by Slack, email, SMS and webhook and a branded status page. Transparent, flat pricing per monitor.