Table: aws_cost_by_service_daily - Query AWS Cost Explorer using SQL
The AWS Cost Explorer is a tool that allows you to visualize, understand, and manage your AWS costs and usage over time. It provides data about your cost drivers and usage trends, and enables you to drill down into your cost data to identify specific cost allocation tags or accounts in your organization. You can use it to track your daily AWS costs by service, making it easier to manage your AWS spending.
Table Usage Guide
The aws_cost_by_service_daily
table in Steampipe provides you with information about the daily cost breakdown by AWS service within AWS Cost Explorer. This table allows you, as a financial analyst or cloud administrator, to query cost-specific details, including total cost, unit, and service name on a daily basis. You can utilize this table to track your spending on AWS services, monitor cost trends, and identify potential cost-saving opportunities. The schema outlines the various attributes of your cost data, including your linked account, service, currency, and amount.
Amazon Cost Explorer helps you visualize, understand, and manage your AWS costs and usage. The aws_cost_by_service_daily
table provides you with a simplified view of cost for services in your account (or all linked accounts when run against the organization master), summarized by day, for the last year.
Important Notes
- The pricing for the Cost Explorer API is per API request - Each request you make will incur a cost of $0.01.
Examples
Basic info
Explore your daily AWS costs by service over a period of time. This query helps you track and analyze your expenditure, aiding in better financial management and budget planning.
select service, period_start, blended_cost_amount :: numeric :: money, unblended_cost_amount :: numeric :: money, amortized_cost_amount :: numeric :: money, net_unblended_cost_amount :: numeric :: money, net_amortized_cost_amount :: numeric :: moneyfrom aws_cost_by_service_dailyorder by service, period_start;
select service, period_start, cast(blended_cost_amount as decimal), cast(unblended_cost_amount as decimal), cast(amortized_cost_amount as decimal), cast(net_unblended_cost_amount as decimal), cast(net_amortized_cost_amount as decimal)from aws_cost_by_service_dailyorder by service, period_start;
Min, Max, and average daily unblended_cost_amount by service
This query is useful for gaining insights into the range and average of daily costs associated with different services in AWS. It can assist in identifying areas of high expenditure and evaluating cost efficiency.
select service, min(unblended_cost_amount) :: numeric :: money as min, max(unblended_cost_amount) :: numeric :: money as max, avg(unblended_cost_amount) :: numeric :: money as averagefrom aws_cost_by_service_dailygroup by serviceorder by service;
select service, min(unblended_cost_amount) as min, max(unblended_cost_amount) as max, avg(unblended_cost_amount) as averagefrom aws_cost_by_service_dailygroup by serviceorder by service;
Top 10 most expensive service (by average daily unblended_cost_amount)
Discover the segments that are driving your AWS costs by identifying the top 10 most expensive services based on their average daily costs. This helps in managing your budget more effectively and strategically allocating resources.
select service, sum(unblended_cost_amount) :: numeric :: money as sum, avg(unblended_cost_amount) :: numeric :: money as averagefrom aws_cost_by_service_dailygroup by serviceorder by average desclimit 10;
select service, sum(unblended_cost_amount) as sum, avg(unblended_cost_amount) as averagefrom aws_cost_by_service_dailygroup by serviceorder by average desclimit 10;
Top 10 most expensive service (by total daily unblended_cost_amount)
Determine the areas in which your AWS services are costing the most by identifying the top 10 services with the highest daily costs. This can help in optimizing resources and budgeting by focusing on the most expensive services.
select service, sum(unblended_cost_amount) :: numeric :: money as sum, avg(unblended_cost_amount) :: numeric :: money as averagefrom aws_cost_by_service_dailygroup by serviceorder by sum desclimit 10;
select service, sum(unblended_cost_amount) as sum, avg(unblended_cost_amount) as averagefrom aws_cost_by_service_dailygroup by serviceorder by sum desclimit 10;
Ranked - Top 10 Most expensive days (unblended_cost_amount) by service
This query is used to identify the top 10 days with the highest expenses for each service. This information can be helpful in managing budgets and identifying potential cost-saving opportunities.
with ranked_costs as ( select service, period_start, unblended_cost_amount :: numeric :: money, rank() over( partition by service order by unblended_cost_amount desc ) from aws_cost_by_service_daily)select *from ranked_costswhere rank <= 10;
Error: SQLite does not support the rank window function.
Schema for aws_cost_by_service_daily
Name | Type | Operators | Description |
---|---|---|---|
_ctx | jsonb | Steampipe context in JSON form. | |
account_id | text | =, !=, ~~, ~~*, !~~, !~~* | The AWS Account ID in which the resource is located. |
amortized_cost_amount | double precision | This cost metric reflects the effective cost of the upfront and monthly reservation fees spread across the billing period. By default, Cost Explorer shows the fees for Reserved Instances as a spike on the day that you're charged, but if you choose to show costs as amortized costs, the costs are amortized over the billing period. This means that the costs are broken out into the effective daily rate. AWS estimates your amortized costs by combining your unblended costs with the amortized portion of your upfront and recurring reservation fees. | |
amortized_cost_unit | text | Unit type for amortized costs. | |
blended_cost_amount | double precision | This cost metric reflects the average cost of usage across the consolidated billing family. If you use the consolidated billing feature in AWS Organizations, you can view costs using blended rates. | |
blended_cost_unit | text | Unit type for blended costs. | |
estimated | boolean | Whether the result is estimated. | |
net_amortized_cost_amount | double precision | This cost metric amortizes the upfront and monthly reservation fees while including discounts such as RI volume discounts. | |
net_amortized_cost_unit | text | Unit type for net amortized costs. | |
net_unblended_cost_amount | double precision | This cost metric reflects the unblended cost after discounts. | |
net_unblended_cost_unit | text | Unit type for net unblended costs. | |
normalized_usage_amount | double precision | The amount of usage that you incurred, in normalized units, for size-flexible RIs. The NormalizedUsageAmount is equal to UsageAmount multiplied by NormalizationFactor. | |
normalized_usage_unit | text | Unit type for normalized usage. | |
partition | text | The AWS partition in which the resource is located (aws, aws-cn, or aws-us-gov). | |
period_end | timestamp with time zone | End timestamp for this cost metric. | |
period_start | timestamp with time zone | Start timestamp for this cost metric. | |
region | text | The AWS Region in which the resource is located. | |
service | text | =, != | The name of the AWS service. |
sp_connection_name | text | =, !=, ~~, ~~*, !~~, !~~* | Steampipe connection name. |
sp_ctx | jsonb | Steampipe context in JSON form. | |
unblended_cost_amount | double precision | Unblended costs represent your usage costs on the day they are charged to you. In finance terms, they represent your costs on a cash basis of accounting. | |
unblended_cost_unit | text | Unit type for unblended costs. | |
usage_quantity_amount | double precision | The amount of usage that you incurred. NOTE: If you return the UsageQuantity metric, the service aggregates all usage numbers without taking into account the units. For example, if you aggregate usageQuantity across all of Amazon EC2, the results aren't meaningful because Amazon EC2 compute hours and data transfer are measured in different units (for example, hours vs. GB). | |
usage_quantity_unit | text | Unit type for usage quantity. |
Export
This table is available as a standalone Exporter CLI. Steampipe exporters are stand-alone binaries that allow you to extract data using Steampipe plugins without a database.
You can download the tarball for your platform from the Releases page, but it is simplest to install them with the steampipe_export_installer.sh
script:
/bin/sh -c "$(curl -fsSL https://steampipe.io/install/export.sh)" -- aws
You can pass the configuration to the command with the --config
argument:
steampipe_export_aws --config '<your_config>' aws_cost_by_service_daily