/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace AutoScaling { namespace Model { /** */ class CreateAutoScalingGroupRequest : public AutoScalingRequest { public: AWS_AUTOSCALING_API CreateAutoScalingGroupRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateAutoScalingGroup"; } AWS_AUTOSCALING_API Aws::String SerializePayload() const override; protected: AWS_AUTOSCALING_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override; public: /** *

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.

*/ inline const Aws::String& GetAutoScalingGroupName() const{ return m_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.

*/ inline bool AutoScalingGroupNameHasBeenSet() const { return m_autoScalingGroupNameHasBeenSet; } /** *

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.

*/ inline void SetAutoScalingGroupName(const Aws::String& value) { m_autoScalingGroupNameHasBeenSet = true; m_autoScalingGroupName = value; } /** *

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.

*/ inline void SetAutoScalingGroupName(Aws::String&& value) { m_autoScalingGroupNameHasBeenSet = true; m_autoScalingGroupName = std::move(value); } /** *

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.

*/ inline void SetAutoScalingGroupName(const char* value) { m_autoScalingGroupNameHasBeenSet = true; m_autoScalingGroupName.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithAutoScalingGroupName(const Aws::String& value) { SetAutoScalingGroupName(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithAutoScalingGroupName(Aws::String&& value) { SetAutoScalingGroupName(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithAutoScalingGroupName(const char* value) { SetAutoScalingGroupName(value); return *this;} /** *

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

*/ inline const Aws::String& GetLaunchConfigurationName() const{ return m_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).

*/ inline bool LaunchConfigurationNameHasBeenSet() const { return m_launchConfigurationNameHasBeenSet; } /** *

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

*/ inline void SetLaunchConfigurationName(const Aws::String& value) { m_launchConfigurationNameHasBeenSet = true; m_launchConfigurationName = value; } /** *

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

*/ inline void SetLaunchConfigurationName(Aws::String&& value) { m_launchConfigurationNameHasBeenSet = true; m_launchConfigurationName = std::move(value); } /** *

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

*/ inline void SetLaunchConfigurationName(const char* value) { m_launchConfigurationNameHasBeenSet = true; m_launchConfigurationName.assign(value); } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithLaunchConfigurationName(const Aws::String& value) { SetLaunchConfigurationName(value); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& WithLaunchConfigurationName(Aws::String&& value) { SetLaunchConfigurationName(std::move(value)); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& WithLaunchConfigurationName(const char* value) { SetLaunchConfigurationName(value); return *this;} /** *

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.

*/ inline const LaunchTemplateSpecification& GetLaunchTemplate() const{ return m_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.

*/ inline bool LaunchTemplateHasBeenSet() const { return m_launchTemplateHasBeenSet; } /** *

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.

*/ inline void SetLaunchTemplate(const LaunchTemplateSpecification& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = value; } /** *

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.

*/ inline void SetLaunchTemplate(LaunchTemplateSpecification&& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithLaunchTemplate(const LaunchTemplateSpecification& value) { SetLaunchTemplate(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithLaunchTemplate(LaunchTemplateSpecification&& value) { SetLaunchTemplate(std::move(value)); return *this;} /** *

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.

*/ inline const MixedInstancesPolicy& GetMixedInstancesPolicy() const{ return m_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.

*/ inline bool MixedInstancesPolicyHasBeenSet() const { return m_mixedInstancesPolicyHasBeenSet; } /** *

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.

*/ inline void SetMixedInstancesPolicy(const MixedInstancesPolicy& value) { m_mixedInstancesPolicyHasBeenSet = true; m_mixedInstancesPolicy = value; } /** *

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.

*/ inline void SetMixedInstancesPolicy(MixedInstancesPolicy&& value) { m_mixedInstancesPolicyHasBeenSet = true; m_mixedInstancesPolicy = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithMixedInstancesPolicy(const MixedInstancesPolicy& value) { SetMixedInstancesPolicy(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithMixedInstancesPolicy(MixedInstancesPolicy&& value) { SetMixedInstancesPolicy(std::move(value)); return *this;} /** *

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.

*/ inline const Aws::String& GetInstanceId() const{ return m_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.

*/ inline bool InstanceIdHasBeenSet() const { return m_instanceIdHasBeenSet; } /** *

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.

*/ inline void SetInstanceId(const Aws::String& value) { m_instanceIdHasBeenSet = true; m_instanceId = value; } /** *

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.

*/ inline void SetInstanceId(Aws::String&& value) { m_instanceIdHasBeenSet = true; m_instanceId = std::move(value); } /** *

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.

*/ inline void SetInstanceId(const char* value) { m_instanceIdHasBeenSet = true; m_instanceId.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithInstanceId(const Aws::String& value) { SetInstanceId(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithInstanceId(Aws::String&& value) { SetInstanceId(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithInstanceId(const char* value) { SetInstanceId(value); return *this;} /** *

The minimum size of the group.

*/ inline int GetMinSize() const{ return m_minSize; } /** *

The minimum size of the group.

*/ inline bool MinSizeHasBeenSet() const { return m_minSizeHasBeenSet; } /** *

The minimum size of the group.

*/ inline void SetMinSize(int value) { m_minSizeHasBeenSet = true; m_minSize = value; } /** *

The minimum size of the group.

*/ inline CreateAutoScalingGroupRequest& WithMinSize(int value) { SetMinSize(value); return *this;} /** *

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

*/ inline int GetMaxSize() const{ return m_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).

*/ inline bool MaxSizeHasBeenSet() const { return m_maxSizeHasBeenSet; } /** *

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

*/ inline void SetMaxSize(int value) { m_maxSizeHasBeenSet = true; m_maxSize = value; } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithMaxSize(int value) { SetMaxSize(value); return *this;} /** *

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.

*/ inline int GetDesiredCapacity() const{ return m_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.

*/ inline bool DesiredCapacityHasBeenSet() const { return m_desiredCapacityHasBeenSet; } /** *

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.

*/ inline void SetDesiredCapacity(int value) { m_desiredCapacityHasBeenSet = true; m_desiredCapacity = value; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithDesiredCapacity(int value) { SetDesiredCapacity(value); return *this;} /** *

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

*/ inline int GetDefaultCooldown() const{ return m_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

*/ inline bool DefaultCooldownHasBeenSet() const { return m_defaultCooldownHasBeenSet; } /** *

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

*/ inline void SetDefaultCooldown(int value) { m_defaultCooldownHasBeenSet = true; m_defaultCooldown = value; } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithDefaultCooldown(int value) { SetDefaultCooldown(value); return *this;} /** *

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.

*/ inline const Aws::Vector& GetAvailabilityZones() const{ return m_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.

*/ inline bool AvailabilityZonesHasBeenSet() const { return m_availabilityZonesHasBeenSet; } /** *

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.

*/ inline void SetAvailabilityZones(const Aws::Vector& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones = value; } /** *

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.

*/ inline void SetAvailabilityZones(Aws::Vector&& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithAvailabilityZones(const Aws::Vector& value) { SetAvailabilityZones(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithAvailabilityZones(Aws::Vector&& value) { SetAvailabilityZones(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddAvailabilityZones(const Aws::String& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(value); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddAvailabilityZones(Aws::String&& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(std::move(value)); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddAvailabilityZones(const char* value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(value); return *this; } /** *

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.

*/ inline const Aws::Vector& GetLoadBalancerNames() const{ return m_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.

*/ inline bool LoadBalancerNamesHasBeenSet() const { return m_loadBalancerNamesHasBeenSet; } /** *

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.

*/ inline void SetLoadBalancerNames(const Aws::Vector& value) { m_loadBalancerNamesHasBeenSet = true; m_loadBalancerNames = value; } /** *

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.

*/ inline void SetLoadBalancerNames(Aws::Vector&& value) { m_loadBalancerNamesHasBeenSet = true; m_loadBalancerNames = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithLoadBalancerNames(const Aws::Vector& value) { SetLoadBalancerNames(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithLoadBalancerNames(Aws::Vector&& value) { SetLoadBalancerNames(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddLoadBalancerNames(const Aws::String& value) { m_loadBalancerNamesHasBeenSet = true; m_loadBalancerNames.push_back(value); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddLoadBalancerNames(Aws::String&& value) { m_loadBalancerNamesHasBeenSet = true; m_loadBalancerNames.push_back(std::move(value)); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddLoadBalancerNames(const char* value) { m_loadBalancerNamesHasBeenSet = true; m_loadBalancerNames.push_back(value); return *this; } /** *

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.

*/ inline const Aws::Vector& GetTargetGroupARNs() const{ return m_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.

*/ inline bool TargetGroupARNsHasBeenSet() const { return m_targetGroupARNsHasBeenSet; } /** *

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.

*/ inline void SetTargetGroupARNs(const Aws::Vector& value) { m_targetGroupARNsHasBeenSet = true; m_targetGroupARNs = value; } /** *

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.

*/ inline void SetTargetGroupARNs(Aws::Vector&& value) { m_targetGroupARNsHasBeenSet = true; m_targetGroupARNs = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTargetGroupARNs(const Aws::Vector& value) { SetTargetGroupARNs(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTargetGroupARNs(Aws::Vector&& value) { SetTargetGroupARNs(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTargetGroupARNs(const Aws::String& value) { m_targetGroupARNsHasBeenSet = true; m_targetGroupARNs.push_back(value); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTargetGroupARNs(Aws::String&& value) { m_targetGroupARNsHasBeenSet = true; m_targetGroupARNs.push_back(std::move(value)); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTargetGroupARNs(const char* value) { m_targetGroupARNsHasBeenSet = true; m_targetGroupARNs.push_back(value); return *this; } /** *

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.

*/ inline const Aws::String& GetHealthCheckType() const{ return m_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.

*/ inline bool HealthCheckTypeHasBeenSet() const { return m_healthCheckTypeHasBeenSet; } /** *

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.

*/ inline void SetHealthCheckType(const Aws::String& value) { m_healthCheckTypeHasBeenSet = true; m_healthCheckType = value; } /** *

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.

*/ inline void SetHealthCheckType(Aws::String&& value) { m_healthCheckTypeHasBeenSet = true; m_healthCheckType = std::move(value); } /** *

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.

*/ inline void SetHealthCheckType(const char* value) { m_healthCheckTypeHasBeenSet = true; m_healthCheckType.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithHealthCheckType(const Aws::String& value) { SetHealthCheckType(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithHealthCheckType(Aws::String&& value) { SetHealthCheckType(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithHealthCheckType(const char* value) { SetHealthCheckType(value); return *this;} /** *

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

*/ inline int GetHealthCheckGracePeriod() const{ return m_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

*/ inline bool HealthCheckGracePeriodHasBeenSet() const { return m_healthCheckGracePeriodHasBeenSet; } /** *

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

*/ inline void SetHealthCheckGracePeriod(int value) { m_healthCheckGracePeriodHasBeenSet = true; m_healthCheckGracePeriod = value; } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithHealthCheckGracePeriod(int value) { SetHealthCheckGracePeriod(value); return *this;} /** *

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.

*/ inline const Aws::String& GetPlacementGroup() const{ return m_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.

*/ inline bool PlacementGroupHasBeenSet() const { return m_placementGroupHasBeenSet; } /** *

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.

*/ inline void SetPlacementGroup(const Aws::String& value) { m_placementGroupHasBeenSet = true; m_placementGroup = value; } /** *

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.

*/ inline void SetPlacementGroup(Aws::String&& value) { m_placementGroupHasBeenSet = true; m_placementGroup = std::move(value); } /** *

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.

*/ inline void SetPlacementGroup(const char* value) { m_placementGroupHasBeenSet = true; m_placementGroup.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithPlacementGroup(const Aws::String& value) { SetPlacementGroup(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithPlacementGroup(Aws::String&& value) { SetPlacementGroup(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithPlacementGroup(const char* value) { SetPlacementGroup(value); return *this;} /** *

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.

*/ inline const Aws::String& GetVPCZoneIdentifier() const{ return m_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.

*/ inline bool VPCZoneIdentifierHasBeenSet() const { return m_vPCZoneIdentifierHasBeenSet; } /** *

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.

*/ inline void SetVPCZoneIdentifier(const Aws::String& value) { m_vPCZoneIdentifierHasBeenSet = true; m_vPCZoneIdentifier = value; } /** *

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.

*/ inline void SetVPCZoneIdentifier(Aws::String&& value) { m_vPCZoneIdentifierHasBeenSet = true; m_vPCZoneIdentifier = std::move(value); } /** *

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.

*/ inline void SetVPCZoneIdentifier(const char* value) { m_vPCZoneIdentifierHasBeenSet = true; m_vPCZoneIdentifier.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithVPCZoneIdentifier(const Aws::String& value) { SetVPCZoneIdentifier(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithVPCZoneIdentifier(Aws::String&& value) { SetVPCZoneIdentifier(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithVPCZoneIdentifier(const char* value) { SetVPCZoneIdentifier(value); return *this;} /** *

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

*/ inline const Aws::Vector& GetTerminationPolicies() const{ return m_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

*/ inline bool TerminationPoliciesHasBeenSet() const { return m_terminationPoliciesHasBeenSet; } /** *

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

*/ inline void SetTerminationPolicies(const Aws::Vector& value) { m_terminationPoliciesHasBeenSet = true; m_terminationPolicies = value; } /** *

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

*/ inline void SetTerminationPolicies(Aws::Vector&& value) { m_terminationPoliciesHasBeenSet = true; m_terminationPolicies = std::move(value); } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithTerminationPolicies(const Aws::Vector& value) { SetTerminationPolicies(value); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& WithTerminationPolicies(Aws::Vector&& value) { SetTerminationPolicies(std::move(value)); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& AddTerminationPolicies(const Aws::String& value) { m_terminationPoliciesHasBeenSet = true; m_terminationPolicies.push_back(value); return *this; } /** *

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

*/ inline CreateAutoScalingGroupRequest& AddTerminationPolicies(Aws::String&& value) { m_terminationPoliciesHasBeenSet = true; m_terminationPolicies.push_back(std::move(value)); return *this; } /** *

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

*/ inline CreateAutoScalingGroupRequest& AddTerminationPolicies(const char* value) { m_terminationPoliciesHasBeenSet = true; m_terminationPolicies.push_back(value); return *this; } /** *

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.

*/ inline bool GetNewInstancesProtectedFromScaleIn() const{ return m_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.

*/ inline bool NewInstancesProtectedFromScaleInHasBeenSet() const { return m_newInstancesProtectedFromScaleInHasBeenSet; } /** *

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.

*/ inline void SetNewInstancesProtectedFromScaleIn(bool value) { m_newInstancesProtectedFromScaleInHasBeenSet = true; m_newInstancesProtectedFromScaleIn = value; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithNewInstancesProtectedFromScaleIn(bool value) { SetNewInstancesProtectedFromScaleIn(value); return *this;} /** *

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.

*/ inline bool GetCapacityRebalance() const{ return m_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.

*/ inline bool CapacityRebalanceHasBeenSet() const { return m_capacityRebalanceHasBeenSet; } /** *

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.

*/ inline void SetCapacityRebalance(bool value) { m_capacityRebalanceHasBeenSet = true; m_capacityRebalance = value; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithCapacityRebalance(bool value) { SetCapacityRebalance(value); return *this;} /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline const Aws::Vector& GetLifecycleHookSpecificationList() const{ return m_lifecycleHookSpecificationList; } /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline bool LifecycleHookSpecificationListHasBeenSet() const { return m_lifecycleHookSpecificationListHasBeenSet; } /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline void SetLifecycleHookSpecificationList(const Aws::Vector& value) { m_lifecycleHookSpecificationListHasBeenSet = true; m_lifecycleHookSpecificationList = value; } /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline void SetLifecycleHookSpecificationList(Aws::Vector&& value) { m_lifecycleHookSpecificationListHasBeenSet = true; m_lifecycleHookSpecificationList = std::move(value); } /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline CreateAutoScalingGroupRequest& WithLifecycleHookSpecificationList(const Aws::Vector& value) { SetLifecycleHookSpecificationList(value); return *this;} /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline CreateAutoScalingGroupRequest& WithLifecycleHookSpecificationList(Aws::Vector&& value) { SetLifecycleHookSpecificationList(std::move(value)); return *this;} /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline CreateAutoScalingGroupRequest& AddLifecycleHookSpecificationList(const LifecycleHookSpecification& value) { m_lifecycleHookSpecificationListHasBeenSet = true; m_lifecycleHookSpecificationList.push_back(value); return *this; } /** *

One or more lifecycle hooks to add to the Auto Scaling group before instances * are launched.

*/ inline CreateAutoScalingGroupRequest& AddLifecycleHookSpecificationList(LifecycleHookSpecification&& value) { m_lifecycleHookSpecificationListHasBeenSet = true; m_lifecycleHookSpecificationList.push_back(std::move(value)); return *this; } /** *

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.

*/ inline const Aws::Vector& GetTags() const{ return m_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.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

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.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

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.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

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.

*/ inline const Aws::String& GetServiceLinkedRoleARN() const{ return m_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.

*/ inline bool ServiceLinkedRoleARNHasBeenSet() const { return m_serviceLinkedRoleARNHasBeenSet; } /** *

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.

*/ inline void SetServiceLinkedRoleARN(const Aws::String& value) { m_serviceLinkedRoleARNHasBeenSet = true; m_serviceLinkedRoleARN = value; } /** *

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.

*/ inline void SetServiceLinkedRoleARN(Aws::String&& value) { m_serviceLinkedRoleARNHasBeenSet = true; m_serviceLinkedRoleARN = std::move(value); } /** *

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.

*/ inline void SetServiceLinkedRoleARN(const char* value) { m_serviceLinkedRoleARNHasBeenSet = true; m_serviceLinkedRoleARN.assign(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithServiceLinkedRoleARN(const Aws::String& value) { SetServiceLinkedRoleARN(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithServiceLinkedRoleARN(Aws::String&& value) { SetServiceLinkedRoleARN(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithServiceLinkedRoleARN(const char* value) { SetServiceLinkedRoleARN(value); return *this;} /** *

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.

*/ inline int GetMaxInstanceLifetime() const{ return m_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.

*/ inline bool MaxInstanceLifetimeHasBeenSet() const { return m_maxInstanceLifetimeHasBeenSet; } /** *

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.

*/ inline void SetMaxInstanceLifetime(int value) { m_maxInstanceLifetimeHasBeenSet = true; m_maxInstanceLifetime = value; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithMaxInstanceLifetime(int value) { SetMaxInstanceLifetime(value); return *this;} /** *

Reserved.

*/ inline const Aws::String& GetContext() const{ return m_context; } /** *

Reserved.

*/ inline bool ContextHasBeenSet() const { return m_contextHasBeenSet; } /** *

Reserved.

*/ inline void SetContext(const Aws::String& value) { m_contextHasBeenSet = true; m_context = value; } /** *

Reserved.

*/ inline void SetContext(Aws::String&& value) { m_contextHasBeenSet = true; m_context = std::move(value); } /** *

Reserved.

*/ inline void SetContext(const char* value) { m_contextHasBeenSet = true; m_context.assign(value); } /** *

Reserved.

*/ inline CreateAutoScalingGroupRequest& WithContext(const Aws::String& value) { SetContext(value); return *this;} /** *

Reserved.

*/ inline CreateAutoScalingGroupRequest& WithContext(Aws::String&& value) { SetContext(std::move(value)); return *this;} /** *

Reserved.

*/ inline CreateAutoScalingGroupRequest& WithContext(const char* value) { SetContext(value); return *this;} /** *

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

*/ inline const Aws::String& GetDesiredCapacityType() const{ return m_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

*/ inline bool DesiredCapacityTypeHasBeenSet() const { return m_desiredCapacityTypeHasBeenSet; } /** *

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

*/ inline void SetDesiredCapacityType(const Aws::String& value) { m_desiredCapacityTypeHasBeenSet = true; m_desiredCapacityType = value; } /** *

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

*/ inline void SetDesiredCapacityType(Aws::String&& value) { m_desiredCapacityTypeHasBeenSet = true; m_desiredCapacityType = std::move(value); } /** *

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

*/ inline void SetDesiredCapacityType(const char* value) { m_desiredCapacityTypeHasBeenSet = true; m_desiredCapacityType.assign(value); } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithDesiredCapacityType(const Aws::String& value) { SetDesiredCapacityType(value); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& WithDesiredCapacityType(Aws::String&& value) { SetDesiredCapacityType(std::move(value)); return *this;} /** *

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

*/ inline CreateAutoScalingGroupRequest& WithDesiredCapacityType(const char* value) { SetDesiredCapacityType(value); return *this;} /** *

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

*/ inline int GetDefaultInstanceWarmup() const{ return m_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

*/ inline bool DefaultInstanceWarmupHasBeenSet() const { return m_defaultInstanceWarmupHasBeenSet; } /** *

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

*/ inline void SetDefaultInstanceWarmup(int value) { m_defaultInstanceWarmupHasBeenSet = true; m_defaultInstanceWarmup = value; } /** *

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

*/ inline CreateAutoScalingGroupRequest& WithDefaultInstanceWarmup(int value) { SetDefaultInstanceWarmup(value); return *this;} /** *

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.

*/ inline const Aws::Vector& GetTrafficSources() const{ return m_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.

*/ inline bool TrafficSourcesHasBeenSet() const { return m_trafficSourcesHasBeenSet; } /** *

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.

*/ inline void SetTrafficSources(const Aws::Vector& value) { m_trafficSourcesHasBeenSet = true; m_trafficSources = value; } /** *

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.

*/ inline void SetTrafficSources(Aws::Vector&& value) { m_trafficSourcesHasBeenSet = true; m_trafficSources = std::move(value); } /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTrafficSources(const Aws::Vector& value) { SetTrafficSources(value); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& WithTrafficSources(Aws::Vector&& value) { SetTrafficSources(std::move(value)); return *this;} /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTrafficSources(const TrafficSourceIdentifier& value) { m_trafficSourcesHasBeenSet = true; m_trafficSources.push_back(value); return *this; } /** *

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.

*/ inline CreateAutoScalingGroupRequest& AddTrafficSources(TrafficSourceIdentifier&& value) { m_trafficSourcesHasBeenSet = true; m_trafficSources.push_back(std::move(value)); return *this; } private: Aws::String m_autoScalingGroupName; bool m_autoScalingGroupNameHasBeenSet = false; Aws::String m_launchConfigurationName; bool m_launchConfigurationNameHasBeenSet = false; LaunchTemplateSpecification m_launchTemplate; bool m_launchTemplateHasBeenSet = false; MixedInstancesPolicy m_mixedInstancesPolicy; bool m_mixedInstancesPolicyHasBeenSet = false; Aws::String m_instanceId; bool m_instanceIdHasBeenSet = false; int m_minSize; bool m_minSizeHasBeenSet = false; int m_maxSize; bool m_maxSizeHasBeenSet = false; int m_desiredCapacity; bool m_desiredCapacityHasBeenSet = false; int m_defaultCooldown; bool m_defaultCooldownHasBeenSet = false; Aws::Vector m_availabilityZones; bool m_availabilityZonesHasBeenSet = false; Aws::Vector m_loadBalancerNames; bool m_loadBalancerNamesHasBeenSet = false; Aws::Vector m_targetGroupARNs; bool m_targetGroupARNsHasBeenSet = false; Aws::String m_healthCheckType; bool m_healthCheckTypeHasBeenSet = false; int m_healthCheckGracePeriod; bool m_healthCheckGracePeriodHasBeenSet = false; Aws::String m_placementGroup; bool m_placementGroupHasBeenSet = false; Aws::String m_vPCZoneIdentifier; bool m_vPCZoneIdentifierHasBeenSet = false; Aws::Vector m_terminationPolicies; bool m_terminationPoliciesHasBeenSet = false; bool m_newInstancesProtectedFromScaleIn; bool m_newInstancesProtectedFromScaleInHasBeenSet = false; bool m_capacityRebalance; bool m_capacityRebalanceHasBeenSet = false; Aws::Vector m_lifecycleHookSpecificationList; bool m_lifecycleHookSpecificationListHasBeenSet = false; Aws::Vector m_tags; bool m_tagsHasBeenSet = false; Aws::String m_serviceLinkedRoleARN; bool m_serviceLinkedRoleARNHasBeenSet = false; int m_maxInstanceLifetime; bool m_maxInstanceLifetimeHasBeenSet = false; Aws::String m_context; bool m_contextHasBeenSet = false; Aws::String m_desiredCapacityType; bool m_desiredCapacityTypeHasBeenSet = false; int m_defaultInstanceWarmup; bool m_defaultInstanceWarmupHasBeenSet = false; Aws::Vector m_trafficSources; bool m_trafficSourcesHasBeenSet = false; }; } // namespace Model } // namespace AutoScaling } // namespace Aws