/* * 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; } } }