GetCostForecast - AWS Billing and Cost Management

GetCostForecast

Retrieves a forecast for how much Amazon Web Services predicts that you will spend over the forecast time period that you select, based on your past costs.

Request Syntax

{ "BillingViewArn": "string", "Filter": { "And": [ "Expression" ], "CostCategories": { "Key": "string", "MatchOptions": [ "string" ], "Values": [ "string" ] }, "Dimensions": { "Key": "string", "MatchOptions": [ "string" ], "Values": [ "string" ] }, "Not": "Expression", "Or": [ "Expression" ], "Tags": { "Key": "string", "MatchOptions": [ "string" ], "Values": [ "string" ] } }, "Granularity": "string", "Metric": "string", "PredictionIntervalLevel": number, "TimePeriod": { "End": "string", "Start": "string" } }

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

BillingViewArn

The Amazon Resource Name (ARN) that uniquely identifies a specific billing view. The ARN is used to specify which particular billing view you want to interact with or retrieve information from when making API calls related to AWS Billing and Cost Management features. The BillingViewArn can be retrieved by calling the ListBillingViews API.

Type: String

Length Constraints: Minimum length of 20. Maximum length of 2048.

Pattern: ^arn:aws[a-z-]*:(billing)::[0-9]{12}:billingview/[-a-zA-Z0-9/:_+=.-@]{1,43}$

Required: No

Filter

The filters that you want to use to filter your forecast. The GetCostForecast API supports filtering by the following dimensions:

  • AZ

  • INSTANCE_TYPE

  • LINKED_ACCOUNT

  • LINKED_ACCOUNT_NAME

  • OPERATION

  • PURCHASE_TYPE

  • REGION

  • SERVICE

  • USAGE_TYPE

  • USAGE_TYPE_GROUP

  • RECORD_TYPE

  • OPERATING_SYSTEM

  • TENANCY

  • SCOPE

  • PLATFORM

  • SUBSCRIPTION_ID

  • LEGAL_ENTITY_NAME

  • DEPLOYMENT_OPTION

  • DATABASE_ENGINE

  • INSTANCE_TYPE_FAMILY

  • BILLING_ENTITY

  • RESERVATION_ID

  • SAVINGS_PLAN_ARN

Type: Expression object

Required: No

Granularity

How granular you want the forecast to be. You can get 3 months of DAILY forecasts or 12 months of MONTHLY forecasts.

The GetCostForecast operation supports only DAILY and MONTHLY granularities.

Type: String

Valid Values: DAILY | MONTHLY | HOURLY

Required: Yes

Metric

Which metric Cost Explorer uses to create your forecast. For more information about blended and unblended rates, see Why does the "blended" annotation appear on some line items in my bill?.

Valid values for a GetCostForecast call are the following:

  • AMORTIZED_COST

  • BLENDED_COST

  • NET_AMORTIZED_COST

  • NET_UNBLENDED_COST

  • UNBLENDED_COST

Type: String

Valid Values: BLENDED_COST | UNBLENDED_COST | AMORTIZED_COST | NET_UNBLENDED_COST | NET_AMORTIZED_COST | USAGE_QUANTITY | NORMALIZED_USAGE_AMOUNT

Required: Yes

PredictionIntervalLevel

Cost Explorer always returns the mean forecast as a single point. You can request a prediction interval around the mean by specifying a confidence level. The higher the confidence level, the more confident Cost Explorer is about the actual value falling in the prediction interval. Higher confidence levels result in wider prediction intervals.

Type: Integer

Valid Range: Minimum value of 51. Maximum value of 99.

Required: No

TimePeriod

The period of time that you want the forecast to cover. The start date must be equal to or no later than the current date to avoid a validation error.

Type: DateInterval object

Required: Yes

Response Syntax

{ "ForecastResultsByTime": [ { "MeanValue": "string", "PredictionIntervalLowerBound": "string", "PredictionIntervalUpperBound": "string", "TimePeriod": { "End": "string", "Start": "string" } } ], "Total": { "Amount": "string", "Unit": "string" } }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

ForecastResultsByTime

The forecasts for your query, in order. For DAILY forecasts, this is a list of days. For MONTHLY forecasts, this is a list of months.

Type: Array of ForecastResult objects

Total

How much you are forecasted to spend over the forecast period, in USD.

Type: MetricValue object

Errors

For information about the errors that are common to all actions, see Common Errors.

DataUnavailableException

The requested data is unavailable.

HTTP Status Code: 400

LimitExceededException

You made too many calls in a short period of time. Try again later.

HTTP Status Code: 400

ResourceNotFoundException

The specified ARN in the request doesn't exist.

HTTP Status Code: 400

Examples

Example

The following example shows how to retrieve a forecast using the GetCostForecast operation.

Sample Request

POST / HTTP/1.1 Host: ce.us-east-1.amazonaws.com x-amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=contenttype;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid,Signature=<Signature> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Content-Length: <PayloadSizeBytes> Connection: Keep-Alive X-Amz-Target: AWSInsightsIndexService.GetCostForecast { "TimePeriod": { "Start":"2017-10-25", "End": "2017-10-27" }, "Granularity": "DAILY", "Filter": { "Dimensions": { "Key": "SERVICE", "Values": [ "Amazon Simple Storage Service" ] } }, "Metric":"BLENDED_COST", "PredictionIntervalLevel":85 }

Sample Response

HTTP/1.1 200 OK x-amzn-RequestId: <RequestId> Content-Type: application/x-amz-json-1.1 Content-Length: <PayloadSizeBytes> Date: <Date> { "ForecastResultsByTime": [ { "MeanValue": "37.0786663399", "PredictionIntervalLowerBound": "34.9970026341", "PredictionIntervalUpperBound": "39.1603300457", "TimePeriod": { "End": "2018-10-26", "Start": "2018-10-25" } }, { "MeanValue": "37.0786663399", "PredictionIntervalLowerBound": "34.9970026341", "PredictionIntervalUpperBound": "39.1603300457", "TimePeriod": { "End": "2018-10-27", "Start": "2018-10-26" } } ], "Total": { "Amount": "74.1573326798", "Unit": "USD" } }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: