/*
* 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-2011-01-01.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.AutoScaling.Model
{
///
/// Container for the parameters to the UpdateAutoScalingGroup operation.
/// We strongly recommend that all Auto Scaling groups use launch templates to ensure
/// full functionality for Amazon EC2 Auto Scaling and Amazon EC2.
///
///
///
/// Updates the configuration for the specified Auto Scaling group.
///
///
///
/// To update an Auto Scaling group, specify the name of the group and the property that
/// you want to change. Any properties that you don't specify are not changed by this
/// update request. The new settings take effect on any scaling activities after this
/// call returns.
///
///
///
/// If you associate a new launch configuration or template with an Auto Scaling group,
/// all new instances will get the updated configuration. Existing instances continue
/// to run with the configuration that they were originally launched with. When you update
/// a group to specify a mixed instances policy instead of a launch configuration or template,
/// existing instances may be replaced to match the new purchasing options that you specified
/// in the policy. For example, if the group currently has 100% On-Demand capacity and
/// the policy specifies 50% Spot capacity, this means that half of your instances will
/// be gradually terminated and relaunched as Spot Instances. When replacing instances,
/// Amazon EC2 Auto Scaling launches new instances before terminating the old ones, so
/// that updating your group does not compromise the performance or availability of your
/// application.
///
///
///
/// Note the following about changing DesiredCapacity
, MaxSize
,
/// or MinSize
:
///
/// -
///
/// If a scale-in activity occurs as a result of a new
DesiredCapacity
value
/// that is lower than the current size of the group, the Auto Scaling group uses its
/// termination policy to determine which instances to terminate.
///
/// -
///
/// If you specify a new value for
MinSize
without specifying a value for
/// DesiredCapacity
, and the new MinSize
is larger than the
/// current size of the group, this sets the group's DesiredCapacity
to the
/// new MinSize
value.
///
/// -
///
/// If you specify a new value for
MaxSize
without specifying a value for
/// DesiredCapacity
, and the new MaxSize
is smaller than the
/// current size of the group, this sets the group's DesiredCapacity
to the
/// new MaxSize
value.
///
///
///
/// To see which properties have been set, call the DescribeAutoScalingGroups API.
/// To view the scaling policies for an Auto Scaling group, call the DescribePolicies
/// API. If the group has scaling policies, you can update them by calling the PutScalingPolicy
/// API.
///
///
public partial class UpdateAutoScalingGroupRequest : AmazonAutoScalingRequest
{
private string _autoScalingGroupName;
private List _availabilityZones = new List();
private bool? _capacityRebalance;
private string _context;
private int? _defaultCooldown;
private int? _defaultInstanceWarmup;
private int? _desiredCapacity;
private string _desiredCapacityType;
private int? _healthCheckGracePeriod;
private string _healthCheckType;
private string _launchConfigurationName;
private LaunchTemplateSpecification _launchTemplate;
private int? _maxInstanceLifetime;
private int? _maxSize;
private int? _minSize;
private MixedInstancesPolicy _mixedInstancesPolicy;
private bool? _newInstancesProtectedFromScaleIn;
private string _placementGroup;
private string _serviceLinkedRoleARN;
private List _terminationPolicies = new List();
private string _vpcZoneIdentifier;
///
/// Gets and sets the property AutoScalingGroupName.
///
/// The name of the Auto Scaling group.
///
///
[AWSProperty(Required=true, Min=1, Max=255)]
public string AutoScalingGroupName
{
get { return this._autoScalingGroupName; }
set { this._autoScalingGroupName = value; }
}
// Check to see if AutoScalingGroupName property is set
internal bool IsSetAutoScalingGroupName()
{
return this._autoScalingGroupName != null;
}
///
/// Gets and sets the property AvailabilityZones.
///
/// One or more Availability Zones for the group.
///
///
public List AvailabilityZones
{
get { return this._availabilityZones; }
set { this._availabilityZones = value; }
}
// Check to see if AvailabilityZones property is set
internal bool IsSetAvailabilityZones()
{
return this._availabilityZones != null && this._availabilityZones.Count > 0;
}
///
/// Gets and sets the property CapacityRebalance.
///
/// Enables or disables Capacity Rebalancing. For more information, see Use
/// Capacity Rebalancing to handle Amazon EC2 Spot Interruptions in the Amazon
/// EC2 Auto Scaling User Guide.
///
///
public bool CapacityRebalance
{
get { return this._capacityRebalance.GetValueOrDefault(); }
set { this._capacityRebalance = value; }
}
// Check to see if CapacityRebalance property is set
internal bool IsSetCapacityRebalance()
{
return this._capacityRebalance.HasValue;
}
///
/// Gets and sets the property Context.
///
/// Reserved.
///
///
public string Context
{
get { return this._context; }
set { this._context = value; }
}
// Check to see if Context property is set
internal bool IsSetContext()
{
return this._context != null;
}
///
/// Gets and sets the property DefaultCooldown.
///
/// Only needed if you use simple scaling policies.
///
///
///
/// The amount of time, in seconds, between one scaling activity ending and another one
/// starting due to simple scaling policies. For more information, see Scaling
/// cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
///
///
public int DefaultCooldown
{
get { return this._defaultCooldown.GetValueOrDefault(); }
set { this._defaultCooldown = value; }
}
// Check to see if DefaultCooldown property is set
internal bool IsSetDefaultCooldown()
{
return this._defaultCooldown.HasValue;
}
///
/// Gets and sets the property DefaultInstanceWarmup.
///
/// The amount of time, in seconds, until a new instance is considered to have finished
/// initializing and resource consumption to become stable after it enters the InService
/// state.
///
///
///
/// During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after
/// it replaces an instance before it moves on to replacing the next instance. Amazon
/// EC2 Auto Scaling also waits for the warm-up period before aggregating the metrics
/// for new instances with existing instances in the Amazon CloudWatch metrics that are
/// used for scaling, resulting in more reliable usage data. For more information, see
/// Set
/// the default instance warmup for an Auto Scaling group in the Amazon EC2 Auto
/// Scaling User Guide.
///
///
///
/// To manage various warm-up settings at the group level, we recommend that you set the
/// default instance warmup, even if it is set to 0 seconds. To remove a value
/// that you previously set, include the property but specify -1
for the
/// value. However, we strongly recommend keeping the default instance warmup enabled
/// by specifying a value of 0
or other nominal value.
///
///
///
public int DefaultInstanceWarmup
{
get { return this._defaultInstanceWarmup.GetValueOrDefault(); }
set { this._defaultInstanceWarmup = value; }
}
// Check to see if DefaultInstanceWarmup property is set
internal bool IsSetDefaultInstanceWarmup()
{
return this._defaultInstanceWarmup.HasValue;
}
///
/// Gets and sets the property DesiredCapacity.
///
/// The desired capacity is the initial capacity of the Auto Scaling group after this
/// operation completes and the capacity it attempts to maintain. This number must be
/// greater than or equal to the minimum size of the group and less than or equal to the
/// maximum size of the group.
///
///
public int DesiredCapacity
{
get { return this._desiredCapacity.GetValueOrDefault(); }
set { this._desiredCapacity = value; }
}
// Check to see if DesiredCapacity property is set
internal bool IsSetDesiredCapacity()
{
return this._desiredCapacity.HasValue;
}
///
/// Gets and sets the property DesiredCapacityType.
///
/// The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto
/// Scaling supports DesiredCapacityType
for attribute-based instance type
/// selection only. For more information, see Creating
/// an Auto Scaling group using attribute-based instance type selection in the Amazon
/// EC2 Auto Scaling User Guide.
///
///
///
/// By default, Amazon EC2 Auto Scaling specifies units
, which translates
/// into number of instances.
///
///
///
/// Valid values: units
| vcpu
| memory-mib
///
///
[AWSProperty(Min=1, Max=255)]
public string DesiredCapacityType
{
get { return this._desiredCapacityType; }
set { this._desiredCapacityType = value; }
}
// Check to see if DesiredCapacityType property is set
internal bool IsSetDesiredCapacityType()
{
return this._desiredCapacityType != null;
}
///
/// Gets and sets the property HealthCheckGracePeriod.
///
/// The amount of time, in seconds, that Amazon EC2 Auto Scaling waits before checking
/// the health status of an EC2 instance that has come into service and marking it unhealthy
/// due to a failed health check. This is useful if your instances do not immediately
/// pass their health checks after they enter the InService
state. For more
/// information, see Set
/// the health check grace period for an Auto Scaling group in the Amazon EC2 Auto
/// Scaling User Guide.
///
///
public int HealthCheckGracePeriod
{
get { return this._healthCheckGracePeriod.GetValueOrDefault(); }
set { this._healthCheckGracePeriod = value; }
}
// Check to see if HealthCheckGracePeriod property is set
internal bool IsSetHealthCheckGracePeriod()
{
return this._healthCheckGracePeriod.HasValue;
}
///
/// Gets and sets the property HealthCheckType.
///
/// A comma-separated value string of one or more health check types.
///
///
///
/// The valid values are EC2
, ELB
, and VPC_LATTICE
.
/// EC2
is the default health check and cannot be disabled. For more information,
/// see Health
/// checks for Auto Scaling instances in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// Only specify EC2
if you must clear a value that was previously set.
///
///
[AWSProperty(Min=1, Max=32)]
public string HealthCheckType
{
get { return this._healthCheckType; }
set { this._healthCheckType = value; }
}
// Check to see if HealthCheckType property is set
internal bool IsSetHealthCheckType()
{
return this._healthCheckType != null;
}
///
/// Gets and sets the property LaunchConfigurationName.
///
/// The name of the launch configuration. If you specify LaunchConfigurationName
/// in your update request, you can't specify LaunchTemplate
or MixedInstancesPolicy
.
///
///
[AWSProperty(Min=1, Max=255)]
public string LaunchConfigurationName
{
get { return this._launchConfigurationName; }
set { this._launchConfigurationName = value; }
}
// Check to see if LaunchConfigurationName property is set
internal bool IsSetLaunchConfigurationName()
{
return this._launchConfigurationName != null;
}
///
/// Gets and sets the property LaunchTemplate.
///
/// The launch template and version to use to specify the updates. If you specify LaunchTemplate
/// in your update request, you can't specify LaunchConfigurationName
or
/// MixedInstancesPolicy
.
///
///
public LaunchTemplateSpecification LaunchTemplate
{
get { return this._launchTemplate; }
set { this._launchTemplate = value; }
}
// Check to see if LaunchTemplate property is set
internal bool IsSetLaunchTemplate()
{
return this._launchTemplate != null;
}
///
/// Gets and sets the property MaxInstanceLifetime.
///
/// The maximum amount of time, in seconds, that an instance can be in service. The default
/// is null. If specified, the value must be either 0 or a number equal to or greater
/// than 86,400 seconds (1 day). To clear a previously set value, specify a new value
/// of 0. For more information, see Replacing
/// Auto Scaling instances based on maximum instance lifetime in the Amazon EC2
/// Auto Scaling User Guide.
///
///
public int MaxInstanceLifetime
{
get { return this._maxInstanceLifetime.GetValueOrDefault(); }
set { this._maxInstanceLifetime = value; }
}
// Check to see if MaxInstanceLifetime property is set
internal bool IsSetMaxInstanceLifetime()
{
return this._maxInstanceLifetime.HasValue;
}
///
/// Gets and sets the property MaxSize.
///
/// The maximum size of the Auto Scaling group.
///
///
///
/// With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling
/// may need to go above MaxSize
to meet your capacity requirements. In this
/// event, Amazon EC2 Auto Scaling will never go above MaxSize
by more than
/// your largest instance weight (weights that define how many units each instance contributes
/// to the desired capacity of the group).
///
///
///
public int MaxSize
{
get { return this._maxSize.GetValueOrDefault(); }
set { this._maxSize = value; }
}
// Check to see if MaxSize property is set
internal bool IsSetMaxSize()
{
return this._maxSize.HasValue;
}
///
/// Gets and sets the property MinSize.
///
/// The minimum size of the Auto Scaling group.
///
///
public int MinSize
{
get { return this._minSize.GetValueOrDefault(); }
set { this._minSize = value; }
}
// Check to see if MinSize property is set
internal bool IsSetMinSize()
{
return this._minSize.HasValue;
}
///
/// Gets and sets the property MixedInstancesPolicy.
///
/// The mixed instances policy. For more information, see Auto
/// Scaling groups with multiple instance types and purchase options in the Amazon
/// EC2 Auto Scaling User Guide.
///
///
public MixedInstancesPolicy MixedInstancesPolicy
{
get { return this._mixedInstancesPolicy; }
set { this._mixedInstancesPolicy = value; }
}
// Check to see if MixedInstancesPolicy property is set
internal bool IsSetMixedInstancesPolicy()
{
return this._mixedInstancesPolicy != null;
}
///
/// Gets and sets the property NewInstancesProtectedFromScaleIn.
///
/// Indicates whether newly launched instances are protected from termination by Amazon
/// EC2 Auto Scaling when scaling in. For more information about preventing instances
/// from terminating on scale in, see Using
/// instance scale-in protection in the Amazon EC2 Auto Scaling User Guide.
///
///
public bool NewInstancesProtectedFromScaleIn
{
get { return this._newInstancesProtectedFromScaleIn.GetValueOrDefault(); }
set { this._newInstancesProtectedFromScaleIn = value; }
}
// Check to see if NewInstancesProtectedFromScaleIn property is set
internal bool IsSetNewInstancesProtectedFromScaleIn()
{
return this._newInstancesProtectedFromScaleIn.HasValue;
}
///
/// Gets and sets the property PlacementGroup.
///
/// The name of an existing placement group into which to launch your instances. For more
/// information, see Placement
/// groups in the Amazon EC2 User Guide for Linux Instances.
///
///
///
/// A cluster placement group is a logical grouping of instances within a single
/// Availability Zone. You cannot specify multiple Availability Zones and a cluster placement
/// group.
///
///
///
[AWSProperty(Min=1, Max=255)]
public string PlacementGroup
{
get { return this._placementGroup; }
set { this._placementGroup = value; }
}
// Check to see if PlacementGroup property is set
internal bool IsSetPlacementGroup()
{
return this._placementGroup != null;
}
///
/// Gets and sets the property ServiceLinkedRoleARN.
///
/// The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group
/// uses to call other Amazon Web Services on your behalf. For more information, see Service-linked
/// roles in the Amazon EC2 Auto Scaling User Guide.
///
///
[AWSProperty(Min=1, Max=1600)]
public string ServiceLinkedRoleARN
{
get { return this._serviceLinkedRoleARN; }
set { this._serviceLinkedRoleARN = value; }
}
// Check to see if ServiceLinkedRoleARN property is set
internal bool IsSetServiceLinkedRoleARN()
{
return this._serviceLinkedRoleARN != null;
}
///
/// Gets and sets the property TerminationPolicies.
///
/// A policy or a list of policies that are used to select the instances to terminate.
/// The policies are executed in the order that you list them. For more information, see
/// Work
/// with Amazon EC2 Auto Scaling termination policies in the Amazon EC2 Auto Scaling
/// User Guide.
///
///
///
/// Valid values: Default
| AllocationStrategy
| ClosestToNextInstanceHour
/// | NewestInstance
| OldestInstance
| OldestLaunchConfiguration
/// | OldestLaunchTemplate
| arn:aws:lambda:region:account-id:function:my-function:my-alias
///
///
///
public List TerminationPolicies
{
get { return this._terminationPolicies; }
set { this._terminationPolicies = value; }
}
// Check to see if TerminationPolicies property is set
internal bool IsSetTerminationPolicies()
{
return this._terminationPolicies != null && this._terminationPolicies.Count > 0;
}
///
/// Gets and sets the property VPCZoneIdentifier.
///
/// A comma-separated list of subnet IDs for a virtual private cloud (VPC). If you specify
/// VPCZoneIdentifier
with AvailabilityZones
, the subnets that
/// you specify must reside in those Availability Zones.
///
///
[AWSProperty(Min=1, Max=2047)]
public string VPCZoneIdentifier
{
get { return this._vpcZoneIdentifier; }
set { this._vpcZoneIdentifier = value; }
}
// Check to see if VPCZoneIdentifier property is set
internal bool IsSetVPCZoneIdentifier()
{
return this._vpcZoneIdentifier != null;
}
}
}