getUsageForecast method
- required Granularity granularity,
- required Metric metric,
- required DateInterval timePeriod,
- Expression? filter,
- int? predictionIntervalLevel,
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.
May throw LimitExceededException. May throw DataUnavailableException. May throw UnresolvableUsageUnitException.
Parameter granularity
:
How granular you want the forecast to be. You can get 3 months of
DAILY
forecasts or 12 months of MONTHLY
forecasts.
The GetUsageForecast
operation supports only
DAILY
and MONTHLY
granularities.
Parameter metric
:
Which metric Cost Explorer uses to create your forecast.
Valid values for a GetUsageForecast
call are the following:
- USAGE_QUANTITY
- NORMALIZED_USAGE_AMOUNT
Parameter timePeriod
:
The start and end dates of the period that you want to retrieve usage
forecast for. The start date is inclusive, but the end date is exclusive.
For example, if start
is 2017-01-01
and
end
is 2017-05-01
, then the cost and usage data
is retrieved from 2017-01-01
up to and including
2017-04-30
but not including 2017-05-01
. The
start date must be equal to or later than the current date to avoid a
validation error.
Parameter filter
:
The filters that you want to use to filter your forecast. Cost Explorer
API supports all of the Cost Explorer filters.
Parameter 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.
Implementation
Future<GetUsageForecastResponse> getUsageForecast({
required Granularity granularity,
required Metric metric,
required DateInterval timePeriod,
Expression? filter,
int? predictionIntervalLevel,
}) async {
ArgumentError.checkNotNull(granularity, 'granularity');
ArgumentError.checkNotNull(metric, 'metric');
ArgumentError.checkNotNull(timePeriod, 'timePeriod');
_s.validateNumRange(
'predictionIntervalLevel',
predictionIntervalLevel,
51,
99,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSInsightsIndexService.GetUsageForecast'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'Granularity': granularity.toValue(),
'Metric': metric.toValue(),
'TimePeriod': timePeriod,
if (filter != null) 'Filter': filter,
if (predictionIntervalLevel != null)
'PredictionIntervalLevel': predictionIntervalLevel,
},
);
return GetUsageForecastResponse.fromJson(jsonResponse.body);
}