creating a billing alarm fails with "the AWS/Billing namespace is not available in this region"
Fixes the error you get creating a CloudWatch billing alarm outside us-east-1. Covers why the AWS/Billing namespace is region-locked, how to create the alarm in the right region, and enabling billing alerts. Use when alarm creation is refused for the namespace. Not for threshold or notification problems.
TL;DR
The AWS/Billing namespace only exists in us-east-1, so the console refuses to create a billing alarm anywhere else. Create the alarm in us-east-1 instead, with billing alerts enabled on the account. The workloads it watches can live in any region.
The AWS/Billing namespace is not available in this regionUse this when
- Creating a billing alarm in the console errors on the namespace.
- An IaC template fails with the same namespace message.
- You want one estimated-charges alarm for the whole account.
Not for this skill when
- The alarm exists but never fires. That is a threshold problem.
- You need per-region spend alarms. Billing metrics are account-wide.
Steps
- Switch to us-east-1 before creating the alarm, in the console, CLI, or IaC provider block. Verify: the AWS/Billing namespace appears in the metric picker.
- Enable billing alerts in Billing Preferences on the payer account. Verify: the EstimatedCharges metric shows data points.
- Create the alarm against EstimatedCharges with statistic Maximum and a sensible period (6 hours matches the metric cadence). Verify: the alarm is created without the namespace error.
- Attach the notification action (SNS topic) and confirm the subscription. Verify: a test notification arrives.
- Remove or ignore the failed alarm definition in the original region. Verify: only one billing alarm exists, in us-east-1.
CloudFormation variant
Billing alarms belong in the us-east-1 stack, not the workload stack. Verify: the template deploys cleanly in us-east-1.
Compatibility: AWS CloudWatch. This regional lock applies to every account type.
Why it happens
AWS publishes billing data once, to us-east-1. Every other region simply has no AWS/Billing namespace, so any alarm or metric query referencing it there is refused at creation time.
Edge cases / pitfalls
- GovCloud and China partitions have their own billing regions; us-east-1 does not apply there.
- Billing alerts are a payer-account setting. Enabling them on a linked account does nothing.
- The namespace appears in the console only after billing alerts have been on long enough to emit data.
- Do not alarm on EstimatedCharges with a 1-minute period; the metric updates every few hours.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_Oz2dL6VOinp8C0DD3wgoWA