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

The managed scaling settings for the Auto Scaling group capacity * provider.

When managed scaling is turned on, Amazon ECS manages the * scale-in and scale-out actions of the Auto Scaling group. Amazon ECS manages a * target tracking scaling policy using an Amazon ECS managed CloudWatch metric * with the specified targetCapacity value as the target value for the * metric. For more information, see Using * managed scaling in the Amazon Elastic Container Service Developer * Guide.

If managed scaling is off, the user must manage the scaling of * the Auto Scaling group.

See Also:

AWS * API Reference

*/ class ManagedScaling { public: AWS_ECS_API ManagedScaling(); AWS_ECS_API ManagedScaling(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API ManagedScaling& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline const ManagedScalingStatus& GetStatus() const{ return m_status; } /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; } /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline void SetStatus(const ManagedScalingStatus& value) { m_statusHasBeenSet = true; m_status = value; } /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline void SetStatus(ManagedScalingStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); } /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline ManagedScaling& WithStatus(const ManagedScalingStatus& value) { SetStatus(value); return *this;} /** *

Determines whether to use managed scaling for the capacity provider.

*/ inline ManagedScaling& WithStatus(ManagedScalingStatus&& value) { SetStatus(std::move(value)); return *this;} /** *

The target capacity utilization as a percentage for the capacity provider. * The specified value must be greater than 0 and less than or equal * to 100. For example, if you want the capacity provider to maintain * 10% spare capacity, then that means the utilization is 90%, so use a * targetCapacity of 90. The default value of * 100 percent results in the Amazon EC2 instances in your Auto * Scaling group being completely used.

*/ inline int GetTargetCapacity() const{ return m_targetCapacity; } /** *

The target capacity utilization as a percentage for the capacity provider. * The specified value must be greater than 0 and less than or equal * to 100. For example, if you want the capacity provider to maintain * 10% spare capacity, then that means the utilization is 90%, so use a * targetCapacity of 90. The default value of * 100 percent results in the Amazon EC2 instances in your Auto * Scaling group being completely used.

*/ inline bool TargetCapacityHasBeenSet() const { return m_targetCapacityHasBeenSet; } /** *

The target capacity utilization as a percentage for the capacity provider. * The specified value must be greater than 0 and less than or equal * to 100. For example, if you want the capacity provider to maintain * 10% spare capacity, then that means the utilization is 90%, so use a * targetCapacity of 90. The default value of * 100 percent results in the Amazon EC2 instances in your Auto * Scaling group being completely used.

*/ inline void SetTargetCapacity(int value) { m_targetCapacityHasBeenSet = true; m_targetCapacity = value; } /** *

The target capacity utilization as a percentage for the capacity provider. * The specified value must be greater than 0 and less than or equal * to 100. For example, if you want the capacity provider to maintain * 10% spare capacity, then that means the utilization is 90%, so use a * targetCapacity of 90. The default value of * 100 percent results in the Amazon EC2 instances in your Auto * Scaling group being completely used.

*/ inline ManagedScaling& WithTargetCapacity(int value) { SetTargetCapacity(value); return *this;} /** *

The minimum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter If this * parameter is omitted, the default value of 1 is used.

When * additional capacity is required, Amazon ECS will scale up the minimum scaling * step size even if the actual demand is less than the minimum scaling step * size.

If you use a capacity provider with an Auto Scaling group * configured with more than one Amazon EC2 instance type or Availability Zone, * Amazon ECS will scale up by the exact minimum scaling step size value and will * ignore both the maximum scaling step size as well as the capacity demand.

*/ inline int GetMinimumScalingStepSize() const{ return m_minimumScalingStepSize; } /** *

The minimum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter If this * parameter is omitted, the default value of 1 is used.

When * additional capacity is required, Amazon ECS will scale up the minimum scaling * step size even if the actual demand is less than the minimum scaling step * size.

If you use a capacity provider with an Auto Scaling group * configured with more than one Amazon EC2 instance type or Availability Zone, * Amazon ECS will scale up by the exact minimum scaling step size value and will * ignore both the maximum scaling step size as well as the capacity demand.

*/ inline bool MinimumScalingStepSizeHasBeenSet() const { return m_minimumScalingStepSizeHasBeenSet; } /** *

The minimum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter If this * parameter is omitted, the default value of 1 is used.

When * additional capacity is required, Amazon ECS will scale up the minimum scaling * step size even if the actual demand is less than the minimum scaling step * size.

If you use a capacity provider with an Auto Scaling group * configured with more than one Amazon EC2 instance type or Availability Zone, * Amazon ECS will scale up by the exact minimum scaling step size value and will * ignore both the maximum scaling step size as well as the capacity demand.

*/ inline void SetMinimumScalingStepSize(int value) { m_minimumScalingStepSizeHasBeenSet = true; m_minimumScalingStepSize = value; } /** *

The minimum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter If this * parameter is omitted, the default value of 1 is used.

When * additional capacity is required, Amazon ECS will scale up the minimum scaling * step size even if the actual demand is less than the minimum scaling step * size.

If you use a capacity provider with an Auto Scaling group * configured with more than one Amazon EC2 instance type or Availability Zone, * Amazon ECS will scale up by the exact minimum scaling step size value and will * ignore both the maximum scaling step size as well as the capacity demand.

*/ inline ManagedScaling& WithMinimumScalingStepSize(int value) { SetMinimumScalingStepSize(value); return *this;} /** *

The maximum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter. If this * parameter is omitted, the default value of 1 is used.

*/ inline int GetMaximumScalingStepSize() const{ return m_maximumScalingStepSize; } /** *

The maximum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter. If this * parameter is omitted, the default value of 1 is used.

*/ inline bool MaximumScalingStepSizeHasBeenSet() const { return m_maximumScalingStepSizeHasBeenSet; } /** *

The maximum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter. If this * parameter is omitted, the default value of 1 is used.

*/ inline void SetMaximumScalingStepSize(int value) { m_maximumScalingStepSizeHasBeenSet = true; m_maximumScalingStepSize = value; } /** *

The maximum number of Amazon EC2 instances that Amazon ECS will scale out at * one time. The scale in process is not affected by this parameter. If this * parameter is omitted, the default value of 1 is used.

*/ inline ManagedScaling& WithMaximumScalingStepSize(int value) { SetMaximumScalingStepSize(value); return *this;} /** *

The period of time, in seconds, after a newly launched Amazon EC2 instance * can contribute to CloudWatch metrics for Auto Scaling group. If this parameter * is omitted, the default value of 300 seconds is used.

*/ inline int GetInstanceWarmupPeriod() const{ return m_instanceWarmupPeriod; } /** *

The period of time, in seconds, after a newly launched Amazon EC2 instance * can contribute to CloudWatch metrics for Auto Scaling group. If this parameter * is omitted, the default value of 300 seconds is used.

*/ inline bool InstanceWarmupPeriodHasBeenSet() const { return m_instanceWarmupPeriodHasBeenSet; } /** *

The period of time, in seconds, after a newly launched Amazon EC2 instance * can contribute to CloudWatch metrics for Auto Scaling group. If this parameter * is omitted, the default value of 300 seconds is used.

*/ inline void SetInstanceWarmupPeriod(int value) { m_instanceWarmupPeriodHasBeenSet = true; m_instanceWarmupPeriod = value; } /** *

The period of time, in seconds, after a newly launched Amazon EC2 instance * can contribute to CloudWatch metrics for Auto Scaling group. If this parameter * is omitted, the default value of 300 seconds is used.

*/ inline ManagedScaling& WithInstanceWarmupPeriod(int value) { SetInstanceWarmupPeriod(value); return *this;} private: ManagedScalingStatus m_status; bool m_statusHasBeenSet = false; int m_targetCapacity; bool m_targetCapacityHasBeenSet = false; int m_minimumScalingStepSize; bool m_minimumScalingStepSizeHasBeenSet = false; int m_maximumScalingStepSize; bool m_maximumScalingStepSizeHasBeenSet = false; int m_instanceWarmupPeriod; bool m_instanceWarmupPeriodHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws