/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace AutoScaling { namespace Model { /** *

Represents a predictive scaling policy configuration to use with Amazon EC2 * Auto Scaling.

See Also:

AWS * API Reference

*/ class PredictiveScalingConfiguration { public: AWS_AUTOSCALING_API PredictiveScalingConfiguration(); AWS_AUTOSCALING_API PredictiveScalingConfiguration(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_AUTOSCALING_API PredictiveScalingConfiguration& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_AUTOSCALING_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_AUTOSCALING_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline const Aws::Vector& GetMetricSpecifications() const{ return m_metricSpecifications; } /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline bool MetricSpecificationsHasBeenSet() const { return m_metricSpecificationsHasBeenSet; } /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline void SetMetricSpecifications(const Aws::Vector& value) { m_metricSpecificationsHasBeenSet = true; m_metricSpecifications = value; } /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline void SetMetricSpecifications(Aws::Vector&& value) { m_metricSpecificationsHasBeenSet = true; m_metricSpecifications = std::move(value); } /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline PredictiveScalingConfiguration& WithMetricSpecifications(const Aws::Vector& value) { SetMetricSpecifications(value); return *this;} /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline PredictiveScalingConfiguration& WithMetricSpecifications(Aws::Vector&& value) { SetMetricSpecifications(std::move(value)); return *this;} /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline PredictiveScalingConfiguration& AddMetricSpecifications(const PredictiveScalingMetricSpecification& value) { m_metricSpecificationsHasBeenSet = true; m_metricSpecifications.push_back(value); return *this; } /** *

This structure includes the metrics and target utilization to use for * predictive scaling.

This is an array, but we currently only support a * single metric specification. That is, you can specify a target value and a * single metric pair, or a target value and one scaling metric and one load * metric.

*/ inline PredictiveScalingConfiguration& AddMetricSpecifications(PredictiveScalingMetricSpecification&& value) { m_metricSpecificationsHasBeenSet = true; m_metricSpecifications.push_back(std::move(value)); return *this; } /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline const PredictiveScalingMode& GetMode() const{ return m_mode; } /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline bool ModeHasBeenSet() const { return m_modeHasBeenSet; } /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline void SetMode(const PredictiveScalingMode& value) { m_modeHasBeenSet = true; m_mode = value; } /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline void SetMode(PredictiveScalingMode&& value) { m_modeHasBeenSet = true; m_mode = std::move(value); } /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline PredictiveScalingConfiguration& WithMode(const PredictiveScalingMode& value) { SetMode(value); return *this;} /** *

The predictive scaling mode. Defaults to ForecastOnly if not * specified.

*/ inline PredictiveScalingConfiguration& WithMode(PredictiveScalingMode&& value) { SetMode(std::move(value)); return *this;} /** *

The amount of time, in seconds, by which the instance launch time can be * advanced. For example, the forecast says to add capacity at 10:00 AM, and you * choose to pre-launch instances by 5 minutes. In that case, the instances will be * launched at 9:55 AM. The intention is to give resources time to be provisioned. * It can take a few minutes to launch an EC2 instance. The actual amount of time * required depends on several factors, such as the size of the instance and * whether there are startup scripts to complete.

The value must be less * than the forecast interval duration of 3600 seconds (60 minutes). Defaults to * 300 seconds if not specified.

*/ inline int GetSchedulingBufferTime() const{ return m_schedulingBufferTime; } /** *

The amount of time, in seconds, by which the instance launch time can be * advanced. For example, the forecast says to add capacity at 10:00 AM, and you * choose to pre-launch instances by 5 minutes. In that case, the instances will be * launched at 9:55 AM. The intention is to give resources time to be provisioned. * It can take a few minutes to launch an EC2 instance. The actual amount of time * required depends on several factors, such as the size of the instance and * whether there are startup scripts to complete.

The value must be less * than the forecast interval duration of 3600 seconds (60 minutes). Defaults to * 300 seconds if not specified.

*/ inline bool SchedulingBufferTimeHasBeenSet() const { return m_schedulingBufferTimeHasBeenSet; } /** *

The amount of time, in seconds, by which the instance launch time can be * advanced. For example, the forecast says to add capacity at 10:00 AM, and you * choose to pre-launch instances by 5 minutes. In that case, the instances will be * launched at 9:55 AM. The intention is to give resources time to be provisioned. * It can take a few minutes to launch an EC2 instance. The actual amount of time * required depends on several factors, such as the size of the instance and * whether there are startup scripts to complete.

The value must be less * than the forecast interval duration of 3600 seconds (60 minutes). Defaults to * 300 seconds if not specified.

*/ inline void SetSchedulingBufferTime(int value) { m_schedulingBufferTimeHasBeenSet = true; m_schedulingBufferTime = value; } /** *

The amount of time, in seconds, by which the instance launch time can be * advanced. For example, the forecast says to add capacity at 10:00 AM, and you * choose to pre-launch instances by 5 minutes. In that case, the instances will be * launched at 9:55 AM. The intention is to give resources time to be provisioned. * It can take a few minutes to launch an EC2 instance. The actual amount of time * required depends on several factors, such as the size of the instance and * whether there are startup scripts to complete.

The value must be less * than the forecast interval duration of 3600 seconds (60 minutes). Defaults to * 300 seconds if not specified.

*/ inline PredictiveScalingConfiguration& WithSchedulingBufferTime(int value) { SetSchedulingBufferTime(value); return *this;} /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline const PredictiveScalingMaxCapacityBreachBehavior& GetMaxCapacityBreachBehavior() const{ return m_maxCapacityBreachBehavior; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline bool MaxCapacityBreachBehaviorHasBeenSet() const { return m_maxCapacityBreachBehaviorHasBeenSet; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline void SetMaxCapacityBreachBehavior(const PredictiveScalingMaxCapacityBreachBehavior& value) { m_maxCapacityBreachBehaviorHasBeenSet = true; m_maxCapacityBreachBehavior = value; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline void SetMaxCapacityBreachBehavior(PredictiveScalingMaxCapacityBreachBehavior&& value) { m_maxCapacityBreachBehaviorHasBeenSet = true; m_maxCapacityBreachBehavior = std::move(value); } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline PredictiveScalingConfiguration& WithMaxCapacityBreachBehavior(const PredictiveScalingMaxCapacityBreachBehavior& value) { SetMaxCapacityBreachBehavior(value); return *this;} /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity of the Auto Scaling group. Defaults * to HonorMaxCapacity if not specified.

The following are * possible values:

  • HonorMaxCapacity - Amazon EC2 * Auto Scaling cannot scale out capacity higher than the maximum capacity. The * maximum capacity is enforced as a hard limit.

  • * IncreaseMaxCapacity - Amazon EC2 Auto Scaling can scale out * capacity higher than the maximum capacity when the forecast capacity is close to * or exceeds the maximum capacity. The upper limit is determined by the forecasted * capacity and the value for MaxCapacityBuffer.

*/ inline PredictiveScalingConfiguration& WithMaxCapacityBreachBehavior(PredictiveScalingMaxCapacityBreachBehavior&& value) { SetMaxCapacityBreachBehavior(std::move(value)); return *this;} /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

If set to 0, * Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to * equal but not exceed forecast capacity.

Required if the * MaxCapacityBreachBehavior property is set to * IncreaseMaxCapacity, and cannot be used otherwise.

*/ inline int GetMaxCapacityBuffer() const{ return m_maxCapacityBuffer; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

If set to 0, * Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to * equal but not exceed forecast capacity.

Required if the * MaxCapacityBreachBehavior property is set to * IncreaseMaxCapacity, and cannot be used otherwise.

*/ inline bool MaxCapacityBufferHasBeenSet() const { return m_maxCapacityBufferHasBeenSet; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

If set to 0, * Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to * equal but not exceed forecast capacity.

Required if the * MaxCapacityBreachBehavior property is set to * IncreaseMaxCapacity, and cannot be used otherwise.

*/ inline void SetMaxCapacityBuffer(int value) { m_maxCapacityBufferHasBeenSet = true; m_maxCapacityBuffer = value; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

If set to 0, * Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to * equal but not exceed forecast capacity.

Required if the * MaxCapacityBreachBehavior property is set to * IncreaseMaxCapacity, and cannot be used otherwise.

*/ inline PredictiveScalingConfiguration& WithMaxCapacityBuffer(int value) { SetMaxCapacityBuffer(value); return *this;} private: Aws::Vector m_metricSpecifications; bool m_metricSpecificationsHasBeenSet = false; PredictiveScalingMode m_mode; bool m_modeHasBeenSet = false; int m_schedulingBufferTime; bool m_schedulingBufferTimeHasBeenSet = false; PredictiveScalingMaxCapacityBreachBehavior m_maxCapacityBreachBehavior; bool m_maxCapacityBreachBehaviorHasBeenSet = false; int m_maxCapacityBuffer; bool m_maxCapacityBufferHasBeenSet = false; }; } // namespace Model } // namespace AutoScaling } // namespace Aws