GetUsageForecast
Retrieves a forecast for how much Amazon Web Services predicts that you will use over the forecast time period that you select, based on your past usage.
Request Syntax
{
"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.
- Filter
-
The filters that you want to use to filter your forecast. The
GetUsageForecast
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 ofMONTHLY
forecasts.The
GetUsageForecast
operation supports onlyDAILY
andMONTHLY
granularities.Type: String
Valid Values:
DAILY | MONTHLY | HOURLY
Required: Yes
- Metric
-
Which metric Cost Explorer uses to create your forecast.
Valid values for a
GetUsageForecast
call are the following:-
USAGE_QUANTITY
-
NORMALIZED_USAGE_AMOUNT
Type: String
Valid Values:
BLENDED_COST | UNBLENDED_COST | AMORTIZED_COST | NET_UNBLENDED_COST | NET_AMORTIZED_COST | USAGE_QUANTITY | NORMALIZED_USAGE_AMOUNT
Required: Yes
-
- PredictionIntervalLevel
-
AWS 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 start and end dates of the period that you want to retrieve usage forecast for. The start date is included in the period, but the end date isn't included in the period. For example, if
start
is2017-01-01
andend
is2017-05-01
, then the cost and usage data is retrieved from2017-01-01
up to and including2017-04-30
but not including2017-05-01
. The start date must be equal to or 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. ForMONTHLY
forecasts, this is a list of months.Type: Array of ForecastResult objects
- Total
-
How much you're forecasted to use over the forecast period.
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
- UnresolvableUsageUnitException
-
Cost Explorer was unable to identify the usage unit. Provide
UsageType/UsageTypeGroup
filter selections that contain matching units, for example:hours
.HTTP Status Code: 400
Examples
Example
The following example shows how to retrieve a forecast using the
GetUsageForecast
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.GetUsageForecast
{
"TimePeriod": {
"Start":"2018-10-25",
"End": "2018-10-27"
},
"Granularity": "DAILY",
"Filter": {
"Dimensions": {
"Key": "SERVICE",
"Values": [
"Amazon Simple Storage Service"
]
}
},
"Metric":"USAGE_QUANTITY",
"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": "2019-10-26",
"Start": "2019-10-25"
}
},
{
"MeanValue": "37.0786663399",
"PredictionIntervalLowerBound": "34.9970026341",
"PredictionIntervalUpperBound": "39.1603300457",
"TimePeriod": {
"End": "2019-10-27",
"Start": "2019-10-26"
}
}
],
"Total": {
"Amount": "74.1573326798",
"Unit": "Hrs"
}
}
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: