aws_sdk_autoscaling/operation/update_auto_scaling_group/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::update_auto_scaling_group::_update_auto_scaling_group_output::UpdateAutoScalingGroupOutputBuilder;
3
4pub use crate::operation::update_auto_scaling_group::_update_auto_scaling_group_input::UpdateAutoScalingGroupInputBuilder;
5
6impl crate::operation::update_auto_scaling_group::builders::UpdateAutoScalingGroupInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.update_auto_scaling_group();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `UpdateAutoScalingGroup`.
24///
25/// <p><b>We strongly recommend that all Auto Scaling groups use launch templates to ensure full functionality for Amazon EC2 Auto Scaling and Amazon EC2.</b></p>
26/// <p>Updates the configuration for the specified Auto Scaling group.</p>
27/// <p>To update an Auto Scaling group, specify the name of the group and the property that you want to change. Any properties that you don't specify are not changed by this update request. The new settings take effect on any scaling activities after this call returns.</p>
28/// <p>If you associate a new launch configuration or template with an Auto Scaling group, all new instances will get the updated configuration. Existing instances continue to run with the configuration that they were originally launched with. When you update a group to specify a mixed instances policy instead of a launch configuration or template, existing instances may be replaced to match the new purchasing options that you specified in the policy. For example, if the group currently has 100% On-Demand capacity and the policy specifies 50% Spot capacity, this means that half of your instances will be gradually terminated and relaunched as Spot Instances. When replacing instances, Amazon EC2 Auto Scaling launches new instances before terminating the old ones, so that updating your group does not compromise the performance or availability of your application.</p>
29/// <p>Note the following about changing <code>DesiredCapacity</code>, <code>MaxSize</code>, or <code>MinSize</code>:</p>
30/// <ul>
31/// <li>
32/// <p>If a scale-in activity occurs as a result of a new <code>DesiredCapacity</code> value that is lower than the current size of the group, the Auto Scaling group uses its termination policy to determine which instances to terminate.</p></li>
33/// <li>
34/// <p>If you specify a new value for <code>MinSize</code> without specifying a value for <code>DesiredCapacity</code>, and the new <code>MinSize</code> is larger than the current size of the group, this sets the group's <code>DesiredCapacity</code> to the new <code>MinSize</code> value.</p></li>
35/// <li>
36/// <p>If you specify a new value for <code>MaxSize</code> without specifying a value for <code>DesiredCapacity</code>, and the new <code>MaxSize</code> is smaller than the current size of the group, this sets the group's <code>DesiredCapacity</code> to the new <code>MaxSize</code> value.</p></li>
37/// </ul>
38/// <p>To see which properties have been set, call the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAutoScalingGroups.html">DescribeAutoScalingGroups</a> API. To view the scaling policies for an Auto Scaling group, call the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribePolicies.html">DescribePolicies</a> API. If the group has scaling policies, you can update them by calling the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutScalingPolicy.html">PutScalingPolicy</a> API.</p>
39#[derive(::std::clone::Clone, ::std::fmt::Debug)]
40pub struct UpdateAutoScalingGroupFluentBuilder {
41    handle: ::std::sync::Arc<crate::client::Handle>,
42    inner: crate::operation::update_auto_scaling_group::builders::UpdateAutoScalingGroupInputBuilder,
43    config_override: ::std::option::Option<crate::config::Builder>,
44}
45impl
46    crate::client::customize::internal::CustomizableSend<
47        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupOutput,
48        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupError,
49    > for UpdateAutoScalingGroupFluentBuilder
50{
51    fn send(
52        self,
53        config_override: crate::config::Builder,
54    ) -> crate::client::customize::internal::BoxFuture<
55        crate::client::customize::internal::SendResult<
56            crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupOutput,
57            crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupError,
58        >,
59    > {
60        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
61    }
62}
63impl UpdateAutoScalingGroupFluentBuilder {
64    /// Creates a new `UpdateAutoScalingGroupFluentBuilder`.
65    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
66        Self {
67            handle,
68            inner: ::std::default::Default::default(),
69            config_override: ::std::option::Option::None,
70        }
71    }
72    /// Access the UpdateAutoScalingGroup as a reference.
73    pub fn as_input(&self) -> &crate::operation::update_auto_scaling_group::builders::UpdateAutoScalingGroupInputBuilder {
74        &self.inner
75    }
76    /// Sends the request and returns the response.
77    ///
78    /// If an error occurs, an `SdkError` will be returned with additional details that
79    /// can be matched against.
80    ///
81    /// By default, any retryable failures will be retried twice. Retry behavior
82    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
83    /// set when configuring the client.
84    pub async fn send(
85        self,
86    ) -> ::std::result::Result<
87        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupOutput,
88        ::aws_smithy_runtime_api::client::result::SdkError<
89            crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupError,
90            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
91        >,
92    > {
93        let input = self
94            .inner
95            .build()
96            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
97        let runtime_plugins = crate::operation::update_auto_scaling_group::UpdateAutoScalingGroup::operation_runtime_plugins(
98            self.handle.runtime_plugins.clone(),
99            &self.handle.conf,
100            self.config_override,
101        );
102        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroup::orchestrate(&runtime_plugins, input).await
103    }
104
105    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
106    pub fn customize(
107        self,
108    ) -> crate::client::customize::CustomizableOperation<
109        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupOutput,
110        crate::operation::update_auto_scaling_group::UpdateAutoScalingGroupError,
111        Self,
112    > {
113        crate::client::customize::CustomizableOperation::new(self)
114    }
115    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
116        self.set_config_override(::std::option::Option::Some(config_override.into()));
117        self
118    }
119
120    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
121        self.config_override = config_override;
122        self
123    }
124    /// <p>The name of the Auto Scaling group.</p>
125    pub fn auto_scaling_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
126        self.inner = self.inner.auto_scaling_group_name(input.into());
127        self
128    }
129    /// <p>The name of the Auto Scaling group.</p>
130    pub fn set_auto_scaling_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
131        self.inner = self.inner.set_auto_scaling_group_name(input);
132        self
133    }
134    /// <p>The name of the Auto Scaling group.</p>
135    pub fn get_auto_scaling_group_name(&self) -> &::std::option::Option<::std::string::String> {
136        self.inner.get_auto_scaling_group_name()
137    }
138    /// <p>The name of the launch configuration. If you specify <code>LaunchConfigurationName</code> in your update request, you can't specify <code>LaunchTemplate</code> or <code>MixedInstancesPolicy</code>.</p>
139    pub fn launch_configuration_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
140        self.inner = self.inner.launch_configuration_name(input.into());
141        self
142    }
143    /// <p>The name of the launch configuration. If you specify <code>LaunchConfigurationName</code> in your update request, you can't specify <code>LaunchTemplate</code> or <code>MixedInstancesPolicy</code>.</p>
144    pub fn set_launch_configuration_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
145        self.inner = self.inner.set_launch_configuration_name(input);
146        self
147    }
148    /// <p>The name of the launch configuration. If you specify <code>LaunchConfigurationName</code> in your update request, you can't specify <code>LaunchTemplate</code> or <code>MixedInstancesPolicy</code>.</p>
149    pub fn get_launch_configuration_name(&self) -> &::std::option::Option<::std::string::String> {
150        self.inner.get_launch_configuration_name()
151    }
152    /// <p>The launch template and version to use to specify the updates. If you specify <code>LaunchTemplate</code> in your update request, you can't specify <code>LaunchConfigurationName</code> or <code>MixedInstancesPolicy</code>.</p>
153    pub fn launch_template(mut self, input: crate::types::LaunchTemplateSpecification) -> Self {
154        self.inner = self.inner.launch_template(input);
155        self
156    }
157    /// <p>The launch template and version to use to specify the updates. If you specify <code>LaunchTemplate</code> in your update request, you can't specify <code>LaunchConfigurationName</code> or <code>MixedInstancesPolicy</code>.</p>
158    pub fn set_launch_template(mut self, input: ::std::option::Option<crate::types::LaunchTemplateSpecification>) -> Self {
159        self.inner = self.inner.set_launch_template(input);
160        self
161    }
162    /// <p>The launch template and version to use to specify the updates. If you specify <code>LaunchTemplate</code> in your update request, you can't specify <code>LaunchConfigurationName</code> or <code>MixedInstancesPolicy</code>.</p>
163    pub fn get_launch_template(&self) -> &::std::option::Option<crate::types::LaunchTemplateSpecification> {
164        self.inner.get_launch_template()
165    }
166    /// <p>The mixed instances policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html">Auto Scaling groups with multiple instance types and purchase options</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
167    pub fn mixed_instances_policy(mut self, input: crate::types::MixedInstancesPolicy) -> Self {
168        self.inner = self.inner.mixed_instances_policy(input);
169        self
170    }
171    /// <p>The mixed instances policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html">Auto Scaling groups with multiple instance types and purchase options</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
172    pub fn set_mixed_instances_policy(mut self, input: ::std::option::Option<crate::types::MixedInstancesPolicy>) -> Self {
173        self.inner = self.inner.set_mixed_instances_policy(input);
174        self
175    }
176    /// <p>The mixed instances policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html">Auto Scaling groups with multiple instance types and purchase options</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
177    pub fn get_mixed_instances_policy(&self) -> &::std::option::Option<crate::types::MixedInstancesPolicy> {
178        self.inner.get_mixed_instances_policy()
179    }
180    /// <p>The minimum size of the Auto Scaling group.</p>
181    pub fn min_size(mut self, input: i32) -> Self {
182        self.inner = self.inner.min_size(input);
183        self
184    }
185    /// <p>The minimum size of the Auto Scaling group.</p>
186    pub fn set_min_size(mut self, input: ::std::option::Option<i32>) -> Self {
187        self.inner = self.inner.set_min_size(input);
188        self
189    }
190    /// <p>The minimum size of the Auto Scaling group.</p>
191    pub fn get_min_size(&self) -> &::std::option::Option<i32> {
192        self.inner.get_min_size()
193    }
194    /// <p>The maximum size of the Auto Scaling group.</p><note>
195    /// <p>With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to go above <code>MaxSize</code> to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will never go above <code>MaxSize</code> by more than your largest instance weight (weights that define how many units each instance contributes to the desired capacity of the group).</p>
196    /// </note>
197    pub fn max_size(mut self, input: i32) -> Self {
198        self.inner = self.inner.max_size(input);
199        self
200    }
201    /// <p>The maximum size of the Auto Scaling group.</p><note>
202    /// <p>With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to go above <code>MaxSize</code> to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will never go above <code>MaxSize</code> by more than your largest instance weight (weights that define how many units each instance contributes to the desired capacity of the group).</p>
203    /// </note>
204    pub fn set_max_size(mut self, input: ::std::option::Option<i32>) -> Self {
205        self.inner = self.inner.set_max_size(input);
206        self
207    }
208    /// <p>The maximum size of the Auto Scaling group.</p><note>
209    /// <p>With a mixed instances policy that uses instance weighting, Amazon EC2 Auto Scaling may need to go above <code>MaxSize</code> to meet your capacity requirements. In this event, Amazon EC2 Auto Scaling will never go above <code>MaxSize</code> by more than your largest instance weight (weights that define how many units each instance contributes to the desired capacity of the group).</p>
210    /// </note>
211    pub fn get_max_size(&self) -> &::std::option::Option<i32> {
212        self.inner.get_max_size()
213    }
214    /// <p>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.</p>
215    pub fn desired_capacity(mut self, input: i32) -> Self {
216        self.inner = self.inner.desired_capacity(input);
217        self
218    }
219    /// <p>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.</p>
220    pub fn set_desired_capacity(mut self, input: ::std::option::Option<i32>) -> Self {
221        self.inner = self.inner.set_desired_capacity(input);
222        self
223    }
224    /// <p>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.</p>
225    pub fn get_desired_capacity(&self) -> &::std::option::Option<i32> {
226        self.inner.get_desired_capacity()
227    }
228    /// <p><i>Only needed if you use simple scaling policies.</i></p>
229    /// <p>The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html">Scaling cooldowns for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
230    pub fn default_cooldown(mut self, input: i32) -> Self {
231        self.inner = self.inner.default_cooldown(input);
232        self
233    }
234    /// <p><i>Only needed if you use simple scaling policies.</i></p>
235    /// <p>The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html">Scaling cooldowns for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
236    pub fn set_default_cooldown(mut self, input: ::std::option::Option<i32>) -> Self {
237        self.inner = self.inner.set_default_cooldown(input);
238        self
239    }
240    /// <p><i>Only needed if you use simple scaling policies.</i></p>
241    /// <p>The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scaling-cooldowns.html">Scaling cooldowns for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
242    pub fn get_default_cooldown(&self) -> &::std::option::Option<i32> {
243        self.inner.get_default_cooldown()
244    }
245    ///
246    /// Appends an item to `AvailabilityZones`.
247    ///
248    /// To override the contents of this collection use [`set_availability_zones`](Self::set_availability_zones).
249    ///
250    /// <p>One or more Availability Zones for the group.</p>
251    pub fn availability_zones(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
252        self.inner = self.inner.availability_zones(input.into());
253        self
254    }
255    /// <p>One or more Availability Zones for the group.</p>
256    pub fn set_availability_zones(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
257        self.inner = self.inner.set_availability_zones(input);
258        self
259    }
260    /// <p>One or more Availability Zones for the group.</p>
261    pub fn get_availability_zones(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
262        self.inner.get_availability_zones()
263    }
264    /// <p>A comma-separated value string of one or more health check types.</p>
265    /// <p>The valid values are <code>EC2</code>, <code>EBS</code>, <code>ELB</code>, and <code>VPC_LATTICE</code>. <code>EC2</code> is the default health check and cannot be disabled. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html">Health checks for instances in an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
266    /// <p>Only specify <code>EC2</code> if you must clear a value that was previously set.</p>
267    pub fn health_check_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
268        self.inner = self.inner.health_check_type(input.into());
269        self
270    }
271    /// <p>A comma-separated value string of one or more health check types.</p>
272    /// <p>The valid values are <code>EC2</code>, <code>EBS</code>, <code>ELB</code>, and <code>VPC_LATTICE</code>. <code>EC2</code> is the default health check and cannot be disabled. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html">Health checks for instances in an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
273    /// <p>Only specify <code>EC2</code> if you must clear a value that was previously set.</p>
274    pub fn set_health_check_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
275        self.inner = self.inner.set_health_check_type(input);
276        self
277    }
278    /// <p>A comma-separated value string of one or more health check types.</p>
279    /// <p>The valid values are <code>EC2</code>, <code>EBS</code>, <code>ELB</code>, and <code>VPC_LATTICE</code>. <code>EC2</code> is the default health check and cannot be disabled. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html">Health checks for instances in an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
280    /// <p>Only specify <code>EC2</code> if you must clear a value that was previously set.</p>
281    pub fn get_health_check_type(&self) -> &::std::option::Option<::std::string::String> {
282        self.inner.get_health_check_type()
283    }
284    /// <p>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 <code>InService</code> state. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html">Set the health check grace period for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
285    pub fn health_check_grace_period(mut self, input: i32) -> Self {
286        self.inner = self.inner.health_check_grace_period(input);
287        self
288    }
289    /// <p>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 <code>InService</code> state. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html">Set the health check grace period for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
290    pub fn set_health_check_grace_period(mut self, input: ::std::option::Option<i32>) -> Self {
291        self.inner = self.inner.set_health_check_grace_period(input);
292        self
293    }
294    /// <p>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 <code>InService</code> state. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/health-check-grace-period.html">Set the health check grace period for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
295    pub fn get_health_check_grace_period(&self) -> &::std::option::Option<i32> {
296        self.inner.get_health_check_grace_period()
297    }
298    /// <p>The name of an existing placement group into which to launch your instances. To remove the placement group setting, pass an empty string for <code>placement-group</code>. For more information about placement groups, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html">Placement groups</a> in the <i>Amazon EC2 User Guide</i>.</p><note>
299    /// <p>A <i>cluster</i> placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group.</p>
300    /// </note>
301    pub fn placement_group(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
302        self.inner = self.inner.placement_group(input.into());
303        self
304    }
305    /// <p>The name of an existing placement group into which to launch your instances. To remove the placement group setting, pass an empty string for <code>placement-group</code>. For more information about placement groups, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html">Placement groups</a> in the <i>Amazon EC2 User Guide</i>.</p><note>
306    /// <p>A <i>cluster</i> placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group.</p>
307    /// </note>
308    pub fn set_placement_group(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
309        self.inner = self.inner.set_placement_group(input);
310        self
311    }
312    /// <p>The name of an existing placement group into which to launch your instances. To remove the placement group setting, pass an empty string for <code>placement-group</code>. For more information about placement groups, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html">Placement groups</a> in the <i>Amazon EC2 User Guide</i>.</p><note>
313    /// <p>A <i>cluster</i> placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group.</p>
314    /// </note>
315    pub fn get_placement_group(&self) -> &::std::option::Option<::std::string::String> {
316        self.inner.get_placement_group()
317    }
318    /// <p>A comma-separated list of subnet IDs for a virtual private cloud (VPC). If you specify <code>VPCZoneIdentifier</code> with <code>AvailabilityZones</code>, the subnets that you specify must reside in those Availability Zones.</p>
319    pub fn vpc_zone_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
320        self.inner = self.inner.vpc_zone_identifier(input.into());
321        self
322    }
323    /// <p>A comma-separated list of subnet IDs for a virtual private cloud (VPC). If you specify <code>VPCZoneIdentifier</code> with <code>AvailabilityZones</code>, the subnets that you specify must reside in those Availability Zones.</p>
324    pub fn set_vpc_zone_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
325        self.inner = self.inner.set_vpc_zone_identifier(input);
326        self
327    }
328    /// <p>A comma-separated list of subnet IDs for a virtual private cloud (VPC). If you specify <code>VPCZoneIdentifier</code> with <code>AvailabilityZones</code>, the subnets that you specify must reside in those Availability Zones.</p>
329    pub fn get_vpc_zone_identifier(&self) -> &::std::option::Option<::std::string::String> {
330        self.inner.get_vpc_zone_identifier()
331    }
332    ///
333    /// Appends an item to `TerminationPolicies`.
334    ///
335    /// To override the contents of this collection use [`set_termination_policies`](Self::set_termination_policies).
336    ///
337    /// <p>A policy or a list of policies that are used to select the instances to terminate. The policies are executed in the order that you list them. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html">Configure termination policies for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
338    /// <p>Valid values: <code>Default</code> | <code>AllocationStrategy</code> | <code>ClosestToNextInstanceHour</code> | <code>NewestInstance</code> | <code>OldestInstance</code> | <code>OldestLaunchConfiguration</code> | <code>OldestLaunchTemplate</code> | <code>arn:aws:lambda:region:account-id:function:my-function:my-alias</code></p>
339    pub fn termination_policies(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
340        self.inner = self.inner.termination_policies(input.into());
341        self
342    }
343    /// <p>A policy or a list of policies that are used to select the instances to terminate. The policies are executed in the order that you list them. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html">Configure termination policies for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
344    /// <p>Valid values: <code>Default</code> | <code>AllocationStrategy</code> | <code>ClosestToNextInstanceHour</code> | <code>NewestInstance</code> | <code>OldestInstance</code> | <code>OldestLaunchConfiguration</code> | <code>OldestLaunchTemplate</code> | <code>arn:aws:lambda:region:account-id:function:my-function:my-alias</code></p>
345    pub fn set_termination_policies(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
346        self.inner = self.inner.set_termination_policies(input);
347        self
348    }
349    /// <p>A policy or a list of policies that are used to select the instances to terminate. The policies are executed in the order that you list them. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html">Configure termination policies for Amazon EC2 Auto Scaling</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
350    /// <p>Valid values: <code>Default</code> | <code>AllocationStrategy</code> | <code>ClosestToNextInstanceHour</code> | <code>NewestInstance</code> | <code>OldestInstance</code> | <code>OldestLaunchConfiguration</code> | <code>OldestLaunchTemplate</code> | <code>arn:aws:lambda:region:account-id:function:my-function:my-alias</code></p>
351    pub fn get_termination_policies(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
352        self.inner.get_termination_policies()
353    }
354    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html">Use instance scale-in protection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
355    pub fn new_instances_protected_from_scale_in(mut self, input: bool) -> Self {
356        self.inner = self.inner.new_instances_protected_from_scale_in(input);
357        self
358    }
359    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html">Use instance scale-in protection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
360    pub fn set_new_instances_protected_from_scale_in(mut self, input: ::std::option::Option<bool>) -> Self {
361        self.inner = self.inner.set_new_instances_protected_from_scale_in(input);
362        self
363    }
364    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html">Use instance scale-in protection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
365    pub fn get_new_instances_protected_from_scale_in(&self) -> &::std::option::Option<bool> {
366        self.inner.get_new_instances_protected_from_scale_in()
367    }
368    /// <p>The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other Amazon Web Services on your behalf. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html">Service-linked roles</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
369    pub fn service_linked_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
370        self.inner = self.inner.service_linked_role_arn(input.into());
371        self
372    }
373    /// <p>The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other Amazon Web Services on your behalf. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html">Service-linked roles</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
374    pub fn set_service_linked_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
375        self.inner = self.inner.set_service_linked_role_arn(input);
376        self
377    }
378    /// <p>The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other Amazon Web Services on your behalf. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html">Service-linked roles</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
379    pub fn get_service_linked_role_arn(&self) -> &::std::option::Option<::std::string::String> {
380        self.inner.get_service_linked_role_arn()
381    }
382    /// <p>The maximum amount of time, in seconds, that an instance can be in service. The default is null. If specified, the value must be either 0 or a number equal to or greater than 86,400 seconds (1 day). To clear a previously set value, specify a new value of 0. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html">Replacing Auto Scaling instances based on maximum instance lifetime</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
383    pub fn max_instance_lifetime(mut self, input: i32) -> Self {
384        self.inner = self.inner.max_instance_lifetime(input);
385        self
386    }
387    /// <p>The maximum amount of time, in seconds, that an instance can be in service. The default is null. If specified, the value must be either 0 or a number equal to or greater than 86,400 seconds (1 day). To clear a previously set value, specify a new value of 0. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html">Replacing Auto Scaling instances based on maximum instance lifetime</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
388    pub fn set_max_instance_lifetime(mut self, input: ::std::option::Option<i32>) -> Self {
389        self.inner = self.inner.set_max_instance_lifetime(input);
390        self
391    }
392    /// <p>The maximum amount of time, in seconds, that an instance can be in service. The default is null. If specified, the value must be either 0 or a number equal to or greater than 86,400 seconds (1 day). To clear a previously set value, specify a new value of 0. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html">Replacing Auto Scaling instances based on maximum instance lifetime</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
393    pub fn get_max_instance_lifetime(&self) -> &::std::option::Option<i32> {
394        self.inner.get_max_instance_lifetime()
395    }
396    /// <p>Enables or disables Capacity Rebalancing. If Capacity Rebalancing is disabled, proactive replacement of at-risk Spot Instances does not occur. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html">Capacity Rebalancing in Auto Scaling to replace at-risk Spot Instances</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><note>
397    /// <p>To suspend rebalancing across Availability Zones, use the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendedProcess.html">SuspendProcesses</a> API.</p>
398    /// </note>
399    pub fn capacity_rebalance(mut self, input: bool) -> Self {
400        self.inner = self.inner.capacity_rebalance(input);
401        self
402    }
403    /// <p>Enables or disables Capacity Rebalancing. If Capacity Rebalancing is disabled, proactive replacement of at-risk Spot Instances does not occur. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html">Capacity Rebalancing in Auto Scaling to replace at-risk Spot Instances</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><note>
404    /// <p>To suspend rebalancing across Availability Zones, use the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendedProcess.html">SuspendProcesses</a> API.</p>
405    /// </note>
406    pub fn set_capacity_rebalance(mut self, input: ::std::option::Option<bool>) -> Self {
407        self.inner = self.inner.set_capacity_rebalance(input);
408        self
409    }
410    /// <p>Enables or disables Capacity Rebalancing. If Capacity Rebalancing is disabled, proactive replacement of at-risk Spot Instances does not occur. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html">Capacity Rebalancing in Auto Scaling to replace at-risk Spot Instances</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><note>
411    /// <p>To suspend rebalancing across Availability Zones, use the <a href="https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendedProcess.html">SuspendProcesses</a> API.</p>
412    /// </note>
413    pub fn get_capacity_rebalance(&self) -> &::std::option::Option<bool> {
414        self.inner.get_capacity_rebalance()
415    }
416    /// <p>Reserved.</p>
417    pub fn context(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
418        self.inner = self.inner.context(input.into());
419        self
420    }
421    /// <p>Reserved.</p>
422    pub fn set_context(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
423        self.inner = self.inner.set_context(input);
424        self
425    }
426    /// <p>Reserved.</p>
427    pub fn get_context(&self) -> &::std::option::Option<::std::string::String> {
428        self.inner.get_context()
429    }
430    /// <p>The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports <code>DesiredCapacityType</code> for attribute-based instance type selection only. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html">Create a mixed instances group using attribute-based instance type selection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
431    /// <p>By default, Amazon EC2 Auto Scaling specifies <code>units</code>, which translates into number of instances.</p>
432    /// <p>Valid values: <code>units</code> | <code>vcpu</code> | <code>memory-mib</code></p>
433    pub fn desired_capacity_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
434        self.inner = self.inner.desired_capacity_type(input.into());
435        self
436    }
437    /// <p>The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports <code>DesiredCapacityType</code> for attribute-based instance type selection only. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html">Create a mixed instances group using attribute-based instance type selection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
438    /// <p>By default, Amazon EC2 Auto Scaling specifies <code>units</code>, which translates into number of instances.</p>
439    /// <p>Valid values: <code>units</code> | <code>vcpu</code> | <code>memory-mib</code></p>
440    pub fn set_desired_capacity_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
441        self.inner = self.inner.set_desired_capacity_type(input);
442        self
443    }
444    /// <p>The unit of measurement for the value specified for desired capacity. Amazon EC2 Auto Scaling supports <code>DesiredCapacityType</code> for attribute-based instance type selection only. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html">Create a mixed instances group using attribute-based instance type selection</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
445    /// <p>By default, Amazon EC2 Auto Scaling specifies <code>units</code>, which translates into number of instances.</p>
446    /// <p>Valid values: <code>units</code> | <code>vcpu</code> | <code>memory-mib</code></p>
447    pub fn get_desired_capacity_type(&self) -> &::std::option::Option<::std::string::String> {
448        self.inner.get_desired_capacity_type()
449    }
450    /// <p>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 <code>InService</code> state.</p>
451    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html">Set the default instance warmup for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><important>
452    /// <p>To manage various warm-up settings at the group level, we recommend that you set the default instance warmup, <i>even if it is set to 0 seconds</i>. To remove a value that you previously set, include the property but specify <code>-1</code> for the value. However, we strongly recommend keeping the default instance warmup enabled by specifying a value of <code>0</code> or other nominal value.</p>
453    /// </important>
454    pub fn default_instance_warmup(mut self, input: i32) -> Self {
455        self.inner = self.inner.default_instance_warmup(input);
456        self
457    }
458    /// <p>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 <code>InService</code> state.</p>
459    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html">Set the default instance warmup for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><important>
460    /// <p>To manage various warm-up settings at the group level, we recommend that you set the default instance warmup, <i>even if it is set to 0 seconds</i>. To remove a value that you previously set, include the property but specify <code>-1</code> for the value. However, we strongly recommend keeping the default instance warmup enabled by specifying a value of <code>0</code> or other nominal value.</p>
461    /// </important>
462    pub fn set_default_instance_warmup(mut self, input: ::std::option::Option<i32>) -> Self {
463        self.inner = self.inner.set_default_instance_warmup(input);
464        self
465    }
466    /// <p>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 <code>InService</code> state.</p>
467    /// <p>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 <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html">Set the default instance warmup for an Auto Scaling group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p><important>
468    /// <p>To manage various warm-up settings at the group level, we recommend that you set the default instance warmup, <i>even if it is set to 0 seconds</i>. To remove a value that you previously set, include the property but specify <code>-1</code> for the value. However, we strongly recommend keeping the default instance warmup enabled by specifying a value of <code>0</code> or other nominal value.</p>
469    /// </important>
470    pub fn get_default_instance_warmup(&self) -> &::std::option::Option<i32> {
471        self.inner.get_default_instance_warmup()
472    }
473    /// <p>An instance maintenance policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html">Set instance maintenance policy</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
474    pub fn instance_maintenance_policy(mut self, input: crate::types::InstanceMaintenancePolicy) -> Self {
475        self.inner = self.inner.instance_maintenance_policy(input);
476        self
477    }
478    /// <p>An instance maintenance policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html">Set instance maintenance policy</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
479    pub fn set_instance_maintenance_policy(mut self, input: ::std::option::Option<crate::types::InstanceMaintenancePolicy>) -> Self {
480        self.inner = self.inner.set_instance_maintenance_policy(input);
481        self
482    }
483    /// <p>An instance maintenance policy. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html">Set instance maintenance policy</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
484    pub fn get_instance_maintenance_policy(&self) -> &::std::option::Option<crate::types::InstanceMaintenancePolicy> {
485        self.inner.get_instance_maintenance_policy()
486    }
487    /// <p>The instance capacity distribution across Availability Zones.</p>
488    pub fn availability_zone_distribution(mut self, input: crate::types::AvailabilityZoneDistribution) -> Self {
489        self.inner = self.inner.availability_zone_distribution(input);
490        self
491    }
492    /// <p>The instance capacity distribution across Availability Zones.</p>
493    pub fn set_availability_zone_distribution(mut self, input: ::std::option::Option<crate::types::AvailabilityZoneDistribution>) -> Self {
494        self.inner = self.inner.set_availability_zone_distribution(input);
495        self
496    }
497    /// <p>The instance capacity distribution across Availability Zones.</p>
498    pub fn get_availability_zone_distribution(&self) -> &::std::option::Option<crate::types::AvailabilityZoneDistribution> {
499        self.inner.get_availability_zone_distribution()
500    }
501    /// <p>The policy for Availability Zone impairment.</p>
502    pub fn availability_zone_impairment_policy(mut self, input: crate::types::AvailabilityZoneImpairmentPolicy) -> Self {
503        self.inner = self.inner.availability_zone_impairment_policy(input);
504        self
505    }
506    /// <p>The policy for Availability Zone impairment.</p>
507    pub fn set_availability_zone_impairment_policy(mut self, input: ::std::option::Option<crate::types::AvailabilityZoneImpairmentPolicy>) -> Self {
508        self.inner = self.inner.set_availability_zone_impairment_policy(input);
509        self
510    }
511    /// <p>The policy for Availability Zone impairment.</p>
512    pub fn get_availability_zone_impairment_policy(&self) -> &::std::option::Option<crate::types::AvailabilityZoneImpairmentPolicy> {
513        self.inner.get_availability_zone_impairment_policy()
514    }
515    /// <p>If you enable zonal shift with cross-zone disabled load balancers, capacity could become imbalanced across Availability Zones. To skip the validation, specify <code>true</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html">Auto Scaling group zonal shift</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
516    pub fn skip_zonal_shift_validation(mut self, input: bool) -> Self {
517        self.inner = self.inner.skip_zonal_shift_validation(input);
518        self
519    }
520    /// <p>If you enable zonal shift with cross-zone disabled load balancers, capacity could become imbalanced across Availability Zones. To skip the validation, specify <code>true</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html">Auto Scaling group zonal shift</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
521    pub fn set_skip_zonal_shift_validation(mut self, input: ::std::option::Option<bool>) -> Self {
522        self.inner = self.inner.set_skip_zonal_shift_validation(input);
523        self
524    }
525    /// <p>If you enable zonal shift with cross-zone disabled load balancers, capacity could become imbalanced across Availability Zones. To skip the validation, specify <code>true</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-zonal-shift.html">Auto Scaling group zonal shift</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
526    pub fn get_skip_zonal_shift_validation(&self) -> &::std::option::Option<bool> {
527        self.inner.get_skip_zonal_shift_validation()
528    }
529    /// <p>The capacity reservation specification for the Auto Scaling group.</p>
530    pub fn capacity_reservation_specification(mut self, input: crate::types::CapacityReservationSpecification) -> Self {
531        self.inner = self.inner.capacity_reservation_specification(input);
532        self
533    }
534    /// <p>The capacity reservation specification for the Auto Scaling group.</p>
535    pub fn set_capacity_reservation_specification(mut self, input: ::std::option::Option<crate::types::CapacityReservationSpecification>) -> Self {
536        self.inner = self.inner.set_capacity_reservation_specification(input);
537        self
538    }
539    /// <p>The capacity reservation specification for the Auto Scaling group.</p>
540    pub fn get_capacity_reservation_specification(&self) -> &::std::option::Option<crate::types::CapacityReservationSpecification> {
541        self.inner.get_capacity_reservation_specification()
542    }
543    /// <p>The instance lifecycle policy for the Auto Scaling group. Use this to add, modify, or remove lifecycle policies that control instance behavior when an instance transitions through its lifecycle states. Configure retention triggers to specify when to preserve instances for manual intervention.</p>
544    pub fn instance_lifecycle_policy(mut self, input: crate::types::InstanceLifecyclePolicy) -> Self {
545        self.inner = self.inner.instance_lifecycle_policy(input);
546        self
547    }
548    /// <p>The instance lifecycle policy for the Auto Scaling group. Use this to add, modify, or remove lifecycle policies that control instance behavior when an instance transitions through its lifecycle states. Configure retention triggers to specify when to preserve instances for manual intervention.</p>
549    pub fn set_instance_lifecycle_policy(mut self, input: ::std::option::Option<crate::types::InstanceLifecyclePolicy>) -> Self {
550        self.inner = self.inner.set_instance_lifecycle_policy(input);
551        self
552    }
553    /// <p>The instance lifecycle policy for the Auto Scaling group. Use this to add, modify, or remove lifecycle policies that control instance behavior when an instance transitions through its lifecycle states. Configure retention triggers to specify when to preserve instances for manual intervention.</p>
554    pub fn get_instance_lifecycle_policy(&self) -> &::std::option::Option<crate::types::InstanceLifecyclePolicy> {
555        self.inner.get_instance_lifecycle_policy()
556    }
557}