/** * 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 namespace Aws { namespace AutoScaling { namespace Model { /** */ class AWS_AUTOSCALING_API UpdateAutoScalingGroupRequest : public AutoScalingRequest { public: UpdateAutoScalingGroupRequest(); // 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 "UpdateAutoScalingGroup"; } Aws::String SerializePayload() const override; protected: void DumpBodyToUrl(Aws::Http::URI& uri ) const override; public: /** *

The name of the Auto Scaling group.

*/ inline const Aws::String& GetAutoScalingGroupName() const{ return m_autoScalingGroupName; } /** *

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the Auto Scaling group.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

*/ inline const Aws::String& GetLaunchConfigurationName() const{ return m_launchConfigurationName; } /** *

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The name of the launch configuration. If you specify * LaunchConfigurationName in your update request, you can't specify * LaunchTemplate or MixedInstancesPolicy.

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

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

*/ inline const LaunchTemplateSpecification& GetLaunchTemplate() const{ return m_launchTemplate; } /** *

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

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

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

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

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

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

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

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

The launch template and version to use to specify the updates. If you specify * LaunchTemplate in your update request, you can't specify * LaunchConfigurationName or MixedInstancesPolicy.

*

For more information, see LaunchTemplateSpecification * in the Amazon EC2 Auto Scaling API Reference.

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

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and 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; } /** *

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and 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; } /** *

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and 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; } /** *

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and 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); } /** *

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and Auto * Scaling Groups with Multiple Instance Types and Purchase Options in the * Amazon EC2 Auto Scaling User Guide.

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

An embedded object that specifies a mixed instances policy.

In your * call to UpdateAutoScalingGroup, you can make changes to the policy * that is specified. All optional parameters are left unchanged if not * specified.

For more information, see MixedInstancesPolicy * in the Amazon EC2 Auto Scaling API Reference and Auto * Scaling Groups with Multiple Instance Types and Purchase Options in the * Amazon EC2 Auto Scaling User Guide.

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

The minimum size of the Auto Scaling group.

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

The minimum size of the Auto Scaling group.

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

The minimum size of the Auto Scaling group.

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

The minimum size of the Auto Scaling group.

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

The maximum size of the Auto Scaling group.

With a mixed * instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need * to go above MaxSize to meet your capacity requirements. In this * event, Amazon EC2 Auto Scaling will never go above MaxSize by more * than your largest instance weight (weights that define how many units each * instance contributes to the desired capacity of the group).

*/ inline int GetMaxSize() const{ return m_maxSize; } /** *

The maximum size of the Auto Scaling group.

With a mixed * instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need * to go above MaxSize to meet your capacity requirements. In this * event, Amazon EC2 Auto Scaling will never go above MaxSize by more * than your largest instance weight (weights that define how many units each * instance contributes to the desired capacity of the group).

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

The maximum size of the Auto Scaling group.

With a mixed * instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need * to go above MaxSize to meet your capacity requirements. In this * event, Amazon EC2 Auto Scaling will never go above MaxSize by more * than your largest instance weight (weights that define how many units each * instance contributes to the desired capacity of the group).

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

The maximum size of the Auto Scaling group.

With a mixed * instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need * to go above MaxSize to meet your capacity requirements. In this * event, Amazon EC2 Auto Scaling will never go above MaxSize by more * than your largest instance weight (weights that define how many units each * instance contributes to the desired capacity of the group).

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

The desired capacity is the initial capacity of the Auto Scaling group after * this operation completes and the capacity it attempts to maintain.

This * number must be greater than or equal to the minimum size of the group and less * than or equal to the maximum size of the group.

*/ inline int GetDesiredCapacity() const{ return m_desiredCapacity; } /** *

The desired capacity is the initial capacity of the Auto Scaling group after * this operation completes and the capacity it attempts to maintain.

This * number must be greater than or equal to the minimum size of the group and less * than or equal to the maximum size of the group.

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

The desired capacity is the initial capacity of the Auto Scaling group after * this operation completes and the capacity it attempts to maintain.

This * number must be greater than or equal to the minimum size of the group and less * than or equal to the maximum size of the group.

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

The desired capacity is the initial capacity of the Auto Scaling group after * this operation completes and the capacity it attempts to maintain.

This * number must be greater than or equal to the minimum size of the group and less * than or equal to the maximum size of the group.

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

The amount of time, in seconds, after a scaling activity completes before * another scaling activity can start. The default value is 300.

*

This setting applies when using simple scaling policies, but not when using * other scaling policies or scheduled scaling. For more information, see Scaling * Cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User * Guide.

*/ inline int GetDefaultCooldown() const{ return m_defaultCooldown; } /** *

The amount of time, in seconds, after a scaling activity completes before * another scaling activity can start. The default value is 300.

*

This setting applies when using simple scaling policies, but not when using * other scaling policies or scheduled scaling. For more information, see Scaling * Cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User * Guide.

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

The amount of time, in seconds, after a scaling activity completes before * another scaling activity can start. The default value is 300.

*

This setting applies when using simple scaling policies, but not when using * other scaling policies or scheduled scaling. For more information, see Scaling * Cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User * Guide.

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

The amount of time, in seconds, after a scaling activity completes before * another scaling activity can start. The default value is 300.

*

This setting applies when using simple scaling policies, but not when using * other scaling policies or scheduled scaling. For more information, see Scaling * Cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User * Guide.

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

One or more Availability Zones for the group.

*/ inline const Aws::Vector& GetAvailabilityZones() const{ return m_availabilityZones; } /** *

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

One or more Availability Zones for the group.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

*/ inline const Aws::String& GetHealthCheckType() const{ return m_healthCheckType; } /** *

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

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

The service to use for the health checks. The valid values are * EC2 and ELB. If you configure an Auto Scaling group to * use ELB health checks, it considers the instance unhealthy if it fails either * the EC2 status checks or the load balancer health checks.

*/ inline UpdateAutoScalingGroupRequest& 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. The * default value is 0.

For more information, see Health * Check Grace Period in the Amazon EC2 Auto Scaling User Guide.

*

Required if you are adding an ELB health check.

*/ 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. The * default value is 0.

For more information, see Health * Check Grace Period in the Amazon EC2 Auto Scaling User Guide.

*

Required if you are adding an ELB health check.

*/ 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. The * default value is 0.

For more information, see Health * Check Grace Period in the Amazon EC2 Auto Scaling User Guide.

*

Required if you are adding an ELB health check.

*/ 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. The * default value is 0.

For more information, see Health * Check Grace Period in the Amazon EC2 Auto Scaling User Guide.

*

Required if you are adding an ELB health check.

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

The name of the placement group into which to launch your instances, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

*/ inline const Aws::String& GetPlacementGroup() const{ return m_placementGroup; } /** *

The name of the placement group into which to launch your instances, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

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

The name of the placement group into which to launch your instances, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

*/ 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, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

*/ 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, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

*/ 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, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

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

The name of the placement group into which to launch your instances, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

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

The name of the placement group into which to launch your instances, if any. * A placement group is a logical grouping of instances within a single * Availability Zone. You cannot specify multiple Availability Zones and a * placement group. For more information, see Placement * Groups in the Amazon EC2 User Guide for Linux Instances.

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

A comma-separated list of subnet IDs for virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * must reside in those Availability Zones.

*/ inline const Aws::String& GetVPCZoneIdentifier() const{ return m_vPCZoneIdentifier; } /** *

A comma-separated list of subnet IDs for virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * must reside in those Availability Zones.

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

A comma-separated list of subnet IDs for virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * 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 virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * 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 virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * 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 virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * must reside in those Availability Zones.

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

A comma-separated list of subnet IDs for virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * must reside in those Availability Zones.

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

A comma-separated list of subnet IDs for virtual private cloud (VPC).

*

If you specify VPCZoneIdentifier with * AvailabilityZones, the subnets that you specify for this parameter * must reside in those Availability Zones.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

*/ inline const Aws::Vector& GetTerminationPolicies() const{ return m_terminationPolicies; } /** *

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

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

A standalone termination policy or a list of termination policies used to * select the instance to terminate. The policies are executed in the order that * they are listed.

For more information, see Controlling * Which Instances Auto Scaling Terminates During Scale In in the Amazon EC2 * Auto Scaling User Guide.

*/ inline UpdateAutoScalingGroupRequest& 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 Instance * 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 Instance * 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 Instance * 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 Instance * Protection in the Amazon EC2 Auto Scaling User Guide.

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

The Amazon Resource Name (ARN) of the service-linked role that the Auto * Scaling group uses to call other AWS services on your behalf. 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 AWS services on your behalf. 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 AWS services on your behalf. 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 AWS services on your behalf. 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 AWS services on your behalf. 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 AWS services on your behalf. For more * information, see Service-Linked * Roles in the Amazon EC2 Auto Scaling User Guide.

*/ inline UpdateAutoScalingGroupRequest& 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 AWS services on your behalf. For more * information, see Service-Linked * Roles in the Amazon EC2 Auto Scaling User Guide.

*/ inline UpdateAutoScalingGroupRequest& 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 AWS services on your behalf. For more * information, see Service-Linked * Roles in the Amazon EC2 Auto Scaling User Guide.

*/ inline UpdateAutoScalingGroupRequest& 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.

This parameter is optional, but if you specify a * value for it, you must specify a value of at least 604,800 seconds (7 days). To * clear a previously set value, specify a new value of 0.

For more * information, see Replacing * Auto Scaling Instances Based on Maximum Instance Lifetime in the Amazon * EC2 Auto Scaling User Guide.

Valid Range: Minimum value of 0.

*/ 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.

This parameter is optional, but if you specify a * value for it, you must specify a value of at least 604,800 seconds (7 days). To * clear a previously set value, specify a new value of 0.

For more * information, see Replacing * Auto Scaling Instances Based on Maximum Instance Lifetime in the Amazon * EC2 Auto Scaling User Guide.

Valid Range: Minimum value of 0.

*/ 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.

This parameter is optional, but if you specify a * value for it, you must specify a value of at least 604,800 seconds (7 days). To * clear a previously set value, specify a new value of 0.

For more * information, see Replacing * Auto Scaling Instances Based on Maximum Instance Lifetime in the Amazon * EC2 Auto Scaling User Guide.

Valid Range: Minimum value of 0.

*/ 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.

This parameter is optional, but if you specify a * value for it, you must specify a value of at least 604,800 seconds (7 days). To * clear a previously set value, specify a new value of 0.

For more * information, see Replacing * Auto Scaling Instances Based on Maximum Instance Lifetime in the Amazon * EC2 Auto Scaling User Guide.

Valid Range: Minimum value of 0.

*/ inline UpdateAutoScalingGroupRequest& WithMaxInstanceLifetime(int value) { SetMaxInstanceLifetime(value); return *this;} private: Aws::String m_autoScalingGroupName; bool m_autoScalingGroupNameHasBeenSet; Aws::String m_launchConfigurationName; bool m_launchConfigurationNameHasBeenSet; LaunchTemplateSpecification m_launchTemplate; bool m_launchTemplateHasBeenSet; MixedInstancesPolicy m_mixedInstancesPolicy; bool m_mixedInstancesPolicyHasBeenSet; int m_minSize; bool m_minSizeHasBeenSet; int m_maxSize; bool m_maxSizeHasBeenSet; int m_desiredCapacity; bool m_desiredCapacityHasBeenSet; int m_defaultCooldown; bool m_defaultCooldownHasBeenSet; Aws::Vector m_availabilityZones; bool m_availabilityZonesHasBeenSet; Aws::String m_healthCheckType; bool m_healthCheckTypeHasBeenSet; int m_healthCheckGracePeriod; bool m_healthCheckGracePeriodHasBeenSet; Aws::String m_placementGroup; bool m_placementGroupHasBeenSet; Aws::String m_vPCZoneIdentifier; bool m_vPCZoneIdentifierHasBeenSet; Aws::Vector m_terminationPolicies; bool m_terminationPoliciesHasBeenSet; bool m_newInstancesProtectedFromScaleIn; bool m_newInstancesProtectedFromScaleInHasBeenSet; Aws::String m_serviceLinkedRoleARN; bool m_serviceLinkedRoleARNHasBeenSet; int m_maxInstanceLifetime; bool m_maxInstanceLifetimeHasBeenSet; }; } // namespace Model } // namespace AutoScaling } // namespace Aws