AWS Cost Monitoring Dashboard
Build a cost dashboard with budget alerts and automated PDF reports for stakeholders.
Introduction
30 Second Summary
Every cloud project generates costs, but those costs are often invisible until the monthly bill arrives. The people who care most about spending, like managers and finance teams, rarely have access to the tools that track it.
In this project, you will build a complete cost monitoring and reporting system using native AWS tools. You will analyze your spending patterns, set up proactive budget alerts, and schedule automated PDF reports that land directly in stakeholders' inboxes.
What You'll Build
Picture opening a single page in the AWS Console that shows exactly where every dollar is going, then watching a weekly email deliver a PDF snapshot of that page straight to your manager's inbox.
By the end of this project, you'll have:
- A Cost Explorer analysis showing which AWS services cost the most, with month-over-month trend comparisons you can explore and export.
- A monthly cost budget with email alerts that warn you automatically at 80% and 100% of your spending limit.
- A custom dashboard combining cost charts and budget tracking in a single view you can share as a PDF.
- Secret Mission: Set up cost allocation tags on your existing resources and build a tag-based cost breakdown for team-level reporting.
Are there any prerequisites?
This project works best with an AWS account that has some usage history from prior projects, since Cost Explorer analyzes that existing spending data. All work happens in the AWS Console with no coding required.
Before We Start
Before you start configuring dashboards and alerts, take a moment to commit to what you're building and why it matters.
Enable Cost Explorer and Analyze Your Spending
Your AWS account has been quietly accumulating cost data from prior projects. But until now, you have never looked at that data in a structured way.
Before you can build a cost report for stakeholders, you need to understand your own spending patterns first. In this step, you will enable Cost Explorer, explore which AWS services are costing you the most, and compare your spending month over month.
In this step, get ready to:
- Enable Cost Explorer and review the spending dashboard.
- Explore your costs grouped by AWS service over the last 3 months.
- Run a month-over-month cost comparison and download the data as a CSV.
Open the Billing and Cost Management console
Cost Explorer lives inside the Billing and Cost Management console. Let's navigate there and make sure Cost Explorer is enabled.
- In the AWS Management Console, click the search bar at the top.
- Type Billing and select Billing and Cost Management from the results.
- In the left navigation pane, choose Cost Explorer.
✔️ I see the Cost Explorer dashboard
You are all set. Cost Explorer is already enabled on your account from prior usage.
You should see your estimated month-to-date costs, forecasted costs, a daily cost graph, top cost trends, and suggested analysis prompts.
ⓧ I see a Welcome page
This means Cost Explorer has not been enabled on your account yet.
- Choose Launch Cost Explorer on the Welcome page.
AWS will begin preparing your cost data. Current month data is available in about 24 hours. Historical data (up to 13 months) may take a few days longer.
What does the Cost Explorer dashboard show?
The dashboard gives you a high-level snapshot of your account's spending. It shows your estimated month-to-date costs, forecasted costs for the rest of the month, and a graph of your daily costs.
Below the graph, you will see your top five cost trends and suggested prompts for digging deeper. This is your starting point for understanding where your money is going.
Seeing empty charts or $0 everywhere?
If you just enabled Cost Explorer for the first time, your data may not be ready yet. Current month data takes about 24 hours to appear. Historical data takes a few days longer.
If your account is brand new with no prior projects, there may not be any cost data to display. This project works best with an account that has existing usage history.
Why is my Cost Explorer dashboard empty?
Explore your costs grouped by service
The dashboard gives you a summary, but you need a detailed breakdown. Grouping your costs by service reveals exactly which AWS services are responsible for your spending.
- Choose Explore costs in the upper-right area of the dashboard to open the full Cost Explorer report.
- In the report, find the Group by dropdown and select Service.
- Set the time range to the last 3 months using the date controls at the top of the report.
You should now see a stacked bar chart showing which AWS services are responsible for your spending. Each color represents a different service like S3, EC2, Lambda, or API Gateway.
- Scroll down below the chart to examine the data table. This table shows the exact dollar amounts per service for each month.
Why group by service?
Grouping by service answers the most basic cost question: where is the money going? A single bar chart of total spend hides the fact that one service might account for 80% of your bill.
The data table below the chart is especially useful. It gives you precise numbers you can reference in conversations with stakeholders, not just visual approximations from the chart.
Run a month-over-month cost comparison
Seeing your costs by service is useful, but it does not tell you how things are changing. A month-over-month comparison highlights what increased, what decreased, and why.
- In the Report parameters panel, choose Compare.
- For the date range, select Relative (Month over month).
- Under Group by, select Service as the dimension.
Cost Explorer now highlights the top 3 cost comparison drivers. These show the most significant factors contributing to cost changes between the two months being compared.
What are cost comparison drivers?
Cost comparison drivers are the services or factors that changed the most between the two months being compared. Cost Explorer automatically identifies the top 3 and explains what caused each change.
For example, you might see that EC2 costs went up because you ran more instances, or that S3 costs dropped because a prior project's data was cleaned up. These drivers are what you would report to a stakeholder asking "why did our bill change?"
Now let's download this data so you have a local copy for reference.
- Choose Download CSV to export the cost data as a CSV file.
- Open the downloaded file to confirm it contains your cost data organized by service and time period.
Keep this CSV for later
This CSV gives you the raw numbers behind the chart. It is useful for building spreadsheets, sharing exact figures with stakeholders, or comparing against future months.
Don't see a Download CSV option?
Make sure you are on the full Cost Explorer report page (the one you reached by choosing Explore costs), not the main Cost Explorer dashboard. The download option is only available on the report page.
Help me find the Download CSV button in Cost Explorer.
Before you move on, take a moment to predict: what two different views of your AWS spending have you created in this step?
You should have a service-grouped breakdown showing which services cost the most over the last 3 months. You should also have a month-over-month comparison with the top 3 cost drivers highlighted. Both views, plus the downloaded CSV, give you the raw material you need to build a cost dashboard for stakeholders.
You now have a clear picture of your AWS spending patterns. Next up, you will turn this knowledge into a proactive warning system by creating a budget with email alerts.
Create a Monthly Budget with Email Alerts
In Step 1, you explored your AWS spending history and identified which services cost the most. You now have a clear picture of where your money has been going.
The catch is that Cost Explorer only tells you what already happened. If a forgotten EC2 instance runs for a week, you will not find out until the bill arrives. In this step, you will set up a monthly budget with email alerts that warn you before costs get out of hand.
In this step, get ready to:
- Create a monthly cost budget using a simplified template.
- Add a forecasted alert threshold to warn you before costs exceed your limit.
- Verify the budget is actively tracking your spend.
Create a monthly cost budget
AWS Budgets lets you set a spending limit and receive email alerts when your costs approach or exceed that limit. You will use a simplified template to create a budget in a single page.
- In the left navigation pane of the Billing and Cost Management console, choose Budgets.
- Choose Create budget at the top of the page.
- Under Budget setup, choose Use a template (simplified).
- Under Templates, select Monthly cost budget.
- Enter Monthly-AWS-Spending in the Budget name field.
- Set the Budgeted amount to a value based on your Step 1 analysis. If your monthly spend is under $5, try 10. If it is higher, choose a round number slightly above your current spend (for example, 20).
- Enter your email address in the Email recipients field.
- Choose Create budget.
Your new budget appears in the budget list. The template automatically created a 100% actual-spend alert, so you will already be notified if your costs reach your full budgeted amount.
What is AWS Budgets?
AWS Budgets is a free monitoring tool that tracks your AWS spending against a limit you define. It can alert you based on actual spend (what you have already spent) or forecasted spend (what AWS predicts you will spend by the end of the month).
Monitoring budgets is free. The first two action-enabled budgets per month are also free.
Why use a template?
The simplified template is a single-page workflow that creates a budget with sensible defaults. The alternative is a 5-step advanced workflow with more configuration options. The template gets you a working budget faster, and you can always edit it afterward to add custom settings.
Add a forecasted alert threshold
The template gave you an alert for when your actual spend hits 100% of your budget. That is useful, but by the time it fires, you have already spent the full amount. A forecasted alert warns you earlier, based on what AWS predicts you will spend by the end of the month.
- On the Budgets page, select your Monthly-AWS-Spending budget from the list.
- Choose Edit.
- Navigate to the alerts configuration page by choosing Next until you reach the Configure alerts step.
- Choose Add an alert threshold.
- Under Set alert threshold, enter 80 in the Threshold field.
- Choose % of budgeted amount next to the threshold value.
- Change the trigger from Actual to Forecasted.
- Confirm your email address is listed under Email recipients.
- Choose Next to move through any remaining pages.
- Choose Save.
What is a forecasted alert?
An actual alert fires after you have already spent the money. A forecasted alert uses AWS's spending predictions to warn you before you reach the threshold.
For example, if your budget is $10 and you set a forecasted alert at 80%, AWS will email you when it predicts your month-end spend will exceed $8. This gives you time to investigate and shut down unnecessary resources before the bill arrives.
Verify the budget is tracking
Before you check, think about what you expect to see on the Budgets overview page. How many alert thresholds should be listed for your budget?
- Return to the Budgets overview page by choosing Budgets in the left navigation pane.
- Choose your Monthly-AWS-Spending budget name to open the budget details page.
You should see your current actual spend compared to your budgeted amount as a progress bar, labelled Current vs. budgeted. Below that, Forecasted vs. budgeted shows what AWS predicts your spend will be by the end of the month. Under the Alerts tab, both thresholds are listed: actual at 100% and forecasted at 80%.
Don't see forecasted data?
Forecasted spend requires enough historical data for AWS to make a prediction. If your account is very new, the forecasted value may show as unavailable. This is normal. The forecasted alert is still configured and will begin working once AWS has enough data to project a trend.
If you do not see the 80% forecasted threshold under Alerts, return to the budget edit flow and confirm you chose Forecasted (not Actual) when you added the second threshold.
Help me troubleshoot my AWS Budget alerts.
Your budget is now actively monitoring your AWS spending with two layers of protection. Next up, you will combine your Cost Explorer data and this budget into a single custom dashboard that anyone can understand at a glance.
Build a Custom Cost Management Dashboard
Your budget is live and watching your spending. If costs approach or exceed your threshold, you will get an email alert before anything spirals.
Right now, your cost breakdown lives in Cost Explorer and your budget tracking lives on a separate AWS Budgets page. A non-technical stakeholder is not going to navigate between multiple AWS Console pages to piece this together.
In this step, get ready to:
- Create a custom Cost Management Dashboard in the Billing and Cost Management console.
- Add a cost-by-service widget showing a stacked bar chart of your spending.
- Add a budget tracking widget that pulls data from your existing budget.
Create a new dashboard
- In the left navigation pane of the Billing and Cost Management console, choose Dashboards.
- Choose Create dashboard.
- Replace the default dashboard name with Org-Cost-Overview.
An empty dashboard appears, ready for widgets. The dashboard autosaves, so you do not need to manually save your changes.
What is a Cost Management Dashboard?
A Cost Management Dashboard is a collection of widgets that visualize your cost and usage data. Each dashboard supports up to 20 widgets.
Widgets can pull from Cost Explorer data, AWS Budgets, Savings Plans, and more. By combining them on one page, you create a single view that tells the full spending story.
Don't see the Dashboards option?
Make sure you are in the Billing and Cost Management console, not the main AWS Console homepage. Dashboards is a section in the left navigation pane of the Billing and Cost Management console.
Help me find the Dashboards section in the AWS Billing and Cost Management console.
Add a cost-by-service widget
Your first widget will show which AWS services are costing you the most. This is the same service-grouped breakdown you explored in Cost Explorer, now living permanently on your dashboard.
- Choose Add widget.
- Select Custom widget.
- Drag it onto the dashboard.
A bar chart widget appears on your dashboard with default settings. Now you will configure it to show exactly what you need.
- In the Edit widget parameters panel, set the time period to the last 3 months.
- Set the granularity to monthly.
- Under Group by, select Service.
The chart updates to show your costs broken down by AWS service, with each service displayed as a different color.
- Choose the vertical three dots in the upper right corner of the widget.
- Choose Change visualization type.
- Select Stacked bar chart.
The chart changes to a stacked bar format. Each month's bar layers all your service costs on top of each other, making it easy to spot which services dominate your spending.
Why a stacked bar chart?
A stacked bar chart is ideal for stakeholder dashboards because it shows two things at once: the total spend per month (the full height of each bar) and the per-service breakdown (the colored segments within each bar).
A regular bar chart would place each service side by side, making totals harder to compare at a glance.
Widget showing no data?
Cost Explorer data can take up to 24 hours to fully populate after it is enabled. If you just enabled Cost Explorer in Step 1, check back later.
Also confirm the time period covers months where you had active AWS usage. If your account is brand new, there may not be enough history to display.
My cost widget is empty or showing no data on my dashboard.
Add a budget tracking widget
Your second widget will pull data directly from the Monthly-AWS-Spending budget you created in the previous step. This gives your dashboard a real-time view of how actual spending compares to the limit you set.
- Choose Add widget.
- Select Predefined widget.
- Find the budget report widget and drag it onto the dashboard.
A table appears showing your budget's actual spend against the budgeted amount. Both widgets are now displayed side-by-side on your dashboard.
Why does this widget look different?
The budget report widget always displays as a table. The chart visualization options (line, bar, stacked bar) do not apply to it.
The dashboard-level time period filter also does not affect this widget. Budget data is retrieved directly from the AWS Budgets service, so it always shows the budget's own time range.
Budget widget showing empty data?
Confirm that your Monthly-AWS-Spending budget was created successfully in Step 2. Navigate to Budgets in the left navigation pane and check that it appears in the budget list with a status.
My budget report widget on the dashboard is not showing any budget data.
Before you read on, look at your finished dashboard. What two distinct pieces of spending information can a stakeholder get from this single page?
Your Org-Cost-Overview dashboard tells the full story. The stacked bar chart shows which services are costing the most and how spending trends over time. The budget table shows whether total spending is on track against the limit you set.
Your cost monitoring dashboard is ready. Next, you will export it as a PDF and set up automated email reports so stakeholders receive your cost data without ever logging into AWS.
Export and Schedule Automated PDF Reports
Your custom dashboard now brings cost breakdowns and budget tracking into a single view. No more jumping between separate console pages to piece together your spending picture.
There is one gap left. The people who need this cost information most do not have AWS Console access. In this step, you will export the dashboard as a shareable PDF and schedule recurring email deliveries to get it into stakeholders' inboxes automatically.
In this step, get ready to:
- Export your dashboard as a one-time PDF to verify the layout.
- Configure a weekly scheduled email report that delivers your dashboard to any recipient.
- Verify that the scheduled report is active and ready for its first delivery.
Export the dashboard as a one-time PDF
Before automating anything, you want to see exactly what stakeholders will receive. A one-time PDF export lets you preview the layout and confirm both widgets render cleanly.
- With your Org-Cost-Overview dashboard open, choose Actions near the top of the page.
- Choose Export PDF.
- Wait for the PDF preview to load. Confirm that both widgets (the stacked bar chart and the budget table) appear in the preview.
- Choose Export PDF to download the file to your computer.
- Open the downloaded PDF. Both widgets should be clearly rendered with your cost data visible.
What does the PDF contain?
The PDF is a static snapshot of your dashboard at the moment you export it. It captures the exact visualizations and data ranges you configured.
This is the same format your stakeholders will receive from the scheduled report you set up next.
Preview before exporting
Large data ranges or extended time periods may cause layout changes or data truncation in the PDF. Always check the preview before downloading.
PDF looks empty or widgets are missing?
Make sure both widgets are visible on the dashboard before exporting. If a widget is collapsed or loading, the PDF may not capture it.
Try refreshing the dashboard page, waiting for both widgets to fully render, then exporting again.
Still having trouble? Help me troubleshoot my Cost Management Dashboard PDF export.
Set up a scheduled email report
Now that you have confirmed the PDF looks good, you can automate the delivery. AWS lets you schedule recurring PDF deliveries straight to any email address. Recipients do not need AWS credentials.
- With your Org-Cost-Overview dashboard still selected, choose Actions.
- Choose Manage email reports.
- Choose Create report.
The report creation wizard opens with several pages. Start with the report details.
- Enter Weekly-Cost-Report in the Report name field.
- For Widget selection, choose Full dashboard to include all widgets in the report.
- For Reporting period, choose Widget-specific ranges to preserve each widget's individual time settings.
- Choose Next.
The next page asks for your recipients.
- Enter your own email address in the recipient field. You will use this to test the delivery.
- Choose Next.
First-time recipients must verify their email
If this is the first time this email address is being used as a report recipient, AWS sends a verification email. Check your inbox and confirm the address before the first scheduled delivery can go through.
The next page configures the delivery schedule.
- Set Frequency to Weekly.
- Choose a Delivery time. This is in UTC, so pick a time that makes sense for your recipients' timezone.
- Set the Start date to today.
- Choose Next.
The final configuration page sets up the service access permissions.
- Under Service access, choose Create and use a new execution role (recommended).
- Choose Next.
- Review your settings on the summary page, then choose Create.
What does the execution role do?
The execution role is an IAM role that AWS creates automatically. It gives the scheduling service the permissions it needs to generate PDFs from your dashboard and deliver them via email.
Verify the scheduled report
Your scheduled report is configured. Let's confirm it is active and ready for delivery.
- Check your email inbox for a verification request from AWS. If you see one, follow the link to verify your email address.
What do you expect to see when you return to the Manage email reports page for your dashboard?
- Return to your Org-Cost-Overview dashboard. Choose Actions, then Manage email reports.
- Confirm that Weekly-Cost-Report appears in the list with its weekly schedule, recipient email, and next delivery date.
What do stakeholders receive?
When the scheduled report delivers, recipients receive an email with a secure download link that expires after 15 days. A unique password is included in the email to open the PDF.
No AWS credentials are needed to download or view the report. This is how you get cost visibility to people who have never logged into the AWS Console.
Don't see your scheduled report in the list?
Make sure you completed the final review page and chose Create. If you closed the wizard before finishing, the report was not saved.
Confirm you are viewing Manage email reports for the Org-Cost-Overview dashboard specifically, not a different dashboard.
Still stuck? Help me troubleshoot my scheduled email report setup.
You have downloaded a PDF export of your dashboard and configured a weekly scheduled email report. Your cost monitoring system is now fully automated.
Secret mission
Tag Your Resources for Team-Level Cost Tracking
Your dashboard breaks down costs by service, but what if stakeholders want to see costs by project or team? In this secret mission, you will tag your AWS resources and build a cost widget that answers the question every manager asks: which project is costing us the most?
Clean Up Your Resources
Clean Up Your Resources
This project uses only free AWS Billing and Cost Management features, so there are no ongoing costs to worry about. Decide whether to keep your resources running, pause them to come back later, or delete them entirely.
Resources you used:
- Cost Explorer (enabled and active in the Billing and Cost Management console).
- Budget Monthly-AWS-Spending in AWS Budgets.
- Custom dashboard Org-Cost-Overview in Cost Management Dashboards (with three widgets).
- Scheduled email report Weekly-Cost-Report delivering weekly PDFs.
- Cost allocation tag Project activated in Billing settings (Secret Mission only).
- Resource tags applied to existing AWS resources via Tag Editor (Secret Mission only).
What about Cost Explorer?
Cost Explorer cannot be disabled once it has been enabled. It remains active in your account at no charge. Viewing costs and usage through the Cost Explorer interface is free.
Keep everything running
No action needed. Choose this option if you want your monitoring and reporting to continue operating.
- Your budget Monthly-AWS-Spending continues to monitor your spending and send alert emails at no cost. The first two action-enabled budgets per month are free.
- Your dashboard Org-Cost-Overview stays accessible in the Billing and Cost Management console.
- Your scheduled email report Weekly-Cost-Report delivers a password-protected PDF to your inbox every week automatically.
- Cost Explorer remains enabled and continues tracking your cost data at no charge.
Pause - I'll come back to this later
Stop the automated email deliveries while keeping your dashboard and budget intact. You can re-create the scheduled report later.
- In the Billing and Cost Management console, choose Dashboards in the left navigation pane.
- Select your Org-Cost-Overview dashboard.
- Choose Actions, then Manage email reports.
- Select Weekly-Cost-Report, choose Actions, then Delete report.
- Type confirm in the confirmation dialog and choose Delete.
- Your dashboard and budget remain in place for when you return.
Delete - I don't want to use this again
Remove all monitoring, dashboards, and reporting you set up in this project. This cannot be undone.
Delete the scheduled email report:
- In the Billing and Cost Management console, choose Dashboards in the left navigation pane.
- Select your Org-Cost-Overview dashboard.
- Choose Actions, then Manage email reports.
- Select Weekly-Cost-Report, choose Actions, then Delete report.
- Type confirm in the confirmation dialog and choose Delete.
Delete the dashboard:
- Return to the Dashboards page.
- Select Org-Cost-Overview.
- Choose Actions, then Delete dashboard.
- Type confirm in the confirmation dialog and choose Delete. This action is permanent and removes access for all users.
Delete the budget:
- Choose Budgets in the left navigation pane.
- Select Monthly-AWS-Spending.
- Choose Actions, then Delete.
- Confirm the deletion when prompted.
Deactivate the cost allocation tag (Secret Mission only):
- Choose Cost allocation tags in the left navigation pane.
- Select the Project tag key under User-Defined Cost Allocation Tags.
- Choose Deactivate. The tag stops appearing in future cost reports (deactivation can take up to 24 hours).
Remove resource tags (Secret Mission only):
- Search for Tag Editor in the AWS Console search bar and open it.
- Search for your tagged resources (e.g., S3 buckets).
- Select the tagged resources and remove the Project tag from each one.
Nice Work!
Nice Work!
Nice work! You have built a complete cost monitoring and reporting system using native AWS tools.
Non-technical stakeholders can now see exactly where your cloud money is going without ever logging into the AWS Management Console.
You've learned how to:
- Explored your AWS spending history using Cost Explorer, filtering costs by service and running month-over-month comparisons to spot spending trends.
- Created a monthly cost budget with dual alert thresholds (actual and forecasted) that proactively warns you before costs exceed limits.
- Built a custom Cost Management Dashboard combining service-level cost visualizations and budget tracking in a single shareable view, then configured an automated weekly PDF report that delivers your dashboard straight to stakeholders' inboxes.
- Secret Mission: Set up cost allocation tags on existing resources and built a tag-based cost breakdown widget for team-level reporting.
Ready to quiz yourself?