/*
* 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 CreateAutoScalingGroup operation.
/// We strongly recommend using a launch template when calling this operation to ensure
/// full functionality for Amazon EC2 Auto Scaling and Amazon EC2.
///
///
///
/// Creates an Auto Scaling group with the specified name and attributes.
///
///
///
/// If you exceed your maximum limit of Auto Scaling groups, the call fails. To query
/// this limit, call the DescribeAccountLimits API. For information about updating
/// this limit, see Quotas
/// for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// For introductory exercises for creating an Auto Scaling group, see Getting
/// started with Amazon EC2 Auto Scaling and Tutorial:
/// Set up a scaled and load-balanced application in the Amazon EC2 Auto Scaling
/// User Guide. For more information, see Auto
/// Scaling groups in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// Every Auto Scaling group has three size properties (DesiredCapacity
,
/// MaxSize
, and MinSize
). Usually, you set these sizes based
/// on a specific number of instances. However, if you configure a mixed instances policy
/// that defines weights for the instance types, you must specify these sizes with the
/// same units that you use for weighting instances.
///
///
public partial class CreateAutoScalingGroupRequest : 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 _instanceId;
private string _launchConfigurationName;
private LaunchTemplateSpecification _launchTemplate;
private List _lifecycleHookSpecificationList = new List();
private List _loadBalancerNames = new List();
private int? _maxInstanceLifetime;
private int? _maxSize;
private int? _minSize;
private MixedInstancesPolicy _mixedInstancesPolicy;
private bool? _newInstancesProtectedFromScaleIn;
private string _placementGroup;
private string _serviceLinkedRoleARN;
private List _tags = new List();
private List _targetGroupARNs = new List();
private List _terminationPolicies = new List();
private List _trafficSources = new List();
private string _vpcZoneIdentifier;
///
/// Gets and sets the property AutoScalingGroupName.
///
/// The name of the Auto Scaling group. This name must be unique per Region per account.
///
///
///
/// The name can contain any ASCII character 33 to 126 including most punctuation characters,
/// digits, and upper and lowercased letters.
///
///
///
/// You cannot use a colon (:) in the name.
///
///
///
[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.
///
/// A list of Availability Zones where instances in the Auto Scaling group can be created.
/// Used for launching into the default VPC subnet in each Availability Zone when not
/// using the VPCZoneIdentifier
property, or for attaching a network interface
/// when an existing network interface ID is specified in a launch template.
///
///
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.
///
/// Indicates whether Capacity Rebalancing is enabled. Otherwise, Capacity Rebalancing
/// is disabled. When you turn on Capacity Rebalancing, Amazon EC2 Auto Scaling attempts
/// to launch a Spot Instance whenever Amazon EC2 notifies that a Spot Instance is at
/// an elevated risk of interruption. After launching a new instance, it then terminates
/// an old instance. For more information, see Use
/// Capacity Rebalancing to handle Amazon EC2 Spot Interruptions in the 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.
///
///
///
/// Default: 300
seconds
///
///
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.
///
///
///
/// Default: None
///
///
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 at the time
/// of its creation and the capacity it attempts to maintain. It can scale beyond this
/// capacity if you configure auto scaling. 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. If you do not specify a desired capacity, the default is the minimum 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.
///
///
///
/// Default: 0
seconds
///
///
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 InstanceId.
///
/// The ID of the instance used to base the launch configuration on. If specified, Amazon
/// EC2 Auto Scaling uses the configuration values from the specified instance to create
/// a new launch configuration. To get the instance ID, use the Amazon EC2 DescribeInstances
/// API operation. For more information, see Creating
/// an Auto Scaling group using an EC2 instance in the Amazon EC2 Auto Scaling
/// User Guide.
///
///
[AWSProperty(Min=1, Max=19)]
public string InstanceId
{
get { return this._instanceId; }
set { this._instanceId = value; }
}
// Check to see if InstanceId property is set
internal bool IsSetInstanceId()
{
return this._instanceId != null;
}
///
/// Gets and sets the property LaunchConfigurationName.
///
/// The name of the launch configuration to use to launch instances.
///
///
///
/// Conditional: You must specify either a launch template (LaunchTemplate
/// or MixedInstancesPolicy
) or a launch configuration (LaunchConfigurationName
/// or InstanceId
).
///
///
[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.
///
/// Information used to specify the launch template and version to use to launch instances.
///
///
///
///
/// Conditional: You must specify either a launch template (LaunchTemplate
/// or MixedInstancesPolicy
) or a launch configuration (LaunchConfigurationName
/// or InstanceId
).
///
///
///
/// The launch template that is specified must be configured for use with an Auto Scaling
/// group. For more information, see Creating
/// a launch template for an Auto Scaling group in the Amazon EC2 Auto Scaling
/// User Guide.
///
///
///
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 LifecycleHookSpecificationList.
///
/// One or more lifecycle hooks to add to the Auto Scaling group before instances are
/// launched.
///
///
public List LifecycleHookSpecificationList
{
get { return this._lifecycleHookSpecificationList; }
set { this._lifecycleHookSpecificationList = value; }
}
// Check to see if LifecycleHookSpecificationList property is set
internal bool IsSetLifecycleHookSpecificationList()
{
return this._lifecycleHookSpecificationList != null && this._lifecycleHookSpecificationList.Count > 0;
}
///
/// Gets and sets the property LoadBalancerNames.
///
/// A list of Classic Load Balancers associated with this Auto Scaling group. For Application
/// Load Balancers, Network Load Balancers, and Gateway Load Balancers, specify the TargetGroupARNs
/// property instead.
///
///
public List LoadBalancerNames
{
get { return this._loadBalancerNames; }
set { this._loadBalancerNames = value; }
}
// Check to see if LoadBalancerNames property is set
internal bool IsSetLoadBalancerNames()
{
return this._loadBalancerNames != null && this._loadBalancerNames.Count > 0;
}
///
/// 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). 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 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).
///
///
///
[AWSProperty(Required=true)]
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 group.
///
///
[AWSProperty(Required=true)]
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 the 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 service on your behalf. By default, Amazon
/// EC2 Auto Scaling uses a service-linked role named AWSServiceRoleForAutoScaling
,
/// which it creates if it does not exist. 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 Tags.
///
/// One or more tags. You can tag your Auto Scaling group and propagate the tags to the
/// Amazon EC2 instances it launches. Tags are not propagated to Amazon EBS volumes. To
/// add tags to Amazon EBS volumes, specify the tags in a launch template but use caution.
/// If the launch template specifies an instance tag with a key that is also specified
/// for the Auto Scaling group, Amazon EC2 Auto Scaling overrides the value of that instance
/// tag with the value specified by the Auto Scaling group. For more information, see
/// Tag
/// Auto Scaling groups and instances in the Amazon EC2 Auto Scaling User Guide.
///
///
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property TargetGroupARNs.
///
/// The Amazon Resource Names (ARN) of the Elastic Load Balancing target groups to associate
/// with the Auto Scaling group. Instances are registered as targets with the target groups.
/// The target groups receive incoming traffic and route requests to one or more registered
/// targets. For more information, see Use
/// Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling
/// group in the Amazon EC2 Auto Scaling User Guide.
///
///
public List TargetGroupARNs
{
get { return this._targetGroupARNs; }
set { this._targetGroupARNs = value; }
}
// Check to see if TargetGroupARNs property is set
internal bool IsSetTargetGroupARNs()
{
return this._targetGroupARNs != null && this._targetGroupARNs.Count > 0;
}
///
/// Gets and sets the property TerminationPolicies.
///
/// A policy or a list of policies that are used to select the instance to terminate.
/// These 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 TrafficSources.
///
/// The list of traffic sources to attach to this Auto Scaling group. You can use any
/// of the following as traffic sources for an Auto Scaling group: Classic Load Balancer,
/// Application Load Balancer, Gateway Load Balancer, Network Load Balancer, and VPC Lattice.
///
///
public List TrafficSources
{
get { return this._trafficSources; }
set { this._trafficSources = value; }
}
// Check to see if TrafficSources property is set
internal bool IsSetTrafficSources()
{
return this._trafficSources != null && this._trafficSources.Count > 0;
}
///
/// Gets and sets the property VPCZoneIdentifier.
///
/// A comma-separated list of subnet IDs for a virtual private cloud (VPC) where instances
/// in the Auto Scaling group can be created. 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;
}
}
}