getCostForecast method

Future<GetCostForecastResponse> getCostForecast({
  1. required Granularity granularity,
  2. required Metric metric,
  3. required DateInterval timePeriod,
  4. Expression? filter,
  5. int? predictionIntervalLevel,
})

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.

May throw LimitExceededException. May throw DataUnavailableException.

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 GetCostForecast operation supports only DAILY and MONTHLY granularities.

Parameter 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

Parameter 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.

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<GetCostForecastResponse> getCostForecast({
  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.GetCostForecast'
  };
  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 GetCostForecastResponse.fromJson(jsonResponse.body);
}