AWS Budget Integration
Overview
AWS Budgets lets you set spending thresholds on your AWS account and get notified when your actual or forecasted costs cross those limits. The alerts don't come directly as webhooks — they travel through Amazon SNS first, which wraps everything in an envelope and delivers it to your endpoint as an HTTP POST.
The Message field inside that envelope is a JSON-encoded string containing the real alert details: budget name, spend amounts, notification type, and the billing period. The platform parses this automatically, so you don't have to do anything special on your end.
One thing worth knowing upfront: AWS Budgets only fires when a threshold is crossed. There's no recovery notification when spending drops back down — so alerts created by this integration will need to be closed manually in the platform after you've reviewed them.
Integration Flow
AWS Budgets
│
│ Threshold exceeded
▼
Amazon SNS Topic
│
│ HTTPS subscription delivers payload
▼
Platform Webhook Endpoint
│
│ SNS envelope parsed → Message field decoded
│ Fingerprint: md5(BudgetName::AccountId)
▼
Alert Created → Priority mapped → On-Call Team NotifiedProvider Configuration & Mapping
AWS Budgets uses the same SNS envelope pattern as Amazon CloudWatch — the priority information lives inside a JSON string in the Message field, not at the top level. The platform extracts NotificationType from the parsed message to determine priority.
Priority Mapping Config:
Priority Mapping Table:
ACTUAL
HIGH
Real spend has crossed the threshold
FORECASTED
MEDIUM
Projected spend is on track to exceed the threshold
Fingerprint (Correlation) Field:
md5(BudgetName::AccountId) — ties all alerts from the same budget in the same account together.
Alert Payload Example
Raised (Actual Spend — OVER_BUDGET)
This is what arrives at your webhook when actual spending crosses the threshold. The NotificationType inside Message is ACTUAL, which maps to HIGH priority.
— ALARM payload received at webhook.site (Type: Notification, Subject: AWS Budgets Notification)
Resulting alert: Priority → HIGH, Type → ALERT
AWS Budgets does not send a recovery payload when spending drops below the threshold. Alerts created by this integration must be closed manually in the platform.
Installation & Configuration
Step 1: Get Your Webhook URL
Head to Sources → Add Source, pick AWS Budgets as the provider, give it a name like AWS Budget Alerts – Production, and hit Save. Copy the generated Webhook URL — you'll need it in the next step.
Step 2: Create an SNS Topic
Log in to the AWS Management Console and navigate to Simple Notification Service (SNS) → Topics.
Click Create topic, select type Standard (not FIFO), and give it a name like
oncall-budget-alerts.Leave everything else as default and click Create topic.
Note the Topic ARN on the detail page — you'll need this when setting up the budget alert.


Step 3: Subscribe the Webhook to the SNS Topic
On the topic detail page, go to the Subscriptions tab and click Create subscription.
Protocol: HTTPS
Endpoint: Paste your platform webhook URL from Step 1.
Enable raw message delivery: Leave this unchecked. The full SNS envelope needs to reach the platform intact.
Click Create subscription.

The subscription will show PendingConfirmation right away. AWS fires a SubscriptionConfirmation payload to your endpoint — open the SubscribeURL value from that payload in your browser to confirm it.


Heads up: The confirmation URL expires in about 3 minutes. If you see
Invalid token, go to the Subscriptions tab, delete the pending one, and create a fresh subscription.
Step 4: Create a Budget and Link It to the SNS Topic
Navigate to AWS Billing → Budgets → Create budget.

Select Customize (advanced) — the simplified template doesn't expose SNS alert options.

Set your Budget name, Period (Monthly), and Budget amount.

In the Alerts section:
Threshold: your desired percentage (e.g.,
80%)Trigger:
ActualorForecastedSNS alert: paste the Topic ARN from Step 2


Click Next → Next → Create budget.

Step 5: Test the Integration
Real budget alerts only fire when a threshold is actually crossed, which can take days. Instead, use SNS Publish to send a test payload right now.
Go to SNS → Topics →
oncall-budget-alertsand click Publish message.Subject:
AWS Budgets NotificationMessage body:
Click Publish message and check your webhook endpoint.
— SNS Publish message form with Subject and Message body filled in
— Test payload received (Type: Notification, Message field visible)
Verification Checklist
A budget notification payload was received by the platform (status: PROBLEM).
The
Subjectfield readsAWS Budgets Notification.The
Messagefield contains a valid JSON string withBudgetName,AccountId,NotificationType, andAlertType.Priority mapped correctly:
ACTUAL→ HIGH,FORECASTED→ MEDIUM.The platform created an alert with the budget name visible in the alert title.
Troubleshooting
Subscription stuck on PendingConfirmation
Confirmation URL expired or endpoint unreachable
Delete the subscription and create a new one. Open the SubscribeURL immediately after it arrives.
No alerts received after budget creation
Threshold not yet crossed
Use SNS Publish with a test message body to validate without waiting for a real breach.
Invalid payload error
Raw message delivery is enabled
Disable Enable raw message delivery on the SNS subscription. The full SNS envelope is required.
Priority always maps to MEDIUM
NotificationType not parsed correctly
Verify the Message field is a valid JSON string and NotificationType is either ACTUAL or FORECASTED.
Alerts not closing automatically
AWS Budgets does not send recovery events
This is an AWS limitation. Close budget alerts manually in the platform after investigation.
Duplicate alerts for the same budget
Multiple SNS subscriptions for the same endpoint
Remove duplicate subscriptions from the SNS topic.
SubscriptionConfirmation payload received but status stays unconfirmed
SubscribeURL not opened in time
Copy the SubscribeURL from the confirmation payload and open it in a new browser tab.
Last updated
Was this helpful?

