/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the autoscaling-plans-2018-01-06.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.AutoScalingPlans.Model
{
///
/// 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.
///
///
///
public partial class ScalingInstruction
{
private CustomizedLoadMetricSpecification _customizedLoadMetricSpecification;
private bool? _disableDynamicScaling;
private int? _maxCapacity;
private int? _minCapacity;
private PredefinedLoadMetricSpecification _predefinedLoadMetricSpecification;
private PredictiveScalingMaxCapacityBehavior _predictiveScalingMaxCapacityBehavior;
private int? _predictiveScalingMaxCapacityBuffer;
private PredictiveScalingMode _predictiveScalingMode;
private string _resourceId;
private ScalableDimension _scalableDimension;
private ScalingPolicyUpdateBehavior _scalingPolicyUpdateBehavior;
private int? _scheduledActionBufferTime;
private ServiceNamespace _serviceNamespace;
private List _targetTrackingConfigurations = new List();
///
/// Gets and sets the property CustomizedLoadMetricSpecification.
///
/// 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.
///
///
public CustomizedLoadMetricSpecification CustomizedLoadMetricSpecification
{
get { return this._customizedLoadMetricSpecification; }
set { this._customizedLoadMetricSpecification = value; }
}
// Check to see if CustomizedLoadMetricSpecification property is set
internal bool IsSetCustomizedLoadMetricSpecification()
{
return this._customizedLoadMetricSpecification != null;
}
///
/// Gets and sets the property DisableDynamicScaling.
///
/// 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
).
///
///
public bool DisableDynamicScaling
{
get { return this._disableDynamicScaling.GetValueOrDefault(); }
set { this._disableDynamicScaling = value; }
}
// Check to see if DisableDynamicScaling property is set
internal bool IsSetDisableDynamicScaling()
{
return this._disableDynamicScaling.HasValue;
}
///
/// Gets and sets the property MaxCapacity.
///
/// The maximum capacity of the resource. The exception to this upper limit is if you
/// specify a non-default setting for PredictiveScalingMaxCapacityBehavior.
///
///
[AWSProperty(Required=true)]
public int MaxCapacity
{
get { return this._maxCapacity.GetValueOrDefault(); }
set { this._maxCapacity = value; }
}
// Check to see if MaxCapacity property is set
internal bool IsSetMaxCapacity()
{
return this._maxCapacity.HasValue;
}
///
/// Gets and sets the property MinCapacity.
///
/// The minimum capacity of the resource.
///
///
[AWSProperty(Required=true)]
public int MinCapacity
{
get { return this._minCapacity.GetValueOrDefault(); }
set { this._minCapacity = value; }
}
// Check to see if MinCapacity property is set
internal bool IsSetMinCapacity()
{
return this._minCapacity.HasValue;
}
///
/// Gets and sets the property PredefinedLoadMetricSpecification.
///
/// 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.
///
///
public PredefinedLoadMetricSpecification PredefinedLoadMetricSpecification
{
get { return this._predefinedLoadMetricSpecification; }
set { this._predefinedLoadMetricSpecification = value; }
}
// Check to see if PredefinedLoadMetricSpecification property is set
internal bool IsSetPredefinedLoadMetricSpecification()
{
return this._predefinedLoadMetricSpecification != null;
}
///
/// Gets and sets the property PredictiveScalingMaxCapacityBehavior.
///
/// 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:
///
/// -
///
///
SetForecastCapacityToMaxCapacity
- AWS Auto Scaling cannot scale resource
/// capacity higher than the maximum capacity. The maximum capacity is enforced as a hard
/// limit.
///
/// -
///
///
SetMaxCapacityToForecastCapacity
- AWS Auto Scaling may scale resource
/// capacity higher than the maximum capacity to equal but not exceed forecast capacity.
///
/// -
///
///
SetMaxCapacityAboveForecastCapacity
- AWS Auto Scaling may scale resource
/// capacity higher than the maximum capacity by a specified buffer value. The intention
/// is to give the target tracking scaling policy extra capacity if unexpected traffic
/// occurs.
///
///
///
/// Only valid when configuring predictive scaling.
///
///
public PredictiveScalingMaxCapacityBehavior PredictiveScalingMaxCapacityBehavior
{
get { return this._predictiveScalingMaxCapacityBehavior; }
set { this._predictiveScalingMaxCapacityBehavior = value; }
}
// Check to see if PredictiveScalingMaxCapacityBehavior property is set
internal bool IsSetPredictiveScalingMaxCapacityBehavior()
{
return this._predictiveScalingMaxCapacityBehavior != null;
}
///
/// Gets and sets the property PredictiveScalingMaxCapacityBuffer.
///
/// 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.
///
///
public int PredictiveScalingMaxCapacityBuffer
{
get { return this._predictiveScalingMaxCapacityBuffer.GetValueOrDefault(); }
set { this._predictiveScalingMaxCapacityBuffer = value; }
}
// Check to see if PredictiveScalingMaxCapacityBuffer property is set
internal bool IsSetPredictiveScalingMaxCapacityBuffer()
{
return this._predictiveScalingMaxCapacityBuffer.HasValue;
}
///
/// Gets and sets the property PredictiveScalingMode.
///
/// 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.
///
///
public PredictiveScalingMode PredictiveScalingMode
{
get { return this._predictiveScalingMode; }
set { this._predictiveScalingMode = value; }
}
// Check to see if PredictiveScalingMode property is set
internal bool IsSetPredictiveScalingMode()
{
return this._predictiveScalingMode != null;
}
///
/// Gets and sets the property 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
.
///
///
///
[AWSProperty(Required=true, Min=1, Max=1600)]
public string ResourceId
{
get { return this._resourceId; }
set { this._resourceId = value; }
}
// Check to see if ResourceId property is set
internal bool IsSetResourceId()
{
return this._resourceId != null;
}
///
/// Gets and sets the property ScalableDimension.
///
/// The scalable dimension associated with the resource.
///
/// -
///
///
autoscaling:autoScalingGroup:DesiredCapacity
- The desired capacity
/// of an Auto Scaling group.
///
/// -
///
///
ecs:service:DesiredCount
- The desired task count of an ECS service.
///
/// -
///
///
ec2:spot-fleet-request:TargetCapacity
- The target capacity of a Spot
/// Fleet request.
///
/// -
///
///
dynamodb:table:ReadCapacityUnits
- The provisioned read capacity for
/// a DynamoDB table.
///
/// -
///
///
dynamodb:table:WriteCapacityUnits
- The provisioned write capacity for
/// a DynamoDB table.
///
/// -
///
///
dynamodb:index:ReadCapacityUnits
- The provisioned read capacity for
/// a DynamoDB global secondary index.
///
/// -
///
///
dynamodb:index:WriteCapacityUnits
- The provisioned write capacity for
/// a DynamoDB global secondary index.
///
/// -
///
///
rds:cluster:ReadReplicaCount
- The count of Aurora Replicas in an Aurora
/// DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible
/// edition.
///
///
///
[AWSProperty(Required=true)]
public ScalableDimension ScalableDimension
{
get { return this._scalableDimension; }
set { this._scalableDimension = value; }
}
// Check to see if ScalableDimension property is set
internal bool IsSetScalableDimension()
{
return this._scalableDimension != null;
}
///
/// Gets and sets the property ScalingPolicyUpdateBehavior.
///
/// 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.
///
///
public ScalingPolicyUpdateBehavior ScalingPolicyUpdateBehavior
{
get { return this._scalingPolicyUpdateBehavior; }
set { this._scalingPolicyUpdateBehavior = value; }
}
// Check to see if ScalingPolicyUpdateBehavior property is set
internal bool IsSetScalingPolicyUpdateBehavior()
{
return this._scalingPolicyUpdateBehavior != null;
}
///
/// Gets and sets the property ScheduledActionBufferTime.
///
/// 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.
///
///
[AWSProperty(Min=0)]
public int ScheduledActionBufferTime
{
get { return this._scheduledActionBufferTime.GetValueOrDefault(); }
set { this._scheduledActionBufferTime = value; }
}
// Check to see if ScheduledActionBufferTime property is set
internal bool IsSetScheduledActionBufferTime()
{
return this._scheduledActionBufferTime.HasValue;
}
///
/// Gets and sets the property ServiceNamespace.
///
/// The namespace of the AWS service.
///
///
[AWSProperty(Required=true)]
public ServiceNamespace ServiceNamespace
{
get { return this._serviceNamespace; }
set { this._serviceNamespace = value; }
}
// Check to see if ServiceNamespace property is set
internal bool IsSetServiceNamespace()
{
return this._serviceNamespace != null;
}
///
/// Gets and sets the property TargetTrackingConfigurations.
///
/// The target tracking configurations (up to 10). Each of these structures must specify
/// a unique scaling metric and a target value for the metric.
///
///
[AWSProperty(Required=true)]
public List TargetTrackingConfigurations
{
get { return this._targetTrackingConfigurations; }
set { this._targetTrackingConfigurations = value; }
}
// Check to see if TargetTrackingConfigurations property is set
internal bool IsSetTargetTrackingConfigurations()
{
return this._targetTrackingConfigurations != null && this._targetTrackingConfigurations.Count > 0;
}
}
}