aws_sdk_cloudformation/operation/update_stack_set/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::update_stack_set::_update_stack_set_output::UpdateStackSetOutputBuilder;
3
4pub use crate::operation::update_stack_set::_update_stack_set_input::UpdateStackSetInputBuilder;
5
6impl crate::operation::update_stack_set::builders::UpdateStackSetInputBuilder {
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_stack_set::UpdateStackSetOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::update_stack_set::UpdateStackSetError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.update_stack_set();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `UpdateStackSet`.
24///
25/// <p>Updates the StackSet and associated stack instances in the specified accounts and Amazon Web Services Regions.</p>
26/// <p>Even if the StackSet operation created by updating the StackSet fails (completely or partially, below or above a specified failure tolerance), the StackSet is updated with your changes. Subsequent <code>CreateStackInstances</code> calls on the specified StackSet use the updated StackSet.</p><note>
27/// <p>The maximum number of organizational unit (OUs) supported by a <code>UpdateStackSet</code> operation is 50.</p>
28/// <p>If you need more than 50, consider the following options:</p>
29/// <ul>
30/// <li>
31/// <p><i>Batch processing:</i> If you don't want to expose your OU hierarchy, split up the operations into multiple calls with less than 50 OUs each.</p></li>
32/// <li>
33/// <p><i>Parent OU strategy:</i> If you don't mind exposing the OU hierarchy, target a parent OU that contains all desired child OUs.</p></li>
34/// </ul>
35/// </note>
36#[derive(::std::clone::Clone, ::std::fmt::Debug)]
37pub struct UpdateStackSetFluentBuilder {
38    handle: ::std::sync::Arc<crate::client::Handle>,
39    inner: crate::operation::update_stack_set::builders::UpdateStackSetInputBuilder,
40    config_override: ::std::option::Option<crate::config::Builder>,
41}
42impl
43    crate::client::customize::internal::CustomizableSend<
44        crate::operation::update_stack_set::UpdateStackSetOutput,
45        crate::operation::update_stack_set::UpdateStackSetError,
46    > for UpdateStackSetFluentBuilder
47{
48    fn send(
49        self,
50        config_override: crate::config::Builder,
51    ) -> crate::client::customize::internal::BoxFuture<
52        crate::client::customize::internal::SendResult<
53            crate::operation::update_stack_set::UpdateStackSetOutput,
54            crate::operation::update_stack_set::UpdateStackSetError,
55        >,
56    > {
57        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
58    }
59}
60impl UpdateStackSetFluentBuilder {
61    /// Creates a new `UpdateStackSetFluentBuilder`.
62    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
63        Self {
64            handle,
65            inner: ::std::default::Default::default(),
66            config_override: ::std::option::Option::None,
67        }
68    }
69    /// Access the UpdateStackSet as a reference.
70    pub fn as_input(&self) -> &crate::operation::update_stack_set::builders::UpdateStackSetInputBuilder {
71        &self.inner
72    }
73    /// Sends the request and returns the response.
74    ///
75    /// If an error occurs, an `SdkError` will be returned with additional details that
76    /// can be matched against.
77    ///
78    /// By default, any retryable failures will be retried twice. Retry behavior
79    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
80    /// set when configuring the client.
81    pub async fn send(
82        self,
83    ) -> ::std::result::Result<
84        crate::operation::update_stack_set::UpdateStackSetOutput,
85        ::aws_smithy_runtime_api::client::result::SdkError<
86            crate::operation::update_stack_set::UpdateStackSetError,
87            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
88        >,
89    > {
90        let input = self
91            .inner
92            .build()
93            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
94        let runtime_plugins = crate::operation::update_stack_set::UpdateStackSet::operation_runtime_plugins(
95            self.handle.runtime_plugins.clone(),
96            &self.handle.conf,
97            self.config_override,
98        );
99        crate::operation::update_stack_set::UpdateStackSet::orchestrate(&runtime_plugins, input).await
100    }
101
102    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
103    pub fn customize(
104        self,
105    ) -> crate::client::customize::CustomizableOperation<
106        crate::operation::update_stack_set::UpdateStackSetOutput,
107        crate::operation::update_stack_set::UpdateStackSetError,
108        Self,
109    > {
110        crate::client::customize::CustomizableOperation::new(self)
111    }
112    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
113        self.set_config_override(::std::option::Option::Some(config_override.into()));
114        self
115    }
116
117    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
118        self.config_override = config_override;
119        self
120    }
121    /// <p>The name or unique ID of the StackSet that you want to update.</p>
122    pub fn stack_set_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
123        self.inner = self.inner.stack_set_name(input.into());
124        self
125    }
126    /// <p>The name or unique ID of the StackSet that you want to update.</p>
127    pub fn set_stack_set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
128        self.inner = self.inner.set_stack_set_name(input);
129        self
130    }
131    /// <p>The name or unique ID of the StackSet that you want to update.</p>
132    pub fn get_stack_set_name(&self) -> &::std::option::Option<::std::string::String> {
133        self.inner.get_stack_set_name()
134    }
135    /// <p>A brief description of updates that you are making.</p>
136    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
137        self.inner = self.inner.description(input.into());
138        self
139    }
140    /// <p>A brief description of updates that you are making.</p>
141    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
142        self.inner = self.inner.set_description(input);
143        self
144    }
145    /// <p>A brief description of updates that you are making.</p>
146    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
147        self.inner.get_description()
148    }
149    /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
150    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
151    pub fn template_body(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
152        self.inner = self.inner.template_body(input.into());
153        self
154    }
155    /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
156    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
157    pub fn set_template_body(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
158        self.inner = self.inner.set_template_body(input);
159        self
160    }
161    /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
162    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
163    pub fn get_template_body(&self) -> &::std::option::Option<::std::string::String> {
164        self.inner.get_template_body()
165    }
166    /// <p>The URL of a file that contains the template body. The URL must point to a template (maximum size: 1 MB) that is located in an Amazon S3 bucket or a Systems Manager document. The location for an Amazon S3 bucket must start with <code>https://</code>. S3 static website URLs are not supported.</p>
167    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
168    pub fn template_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
169        self.inner = self.inner.template_url(input.into());
170        self
171    }
172    /// <p>The URL of a file that contains the template body. The URL must point to a template (maximum size: 1 MB) that is located in an Amazon S3 bucket or a Systems Manager document. The location for an Amazon S3 bucket must start with <code>https://</code>. S3 static website URLs are not supported.</p>
173    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
174    pub fn set_template_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
175        self.inner = self.inner.set_template_url(input);
176        self
177    }
178    /// <p>The URL of a file that contains the template body. The URL must point to a template (maximum size: 1 MB) that is located in an Amazon S3 bucket or a Systems Manager document. The location for an Amazon S3 bucket must start with <code>https://</code>. S3 static website URLs are not supported.</p>
179    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
180    pub fn get_template_url(&self) -> &::std::option::Option<::std::string::String> {
181        self.inner.get_template_url()
182    }
183    /// <p>Use the existing template that's associated with the StackSet that you're updating.</p>
184    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
185    pub fn use_previous_template(mut self, input: bool) -> Self {
186        self.inner = self.inner.use_previous_template(input);
187        self
188    }
189    /// <p>Use the existing template that's associated with the StackSet that you're updating.</p>
190    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
191    pub fn set_use_previous_template(mut self, input: ::std::option::Option<bool>) -> Self {
192        self.inner = self.inner.set_use_previous_template(input);
193        self
194    }
195    /// <p>Use the existing template that's associated with the StackSet that you're updating.</p>
196    /// <p>Conditional: You must specify only one of the following parameters: <code>TemplateBody</code> or <code>TemplateURL</code>—or set <code>UsePreviousTemplate</code> to true.</p>
197    pub fn get_use_previous_template(&self) -> &::std::option::Option<bool> {
198        self.inner.get_use_previous_template()
199    }
200    ///
201    /// Appends an item to `Parameters`.
202    ///
203    /// To override the contents of this collection use [`set_parameters`](Self::set_parameters).
204    ///
205    /// <p>A list of input parameters for the StackSet template.</p>
206    pub fn parameters(mut self, input: crate::types::Parameter) -> Self {
207        self.inner = self.inner.parameters(input);
208        self
209    }
210    /// <p>A list of input parameters for the StackSet template.</p>
211    pub fn set_parameters(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>) -> Self {
212        self.inner = self.inner.set_parameters(input);
213        self
214    }
215    /// <p>A list of input parameters for the StackSet template.</p>
216    pub fn get_parameters(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Parameter>> {
217        self.inner.get_parameters()
218    }
219    ///
220    /// Appends an item to `Capabilities`.
221    ///
222    /// To override the contents of this collection use [`set_capabilities`](Self::set_capabilities).
223    ///
224    /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the StackSet and its associated stack instances.</p>
225    /// <ul>
226    /// <li>
227    /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
228    /// <p>Some stack templates might include resources that can affect permissions in your Amazon Web Services account, for example, by creating new IAM users. For those stacks sets, you must explicitly acknowledge this by specifying one of these capabilities.</p>
229    /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
230    /// <ul>
231    /// <li>
232    /// <p>If you have IAM resources, you can specify either capability.</p></li>
233    /// <li>
234    /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
235    /// <li>
236    /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
237    /// </ul>
238    /// <p>If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary.</p>
239    /// <ul>
240    /// <li>
241    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
242    /// <li>
243    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
244    /// <li>
245    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
246    /// <li>
247    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
248    /// <li>
249    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
250    /// <li>
251    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
252    /// <li>
253    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
254    /// </ul>
255    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p></li>
256    /// <li>
257    /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
258    /// <p>Some templates reference macros. If your StackSet template references one or more macros, you must update the StackSet directly from the processed template, without first reviewing the resulting changes in a change set. To update the StackSet directly, you must acknowledge this capability. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Perform custom processing on CloudFormation templates with template macros</a>.</p><important>
259    /// <p>StackSets with service-managed permissions do not currently support the use of macros in templates. (This includes the <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-include.html">AWS::Include</a> and <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a> transforms, which are macros hosted by CloudFormation.) Even if you specify this capability for a StackSet with service-managed permissions, if you reference a macro in your template the StackSet operation will fail.</p>
260    /// </important></li>
261    /// </ul>
262    pub fn capabilities(mut self, input: crate::types::Capability) -> Self {
263        self.inner = self.inner.capabilities(input);
264        self
265    }
266    /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the StackSet and its associated stack instances.</p>
267    /// <ul>
268    /// <li>
269    /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
270    /// <p>Some stack templates might include resources that can affect permissions in your Amazon Web Services account, for example, by creating new IAM users. For those stacks sets, you must explicitly acknowledge this by specifying one of these capabilities.</p>
271    /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
272    /// <ul>
273    /// <li>
274    /// <p>If you have IAM resources, you can specify either capability.</p></li>
275    /// <li>
276    /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
277    /// <li>
278    /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
279    /// </ul>
280    /// <p>If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary.</p>
281    /// <ul>
282    /// <li>
283    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
284    /// <li>
285    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
286    /// <li>
287    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
288    /// <li>
289    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
290    /// <li>
291    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
292    /// <li>
293    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
294    /// <li>
295    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
296    /// </ul>
297    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p></li>
298    /// <li>
299    /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
300    /// <p>Some templates reference macros. If your StackSet template references one or more macros, you must update the StackSet directly from the processed template, without first reviewing the resulting changes in a change set. To update the StackSet directly, you must acknowledge this capability. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Perform custom processing on CloudFormation templates with template macros</a>.</p><important>
301    /// <p>StackSets with service-managed permissions do not currently support the use of macros in templates. (This includes the <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-include.html">AWS::Include</a> and <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a> transforms, which are macros hosted by CloudFormation.) Even if you specify this capability for a StackSet with service-managed permissions, if you reference a macro in your template the StackSet operation will fail.</p>
302    /// </important></li>
303    /// </ul>
304    pub fn set_capabilities(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>) -> Self {
305        self.inner = self.inner.set_capabilities(input);
306        self
307    }
308    /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the StackSet and its associated stack instances.</p>
309    /// <ul>
310    /// <li>
311    /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
312    /// <p>Some stack templates might include resources that can affect permissions in your Amazon Web Services account, for example, by creating new IAM users. For those stacks sets, you must explicitly acknowledge this by specifying one of these capabilities.</p>
313    /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
314    /// <ul>
315    /// <li>
316    /// <p>If you have IAM resources, you can specify either capability.</p></li>
317    /// <li>
318    /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
319    /// <li>
320    /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
321    /// </ul>
322    /// <p>If your stack template contains these resources, we recommend that you review all permissions associated with them and edit their permissions if necessary.</p>
323    /// <ul>
324    /// <li>
325    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
326    /// <li>
327    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
328    /// <li>
329    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
330    /// <li>
331    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
332    /// <li>
333    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
334    /// <li>
335    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
336    /// <li>
337    /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
338    /// </ul>
339    /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html#using-iam-capabilities">Acknowledging IAM resources in CloudFormation templates</a>.</p></li>
340    /// <li>
341    /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
342    /// <p>Some templates reference macros. If your StackSet template references one or more macros, you must update the StackSet directly from the processed template, without first reviewing the resulting changes in a change set. To update the StackSet directly, you must acknowledge this capability. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Perform custom processing on CloudFormation templates with template macros</a>.</p><important>
343    /// <p>StackSets with service-managed permissions do not currently support the use of macros in templates. (This includes the <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-include.html">AWS::Include</a> and <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a> transforms, which are macros hosted by CloudFormation.) Even if you specify this capability for a StackSet with service-managed permissions, if you reference a macro in your template the StackSet operation will fail.</p>
344    /// </important></li>
345    /// </ul>
346    pub fn get_capabilities(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Capability>> {
347        self.inner.get_capabilities()
348    }
349    ///
350    /// Appends an item to `Tags`.
351    ///
352    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
353    ///
354    /// <p>The key-value pairs to associate with this StackSet and the stacks created from it. CloudFormation also propagates these tags to supported resources that are created in the stacks. You can specify a maximum number of 50 tags.</p>
355    /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this StackSet. This means:</p>
356    /// <ul>
357    /// <li>
358    /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
359    /// <li>
360    /// <p>If you specify <i>any</i> tags using this parameter, you must specify <i>all</i> the tags that you want associated with this StackSet, even tags you've specified before (for example, when creating the StackSet or during a previous update of the StackSet.). Any tags that you don't include in the updated list of tags are removed from the StackSet, and therefore from the stacks and resources as well.</p></li>
361    /// <li>
362    /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
363    /// </ul>
364    /// <p>If you specify new tags as part of an <code>UpdateStackSet</code> action, CloudFormation checks to see if you have the required IAM permission to tag resources. If you omit tags that are currently associated with the StackSet from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the StackSet, and checks to see if you have permission to untag resources. If you don't have the necessary permission(s), the entire <code>UpdateStackSet</code> action fails with an <code>access denied</code> error, and the StackSet is not updated.</p>
365    pub fn tags(mut self, input: crate::types::Tag) -> Self {
366        self.inner = self.inner.tags(input);
367        self
368    }
369    /// <p>The key-value pairs to associate with this StackSet and the stacks created from it. CloudFormation also propagates these tags to supported resources that are created in the stacks. You can specify a maximum number of 50 tags.</p>
370    /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this StackSet. This means:</p>
371    /// <ul>
372    /// <li>
373    /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
374    /// <li>
375    /// <p>If you specify <i>any</i> tags using this parameter, you must specify <i>all</i> the tags that you want associated with this StackSet, even tags you've specified before (for example, when creating the StackSet or during a previous update of the StackSet.). Any tags that you don't include in the updated list of tags are removed from the StackSet, and therefore from the stacks and resources as well.</p></li>
376    /// <li>
377    /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
378    /// </ul>
379    /// <p>If you specify new tags as part of an <code>UpdateStackSet</code> action, CloudFormation checks to see if you have the required IAM permission to tag resources. If you omit tags that are currently associated with the StackSet from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the StackSet, and checks to see if you have permission to untag resources. If you don't have the necessary permission(s), the entire <code>UpdateStackSet</code> action fails with an <code>access denied</code> error, and the StackSet is not updated.</p>
380    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
381        self.inner = self.inner.set_tags(input);
382        self
383    }
384    /// <p>The key-value pairs to associate with this StackSet and the stacks created from it. CloudFormation also propagates these tags to supported resources that are created in the stacks. You can specify a maximum number of 50 tags.</p>
385    /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this StackSet. This means:</p>
386    /// <ul>
387    /// <li>
388    /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
389    /// <li>
390    /// <p>If you specify <i>any</i> tags using this parameter, you must specify <i>all</i> the tags that you want associated with this StackSet, even tags you've specified before (for example, when creating the StackSet or during a previous update of the StackSet.). Any tags that you don't include in the updated list of tags are removed from the StackSet, and therefore from the stacks and resources as well.</p></li>
391    /// <li>
392    /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
393    /// </ul>
394    /// <p>If you specify new tags as part of an <code>UpdateStackSet</code> action, CloudFormation checks to see if you have the required IAM permission to tag resources. If you omit tags that are currently associated with the StackSet from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the StackSet, and checks to see if you have permission to untag resources. If you don't have the necessary permission(s), the entire <code>UpdateStackSet</code> action fails with an <code>access denied</code> error, and the StackSet is not updated.</p>
395    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
396        self.inner.get_tags()
397    }
398    /// <p>Preferences for how CloudFormation performs this StackSet operation.</p>
399    pub fn operation_preferences(mut self, input: crate::types::StackSetOperationPreferences) -> Self {
400        self.inner = self.inner.operation_preferences(input);
401        self
402    }
403    /// <p>Preferences for how CloudFormation performs this StackSet operation.</p>
404    pub fn set_operation_preferences(mut self, input: ::std::option::Option<crate::types::StackSetOperationPreferences>) -> Self {
405        self.inner = self.inner.set_operation_preferences(input);
406        self
407    }
408    /// <p>Preferences for how CloudFormation performs this StackSet operation.</p>
409    pub fn get_operation_preferences(&self) -> &::std::option::Option<crate::types::StackSetOperationPreferences> {
410        self.inner.get_operation_preferences()
411    }
412    /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this StackSet.</p>
413    /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific StackSets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a> in the <i>CloudFormation User Guide</i>.</p>
414    /// <p>If you specified a customized administrator role when you created the StackSet, you must specify a customized administrator role, even if it is the same customized administrator role used with this StackSet previously.</p>
415    pub fn administration_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
416        self.inner = self.inner.administration_role_arn(input.into());
417        self
418    }
419    /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this StackSet.</p>
420    /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific StackSets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a> in the <i>CloudFormation User Guide</i>.</p>
421    /// <p>If you specified a customized administrator role when you created the StackSet, you must specify a customized administrator role, even if it is the same customized administrator role used with this StackSet previously.</p>
422    pub fn set_administration_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
423        self.inner = self.inner.set_administration_role_arn(input);
424        self
425    }
426    /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this StackSet.</p>
427    /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific StackSets within the same administrator account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a> in the <i>CloudFormation User Guide</i>.</p>
428    /// <p>If you specified a customized administrator role when you created the StackSet, you must specify a customized administrator role, even if it is the same customized administrator role used with this StackSet previously.</p>
429    pub fn get_administration_role_arn(&self) -> &::std::option::Option<::std::string::String> {
430        self.inner.get_administration_role_arn()
431    }
432    /// <p>\[Self-managed permissions\] The name of the IAM execution role to use to update the stack set. If you do not specify an execution role, CloudFormation uses the AWSCloudFormationStackSetExecutionRole role for the StackSet operation.</p>
433    /// <p>Specify an IAM role only if you are using customized execution roles to control which stack resources users and groups can include in their StackSets.</p>
434    /// <p>If you specify a customized execution role, CloudFormation uses that role to update the stack. If you do not specify a customized execution role, CloudFormation performs the update using the role previously associated with the StackSet, so long as you have permissions to perform operations on the StackSet.</p>
435    pub fn execution_role_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
436        self.inner = self.inner.execution_role_name(input.into());
437        self
438    }
439    /// <p>\[Self-managed permissions\] The name of the IAM execution role to use to update the stack set. If you do not specify an execution role, CloudFormation uses the AWSCloudFormationStackSetExecutionRole role for the StackSet operation.</p>
440    /// <p>Specify an IAM role only if you are using customized execution roles to control which stack resources users and groups can include in their StackSets.</p>
441    /// <p>If you specify a customized execution role, CloudFormation uses that role to update the stack. If you do not specify a customized execution role, CloudFormation performs the update using the role previously associated with the StackSet, so long as you have permissions to perform operations on the StackSet.</p>
442    pub fn set_execution_role_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
443        self.inner = self.inner.set_execution_role_name(input);
444        self
445    }
446    /// <p>\[Self-managed permissions\] The name of the IAM execution role to use to update the stack set. If you do not specify an execution role, CloudFormation uses the AWSCloudFormationStackSetExecutionRole role for the StackSet operation.</p>
447    /// <p>Specify an IAM role only if you are using customized execution roles to control which stack resources users and groups can include in their StackSets.</p>
448    /// <p>If you specify a customized execution role, CloudFormation uses that role to update the stack. If you do not specify a customized execution role, CloudFormation performs the update using the role previously associated with the StackSet, so long as you have permissions to perform operations on the StackSet.</p>
449    pub fn get_execution_role_name(&self) -> &::std::option::Option<::std::string::String> {
450        self.inner.get_execution_role_name()
451    }
452    /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
453    /// <p>To update all the stack instances associated with this StackSet, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
454    /// <p>If the StackSet update includes changes to the template (that is, if <code>TemplateBody</code> or <code>TemplateURL</code> is specified), or the <code>Parameters</code>, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update doesn't include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
455    pub fn deployment_targets(mut self, input: crate::types::DeploymentTargets) -> Self {
456        self.inner = self.inner.deployment_targets(input);
457        self
458    }
459    /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
460    /// <p>To update all the stack instances associated with this StackSet, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
461    /// <p>If the StackSet update includes changes to the template (that is, if <code>TemplateBody</code> or <code>TemplateURL</code> is specified), or the <code>Parameters</code>, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update doesn't include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
462    pub fn set_deployment_targets(mut self, input: ::std::option::Option<crate::types::DeploymentTargets>) -> Self {
463        self.inner = self.inner.set_deployment_targets(input);
464        self
465    }
466    /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
467    /// <p>To update all the stack instances associated with this StackSet, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
468    /// <p>If the StackSet update includes changes to the template (that is, if <code>TemplateBody</code> or <code>TemplateURL</code> is specified), or the <code>Parameters</code>, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update doesn't include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
469    pub fn get_deployment_targets(&self) -> &::std::option::Option<crate::types::DeploymentTargets> {
470        self.inner.get_deployment_targets()
471    }
472    /// <p>Describes how the IAM roles required for StackSet operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
473    /// <ul>
474    /// <li>
475    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
476    /// <li>
477    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for StackSets with Organizations</a>.</p></li>
478    /// </ul>
479    pub fn permission_model(mut self, input: crate::types::PermissionModels) -> Self {
480        self.inner = self.inner.permission_model(input);
481        self
482    }
483    /// <p>Describes how the IAM roles required for StackSet operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
484    /// <ul>
485    /// <li>
486    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
487    /// <li>
488    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for StackSets with Organizations</a>.</p></li>
489    /// </ul>
490    pub fn set_permission_model(mut self, input: ::std::option::Option<crate::types::PermissionModels>) -> Self {
491        self.inner = self.inner.set_permission_model(input);
492        self
493    }
494    /// <p>Describes how the IAM roles required for StackSet operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
495    /// <ul>
496    /// <li>
497    /// <p>With <code>self-managed</code> permissions, you must create the administrator and execution roles required to deploy to target accounts. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html">Grant self-managed permissions</a>.</p></li>
498    /// <li>
499    /// <p>With <code>service-managed</code> permissions, StackSets automatically creates the IAM roles required to deploy to accounts managed by Organizations. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html">Activate trusted access for StackSets with Organizations</a>.</p></li>
500    /// </ul>
501    pub fn get_permission_model(&self) -> &::std::option::Option<crate::types::PermissionModels> {
502        self.inner.get_permission_model()
503    }
504    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU). For more information, see Enable or disable automatic deployments for StackSets in Organizations in the CloudFormation User Guide.</p>
505    /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
506    pub fn auto_deployment(mut self, input: crate::types::AutoDeployment) -> Self {
507        self.inner = self.inner.auto_deployment(input);
508        self
509    }
510    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU). For more information, see Enable or disable automatic deployments for StackSets in Organizations in the CloudFormation User Guide.</p>
511    /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
512    pub fn set_auto_deployment(mut self, input: ::std::option::Option<crate::types::AutoDeployment>) -> Self {
513        self.inner = self.inner.set_auto_deployment(input);
514        self
515    }
516    /// <p>\[Service-managed permissions\] Describes whether StackSets automatically deploys to Organizations accounts that are added to a target organization or organizational unit (OU). For more information, see Enable or disable automatic deployments for StackSets in Organizations in the CloudFormation User Guide.</p>
517    /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
518    pub fn get_auto_deployment(&self) -> &::std::option::Option<crate::types::AutoDeployment> {
519        self.inner.get_auto_deployment()
520    }
521    /// <p>The unique ID for this StackSet operation.</p>
522    /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the StackSet operation only once, even if you retry the request multiple times. You might retry StackSet operation requests to ensure that CloudFormation successfully received them.</p>
523    /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
524    /// <p>Repeating this StackSet operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
525    pub fn operation_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
526        self.inner = self.inner.operation_id(input.into());
527        self
528    }
529    /// <p>The unique ID for this StackSet operation.</p>
530    /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the StackSet operation only once, even if you retry the request multiple times. You might retry StackSet operation requests to ensure that CloudFormation successfully received them.</p>
531    /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
532    /// <p>Repeating this StackSet operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
533    pub fn set_operation_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
534        self.inner = self.inner.set_operation_id(input);
535        self
536    }
537    /// <p>The unique ID for this StackSet operation.</p>
538    /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the StackSet operation only once, even if you retry the request multiple times. You might retry StackSet operation requests to ensure that CloudFormation successfully received them.</p>
539    /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
540    /// <p>Repeating this StackSet operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
541    pub fn get_operation_id(&self) -> &::std::option::Option<::std::string::String> {
542        self.inner.get_operation_id()
543    }
544    ///
545    /// Appends an item to `Accounts`.
546    ///
547    /// To override the contents of this collection use [`set_accounts`](Self::set_accounts).
548    ///
549    /// <p>\[Self-managed permissions\] The accounts in which to update associated stack instances. If you specify accounts, you must also specify the Amazon Web Services Regions in which to update StackSet instances.</p>
550    /// <p>To update <i>all</i> the stack instances associated with this StackSet, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
551    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Amazon Web Services Regions, while leaving all other stack instances with their existing stack instance status.</p>
552    pub fn accounts(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
553        self.inner = self.inner.accounts(input.into());
554        self
555    }
556    /// <p>\[Self-managed permissions\] The accounts in which to update associated stack instances. If you specify accounts, you must also specify the Amazon Web Services Regions in which to update StackSet instances.</p>
557    /// <p>To update <i>all</i> the stack instances associated with this StackSet, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
558    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Amazon Web Services Regions, while leaving all other stack instances with their existing stack instance status.</p>
559    pub fn set_accounts(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
560        self.inner = self.inner.set_accounts(input);
561        self
562    }
563    /// <p>\[Self-managed permissions\] The accounts in which to update associated stack instances. If you specify accounts, you must also specify the Amazon Web Services Regions in which to update StackSet instances.</p>
564    /// <p>To update <i>all</i> the stack instances associated with this StackSet, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
565    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Amazon Web Services Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Amazon Web Services Regions, while leaving all other stack instances with their existing stack instance status.</p>
566    pub fn get_accounts(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
567        self.inner.get_accounts()
568    }
569    ///
570    /// Appends an item to `Regions`.
571    ///
572    /// To override the contents of this collection use [`set_regions`](Self::set_regions).
573    ///
574    /// <p>The Amazon Web Services Regions in which to update associated stack instances. If you specify Regions, you must also specify accounts in which to update StackSet instances.</p>
575    /// <p>To update <i>all</i> the stack instances associated with this StackSet, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
576    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
577    pub fn regions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
578        self.inner = self.inner.regions(input.into());
579        self
580    }
581    /// <p>The Amazon Web Services Regions in which to update associated stack instances. If you specify Regions, you must also specify accounts in which to update StackSet instances.</p>
582    /// <p>To update <i>all</i> the stack instances associated with this StackSet, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
583    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
584    pub fn set_regions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
585        self.inner = self.inner.set_regions(input);
586        self
587    }
588    /// <p>The Amazon Web Services Regions in which to update associated stack instances. If you specify Regions, you must also specify accounts in which to update StackSet instances.</p>
589    /// <p>To update <i>all</i> the stack instances associated with this StackSet, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
590    /// <p>If the StackSet update includes changes to the template (that is, if the <code>TemplateBody</code> or <code>TemplateURL</code> properties are specified), or the <code>Parameters</code> property, CloudFormation marks all stack instances with a status of <code>OUTDATED</code> prior to updating the stack instances in the specified accounts and Regions. If the StackSet update does not include changes to the template or parameters, CloudFormation updates the stack instances in the specified accounts and Regions, while leaving all other stack instances with their existing stack instance status.</p>
591    pub fn get_regions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
592        self.inner.get_regions()
593    }
594    /// <p>\[Service-managed permissions\] Specifies whether you are acting as an account administrator in the organization's management account or as a delegated administrator in a member account.</p>
595    /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for StackSets with self-managed permissions.</p>
596    /// <ul>
597    /// <li>
598    /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
599    /// <li>
600    /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
601    /// <p>Your Amazon Web Services account must be registered as a delegated administrator in the management account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html">Register a delegated administrator</a> in the <i>CloudFormation User Guide</i>.</p></li>
602    /// </ul>
603    pub fn call_as(mut self, input: crate::types::CallAs) -> Self {
604        self.inner = self.inner.call_as(input);
605        self
606    }
607    /// <p>\[Service-managed permissions\] Specifies whether you are acting as an account administrator in the organization's management account or as a delegated administrator in a member account.</p>
608    /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for StackSets with self-managed permissions.</p>
609    /// <ul>
610    /// <li>
611    /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
612    /// <li>
613    /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
614    /// <p>Your Amazon Web Services account must be registered as a delegated administrator in the management account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html">Register a delegated administrator</a> in the <i>CloudFormation User Guide</i>.</p></li>
615    /// </ul>
616    pub fn set_call_as(mut self, input: ::std::option::Option<crate::types::CallAs>) -> Self {
617        self.inner = self.inner.set_call_as(input);
618        self
619    }
620    /// <p>\[Service-managed permissions\] Specifies whether you are acting as an account administrator in the organization's management account or as a delegated administrator in a member account.</p>
621    /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for StackSets with self-managed permissions.</p>
622    /// <ul>
623    /// <li>
624    /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
625    /// <li>
626    /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
627    /// <p>Your Amazon Web Services account must be registered as a delegated administrator in the management account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html">Register a delegated administrator</a> in the <i>CloudFormation User Guide</i>.</p></li>
628    /// </ul>
629    pub fn get_call_as(&self) -> &::std::option::Option<crate::types::CallAs> {
630        self.inner.get_call_as()
631    }
632    /// <p>Describes whether CloudFormation performs non-conflicting operations concurrently and queues conflicting operations.</p>
633    pub fn managed_execution(mut self, input: crate::types::ManagedExecution) -> Self {
634        self.inner = self.inner.managed_execution(input);
635        self
636    }
637    /// <p>Describes whether CloudFormation performs non-conflicting operations concurrently and queues conflicting operations.</p>
638    pub fn set_managed_execution(mut self, input: ::std::option::Option<crate::types::ManagedExecution>) -> Self {
639        self.inner = self.inner.set_managed_execution(input);
640        self
641    }
642    /// <p>Describes whether CloudFormation performs non-conflicting operations concurrently and queues conflicting operations.</p>
643    pub fn get_managed_execution(&self) -> &::std::option::Option<crate::types::ManagedExecution> {
644        self.inner.get_managed_execution()
645    }
646}