/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.autoscalingplans.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *

* Describes a scaling instruction for a scalable resource in a scaling plan. Each scaling instruction applies to one * resource. *

*

* AWS Auto Scaling creates target tracking scaling policies based on the scaling instructions. Target tracking scaling * policies adjust the capacity of your scalable resource as required to maintain resource utilization at the target * value that you specified. *

*

* AWS Auto Scaling also configures predictive scaling for your Amazon EC2 Auto Scaling groups using a subset of * parameters, including the load metric, the scaling metric, the target value for the scaling metric, the predictive * scaling mode (forecast and scale or forecast only), and the desired behavior when the forecast capacity exceeds the * maximum capacity of the resource. With predictive scaling, AWS Auto Scaling generates forecasts with traffic * predictions for the two days ahead and schedules scaling actions that proactively add and remove resource capacity to * match the forecast. *

* *

* We recommend waiting a minimum of 24 hours after creating an Auto Scaling group to configure predictive scaling. At * minimum, there must be 24 hours of historical data to generate a forecast. For more information, see Best Practices for AWS Auto * Scaling in the AWS Auto Scaling User Guide. *

*
* * @see AWS API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class ScalingInstruction implements Serializable, Cloneable, StructuredPojo { /** *

* The namespace of the AWS service. *

*/ private String serviceNamespace; /** *

* The ID of the resource. This string consists of the resource type and unique identifier. *

* */ private String resourceId; /** *

* The scalable dimension associated with the resource. *

* */ private String scalableDimension; /** *

* The minimum capacity of the resource. *

*/ private Integer minCapacity; /** *

* The maximum capacity of the resource. The exception to this upper limit is if you specify a non-default setting * for PredictiveScalingMaxCapacityBehavior. *

*/ private Integer maxCapacity; /** *

* The target tracking configurations (up to 10). Each of these structures must specify a unique scaling metric and * a target value for the metric. *

*/ private java.util.List targetTrackingConfigurations; /** *

* The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive scaling, and cannot be used * otherwise. *

*/ private PredefinedLoadMetricSpecification predefinedLoadMetricSpecification; /** *

* The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive scaling, and cannot be used * otherwise. *

*/ private CustomizedLoadMetricSpecification customizedLoadMetricSpecification; /** *

* The amount of time, in seconds, to buffer the run time of scheduled scaling actions when scaling out. For * example, if the forecast says to add capacity at 10:00 AM, and the buffer time is 5 minutes, then the run time of * the corresponding scheduled scaling action will be 9:55 AM. The intention is to give resources time to be * provisioned. For example, 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). The default is 300 * seconds. *

*

* Only valid when configuring predictive scaling. *

*/ private Integer scheduledActionBufferTime; /** *

* Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity * specified for the resource. The default value is SetForecastCapacityToMaxCapacity. *

*

* The following are possible values: *

* *

* Only valid when configuring predictive scaling. *

*/ private String predictiveScalingMaxCapacityBehavior; /** *

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

*

* Only valid when configuring predictive scaling. Required if the PredictiveScalingMaxCapacityBehavior is * set to SetMaxCapacityAboveForecastCapacity, and cannot be used otherwise. *

*

* The range is 1-100. *

*/ private Integer predictiveScalingMaxCapacityBuffer; /** *

* The predictive scaling mode. The default value is ForecastAndScale. Otherwise, AWS Auto Scaling * forecasts capacity but does not create any scheduled scaling actions based on the capacity forecast. *

*/ private String predictiveScalingMode; /** *

* Controls whether a resource's externally created scaling policies are kept or replaced. *

*

* The default value is KeepExternalPolicies. If the parameter is set to * ReplaceExternalPolicies, any scaling policies that are external to AWS Auto Scaling are deleted and * new target tracking scaling policies created. *

*

* Only valid when configuring dynamic scaling. *

*

* Condition: The number of existing policies to be replaced must be less than or equal to 50. If there are more * than 50 policies to be replaced, AWS Auto Scaling keeps all existing policies and does not create new ones. *

*/ private String scalingPolicyUpdateBehavior; /** *

* Controls whether dynamic scaling by AWS Auto Scaling is disabled. When dynamic scaling is enabled, AWS Auto * Scaling creates target tracking scaling policies based on the specified target tracking configurations. *

*

* The default is enabled (false). *

*/ private Boolean disableDynamicScaling; /** *

* The namespace of the AWS service. *

* * @param serviceNamespace * The namespace of the AWS service. * @see ServiceNamespace */ public void setServiceNamespace(String serviceNamespace) { this.serviceNamespace = serviceNamespace; } /** *

* The namespace of the AWS service. *

* * @return The namespace of the AWS service. * @see ServiceNamespace */ public String getServiceNamespace() { return this.serviceNamespace; } /** *

* The namespace of the AWS service. *

* * @param serviceNamespace * The namespace of the AWS service. * @return Returns a reference to this object so that method calls can be chained together. * @see ServiceNamespace */ public ScalingInstruction withServiceNamespace(String serviceNamespace) { setServiceNamespace(serviceNamespace); return this; } /** *

* The namespace of the AWS service. *

* * @param serviceNamespace * The namespace of the AWS service. * @return Returns a reference to this object so that method calls can be chained together. * @see ServiceNamespace */ public ScalingInstruction withServiceNamespace(ServiceNamespace serviceNamespace) { this.serviceNamespace = serviceNamespace.toString(); return this; } /** *

* The ID of the resource. This string consists of the resource type and unique identifier. *

* * * @param resourceId * The ID of the resource. This string consists of the resource type and unique identifier.

*