getScalingPlanResourceForecastData method

Future<GetScalingPlanResourceForecastDataResponse> getScalingPlanResourceForecastData({
  1. required DateTime endTime,
  2. required ForecastDataType forecastDataType,
  3. required String resourceId,
  4. required ScalableDimension scalableDimension,
  5. required String scalingPlanName,
  6. required int scalingPlanVersion,
  7. required ServiceNamespace serviceNamespace,
  8. required DateTime startTime,
})

Retrieves the forecast data for a scalable resource.

Capacity forecasts are represented as predicted values, or data points, that are calculated using historical data points from a specified CloudWatch load metric. Data points are available for up to 56 days.

May throw ValidationException. May throw InternalServiceException.

Parameter endTime : The exclusive end time of the time range for the forecast data to get. The maximum time duration between the start and end time is seven days.

Although this parameter can accept a date and time that is more than two days in the future, the availability of forecast data has limits. AWS Auto Scaling only issues forecasts for periods of two days in advance.

Parameter forecastDataType : The type of forecast data to get.

  • LoadForecast: The load metric forecast.
  • CapacityForecast: The capacity forecast.
  • ScheduledActionMinCapacity: The minimum capacity for each scheduled scaling action. This data is calculated as the larger of two values: the capacity forecast or the minimum capacity in the scaling instruction.
  • ScheduledActionMaxCapacity: The maximum capacity for each scheduled scaling action. The calculation used is determined by the predictive scaling maximum capacity behavior setting in the scaling instruction.

Parameter resourceId : The ID of the resource. This string consists of the resource type and unique identifier.

  • Auto Scaling group - The resource type is autoScalingGroup and the unique identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg.
  • ECS service - The resource type is service and the unique identifier is the cluster name and service name. Example: service/default/sample-webapp.
  • Spot Fleet request - The resource type is spot-fleet-request and the unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.
  • DynamoDB table - The resource type is table and the unique identifier is the resource ID. Example: table/my-table.
  • DynamoDB global secondary index - The resource type is index and the unique identifier is the resource ID. Example: table/my-table/index/my-table-index.
  • Aurora DB cluster - The resource type is cluster and the unique identifier is the cluster name. Example: cluster:my-db-cluster.

Parameter scalableDimension : The scalable dimension for the resource.

Parameter scalingPlanName : The name of the scaling plan.

Parameter scalingPlanVersion : The version number of the scaling plan.

Parameter serviceNamespace : The namespace of the AWS service.

Parameter startTime : The inclusive start time of the time range for the forecast data to get. The date and time can be at most 56 days before the current date and time.

Implementation

Future<GetScalingPlanResourceForecastDataResponse>
    getScalingPlanResourceForecastData({
  required DateTime endTime,
  required ForecastDataType forecastDataType,
  required String resourceId,
  required ScalableDimension scalableDimension,
  required String scalingPlanName,
  required int scalingPlanVersion,
  required ServiceNamespace serviceNamespace,
  required DateTime startTime,
}) async {
  ArgumentError.checkNotNull(endTime, 'endTime');
  ArgumentError.checkNotNull(forecastDataType, 'forecastDataType');
  ArgumentError.checkNotNull(resourceId, 'resourceId');
  ArgumentError.checkNotNull(scalableDimension, 'scalableDimension');
  ArgumentError.checkNotNull(scalingPlanName, 'scalingPlanName');
  _s.validateStringLength(
    'scalingPlanName',
    scalingPlanName,
    1,
    128,
    isRequired: true,
  );
  ArgumentError.checkNotNull(scalingPlanVersion, 'scalingPlanVersion');
  ArgumentError.checkNotNull(serviceNamespace, 'serviceNamespace');
  ArgumentError.checkNotNull(startTime, 'startTime');
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target':
        'AnyScaleScalingPlannerFrontendService.GetScalingPlanResourceForecastData'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'EndTime': unixTimestampToJson(endTime),
      'ForecastDataType': forecastDataType.toValue(),
      'ResourceId': resourceId,
      'ScalableDimension': scalableDimension.toValue(),
      'ScalingPlanName': scalingPlanName,
      'ScalingPlanVersion': scalingPlanVersion,
      'ServiceNamespace': serviceNamespace.toValue(),
      'StartTime': unixTimestampToJson(startTime),
    },
  );

  return GetScalingPlanResourceForecastDataResponse.fromJson(
      jsonResponse.body);
}