aws_sdk_cloudformation/operation/update_stack_set/_update_stack_set_input.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct UpdateStackSetInput {
6 /// <p>The name or unique ID of the stack set that you want to update.</p>
7 pub stack_set_name: ::std::option::Option<::std::string::String>,
8 /// <p>A brief description of updates that you are making.</p>
9 pub description: ::std::option::Option<::std::string::String>,
10 /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
11 /// <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>
12 pub template_body: ::std::option::Option<::std::string::String>,
13 /// <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>
14 /// <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>
15 pub template_url: ::std::option::Option<::std::string::String>,
16 /// <p>Use the existing template that's associated with the stack set that you're updating.</p>
17 /// <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>
18 pub use_previous_template: ::std::option::Option<bool>,
19 /// <p>A list of input parameters for the stack set template.</p>
20 pub parameters: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
21 /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the stack set and its associated stack instances.</p>
22 /// <ul>
23 /// <li>
24 /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
25 /// <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>
26 /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
27 /// <ul>
28 /// <li>
29 /// <p>If you have IAM resources, you can specify either capability.</p></li>
30 /// <li>
31 /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
32 /// <li>
33 /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
34 /// </ul>
35 /// <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>
36 /// <ul>
37 /// <li>
38 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
39 /// <li>
40 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
41 /// <li>
42 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
43 /// <li>
44 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
45 /// <li>
46 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
47 /// <li>
48 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
49 /// <li>
50 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
51 /// </ul>
52 /// <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>
53 /// <li>
54 /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
55 /// <p>Some templates reference macros. If your stack set template references one or more macros, you must update the stack set directly from the processed template, without first reviewing the resulting changes in a change set. To update the stack set 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>
56 /// <p>Stack sets 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 stack set with service-managed permissions, if you reference a macro in your template the stack set operation will fail.</p>
57 /// </important></li>
58 /// </ul>
59 pub capabilities: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>,
60 /// <p>The key-value pairs to associate with this stack set 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>
61 /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means:</p>
62 /// <ul>
63 /// <li>
64 /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
65 /// <li>
66 /// <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 stack set, even tags you've specified before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well.</p></li>
67 /// <li>
68 /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
69 /// </ul>
70 /// <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 stack set from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the stack set, 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 stack set is not updated.</p>
71 pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
72 /// <p>Preferences for how CloudFormation performs this stack set operation.</p>
73 pub operation_preferences: ::std::option::Option<crate::types::StackSetOperationPreferences>,
74 /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.</p>
75 /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets 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>
76 /// <p>If you specified a customized administrator role when you created the stack set, you must specify a customized administrator role, even if it is the same customized administrator role used with this stack set previously.</p>
77 pub administration_role_arn: ::std::option::Option<::std::string::String>,
78 /// <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 stack set operation.</p>
79 /// <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 stack sets.</p>
80 /// <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 stack set, so long as you have permissions to perform operations on the stack set.</p>
81 pub execution_role_name: ::std::option::Option<::std::string::String>,
82 /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
83 /// <p>To update all the stack instances associated with this stack set, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
84 /// <p>If the stack set 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 stack set 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>
85 pub deployment_targets: ::std::option::Option<crate::types::DeploymentTargets>,
86 /// <p>Describes how the IAM roles required for stack set operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
87 /// <ul>
88 /// <li>
89 /// <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>
90 /// <li>
91 /// <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 stack sets with Organizations</a>.</p></li>
92 /// </ul>
93 pub permission_model: ::std::option::Option<crate::types::PermissionModels>,
94 /// <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 Manage automatic deployments for CloudFormation StackSets that use service-managed permissions in the CloudFormation User Guide.</p>
95 /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
96 pub auto_deployment: ::std::option::Option<crate::types::AutoDeployment>,
97 /// <p>The unique ID for this stack set operation.</p>
98 /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that CloudFormation successfully received them.</p>
99 /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
100 /// <p>Repeating this stack set operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
101 pub operation_id: ::std::option::Option<::std::string::String>,
102 /// <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 stack set instances.</p>
103 /// <p>To update <i>all</i> the stack instances associated with this stack set, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
104 /// <p>If the stack set 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 stack set 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>
105 pub accounts: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
106 /// <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 stack set instances.</p>
107 /// <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
108 /// <p>If the stack set 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 stack set 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>
109 pub regions: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
110 /// <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>
111 /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for stack sets with self-managed permissions.</p>
112 /// <ul>
113 /// <li>
114 /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
115 /// <li>
116 /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
117 /// <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>
118 /// </ul>
119 pub call_as: ::std::option::Option<crate::types::CallAs>,
120 /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
121 pub managed_execution: ::std::option::Option<crate::types::ManagedExecution>,
122}
123impl UpdateStackSetInput {
124 /// <p>The name or unique ID of the stack set that you want to update.</p>
125 pub fn stack_set_name(&self) -> ::std::option::Option<&str> {
126 self.stack_set_name.as_deref()
127 }
128 /// <p>A brief description of updates that you are making.</p>
129 pub fn description(&self) -> ::std::option::Option<&str> {
130 self.description.as_deref()
131 }
132 /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
133 /// <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>
134 pub fn template_body(&self) -> ::std::option::Option<&str> {
135 self.template_body.as_deref()
136 }
137 /// <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>
138 /// <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>
139 pub fn template_url(&self) -> ::std::option::Option<&str> {
140 self.template_url.as_deref()
141 }
142 /// <p>Use the existing template that's associated with the stack set that you're updating.</p>
143 /// <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>
144 pub fn use_previous_template(&self) -> ::std::option::Option<bool> {
145 self.use_previous_template
146 }
147 /// <p>A list of input parameters for the stack set template.</p>
148 ///
149 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.parameters.is_none()`.
150 pub fn parameters(&self) -> &[crate::types::Parameter] {
151 self.parameters.as_deref().unwrap_or_default()
152 }
153 /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the stack set and its associated stack instances.</p>
154 /// <ul>
155 /// <li>
156 /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
157 /// <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>
158 /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
159 /// <ul>
160 /// <li>
161 /// <p>If you have IAM resources, you can specify either capability.</p></li>
162 /// <li>
163 /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
164 /// <li>
165 /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
166 /// </ul>
167 /// <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>
168 /// <ul>
169 /// <li>
170 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
171 /// <li>
172 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
173 /// <li>
174 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
175 /// <li>
176 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
177 /// <li>
178 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
179 /// <li>
180 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
181 /// <li>
182 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
183 /// </ul>
184 /// <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>
185 /// <li>
186 /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
187 /// <p>Some templates reference macros. If your stack set template references one or more macros, you must update the stack set directly from the processed template, without first reviewing the resulting changes in a change set. To update the stack set 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>
188 /// <p>Stack sets 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 stack set with service-managed permissions, if you reference a macro in your template the stack set operation will fail.</p>
189 /// </important></li>
190 /// </ul>
191 ///
192 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.capabilities.is_none()`.
193 pub fn capabilities(&self) -> &[crate::types::Capability] {
194 self.capabilities.as_deref().unwrap_or_default()
195 }
196 /// <p>The key-value pairs to associate with this stack set 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>
197 /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means:</p>
198 /// <ul>
199 /// <li>
200 /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
201 /// <li>
202 /// <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 stack set, even tags you've specified before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well.</p></li>
203 /// <li>
204 /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
205 /// </ul>
206 /// <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 stack set from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the stack set, 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 stack set is not updated.</p>
207 ///
208 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
209 pub fn tags(&self) -> &[crate::types::Tag] {
210 self.tags.as_deref().unwrap_or_default()
211 }
212 /// <p>Preferences for how CloudFormation performs this stack set operation.</p>
213 pub fn operation_preferences(&self) -> ::std::option::Option<&crate::types::StackSetOperationPreferences> {
214 self.operation_preferences.as_ref()
215 }
216 /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.</p>
217 /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets 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>
218 /// <p>If you specified a customized administrator role when you created the stack set, you must specify a customized administrator role, even if it is the same customized administrator role used with this stack set previously.</p>
219 pub fn administration_role_arn(&self) -> ::std::option::Option<&str> {
220 self.administration_role_arn.as_deref()
221 }
222 /// <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 stack set operation.</p>
223 /// <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 stack sets.</p>
224 /// <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 stack set, so long as you have permissions to perform operations on the stack set.</p>
225 pub fn execution_role_name(&self) -> ::std::option::Option<&str> {
226 self.execution_role_name.as_deref()
227 }
228 /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
229 /// <p>To update all the stack instances associated with this stack set, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
230 /// <p>If the stack set 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 stack set 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>
231 pub fn deployment_targets(&self) -> ::std::option::Option<&crate::types::DeploymentTargets> {
232 self.deployment_targets.as_ref()
233 }
234 /// <p>Describes how the IAM roles required for stack set operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
235 /// <ul>
236 /// <li>
237 /// <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>
238 /// <li>
239 /// <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 stack sets with Organizations</a>.</p></li>
240 /// </ul>
241 pub fn permission_model(&self) -> ::std::option::Option<&crate::types::PermissionModels> {
242 self.permission_model.as_ref()
243 }
244 /// <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 Manage automatic deployments for CloudFormation StackSets that use service-managed permissions in the CloudFormation User Guide.</p>
245 /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
246 pub fn auto_deployment(&self) -> ::std::option::Option<&crate::types::AutoDeployment> {
247 self.auto_deployment.as_ref()
248 }
249 /// <p>The unique ID for this stack set operation.</p>
250 /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that CloudFormation successfully received them.</p>
251 /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
252 /// <p>Repeating this stack set operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
253 pub fn operation_id(&self) -> ::std::option::Option<&str> {
254 self.operation_id.as_deref()
255 }
256 /// <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 stack set instances.</p>
257 /// <p>To update <i>all</i> the stack instances associated with this stack set, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
258 /// <p>If the stack set 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 stack set 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>
259 ///
260 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.accounts.is_none()`.
261 pub fn accounts(&self) -> &[::std::string::String] {
262 self.accounts.as_deref().unwrap_or_default()
263 }
264 /// <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 stack set instances.</p>
265 /// <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
266 /// <p>If the stack set 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 stack set 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>
267 ///
268 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.regions.is_none()`.
269 pub fn regions(&self) -> &[::std::string::String] {
270 self.regions.as_deref().unwrap_or_default()
271 }
272 /// <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>
273 /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for stack sets with self-managed permissions.</p>
274 /// <ul>
275 /// <li>
276 /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
277 /// <li>
278 /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
279 /// <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>
280 /// </ul>
281 pub fn call_as(&self) -> ::std::option::Option<&crate::types::CallAs> {
282 self.call_as.as_ref()
283 }
284 /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
285 pub fn managed_execution(&self) -> ::std::option::Option<&crate::types::ManagedExecution> {
286 self.managed_execution.as_ref()
287 }
288}
289impl UpdateStackSetInput {
290 /// Creates a new builder-style object to manufacture [`UpdateStackSetInput`](crate::operation::update_stack_set::UpdateStackSetInput).
291 pub fn builder() -> crate::operation::update_stack_set::builders::UpdateStackSetInputBuilder {
292 crate::operation::update_stack_set::builders::UpdateStackSetInputBuilder::default()
293 }
294}
295
296/// A builder for [`UpdateStackSetInput`](crate::operation::update_stack_set::UpdateStackSetInput).
297#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
298#[non_exhaustive]
299pub struct UpdateStackSetInputBuilder {
300 pub(crate) stack_set_name: ::std::option::Option<::std::string::String>,
301 pub(crate) description: ::std::option::Option<::std::string::String>,
302 pub(crate) template_body: ::std::option::Option<::std::string::String>,
303 pub(crate) template_url: ::std::option::Option<::std::string::String>,
304 pub(crate) use_previous_template: ::std::option::Option<bool>,
305 pub(crate) parameters: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
306 pub(crate) capabilities: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>,
307 pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
308 pub(crate) operation_preferences: ::std::option::Option<crate::types::StackSetOperationPreferences>,
309 pub(crate) administration_role_arn: ::std::option::Option<::std::string::String>,
310 pub(crate) execution_role_name: ::std::option::Option<::std::string::String>,
311 pub(crate) deployment_targets: ::std::option::Option<crate::types::DeploymentTargets>,
312 pub(crate) permission_model: ::std::option::Option<crate::types::PermissionModels>,
313 pub(crate) auto_deployment: ::std::option::Option<crate::types::AutoDeployment>,
314 pub(crate) operation_id: ::std::option::Option<::std::string::String>,
315 pub(crate) accounts: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
316 pub(crate) regions: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
317 pub(crate) call_as: ::std::option::Option<crate::types::CallAs>,
318 pub(crate) managed_execution: ::std::option::Option<crate::types::ManagedExecution>,
319}
320impl UpdateStackSetInputBuilder {
321 /// <p>The name or unique ID of the stack set that you want to update.</p>
322 /// This field is required.
323 pub fn stack_set_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
324 self.stack_set_name = ::std::option::Option::Some(input.into());
325 self
326 }
327 /// <p>The name or unique ID of the stack set that you want to update.</p>
328 pub fn set_stack_set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
329 self.stack_set_name = input;
330 self
331 }
332 /// <p>The name or unique ID of the stack set that you want to update.</p>
333 pub fn get_stack_set_name(&self) -> &::std::option::Option<::std::string::String> {
334 &self.stack_set_name
335 }
336 /// <p>A brief description of updates that you are making.</p>
337 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
338 self.description = ::std::option::Option::Some(input.into());
339 self
340 }
341 /// <p>A brief description of updates that you are making.</p>
342 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
343 self.description = input;
344 self
345 }
346 /// <p>A brief description of updates that you are making.</p>
347 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
348 &self.description
349 }
350 /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
351 /// <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>
352 pub fn template_body(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
353 self.template_body = ::std::option::Option::Some(input.into());
354 self
355 }
356 /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
357 /// <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>
358 pub fn set_template_body(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
359 self.template_body = input;
360 self
361 }
362 /// <p>The structure that contains the template body, with a minimum length of 1 byte and a maximum length of 51,200 bytes.</p>
363 /// <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>
364 pub fn get_template_body(&self) -> &::std::option::Option<::std::string::String> {
365 &self.template_body
366 }
367 /// <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>
368 /// <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>
369 pub fn template_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
370 self.template_url = ::std::option::Option::Some(input.into());
371 self
372 }
373 /// <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>
374 /// <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>
375 pub fn set_template_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
376 self.template_url = input;
377 self
378 }
379 /// <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>
380 /// <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>
381 pub fn get_template_url(&self) -> &::std::option::Option<::std::string::String> {
382 &self.template_url
383 }
384 /// <p>Use the existing template that's associated with the stack set that you're updating.</p>
385 /// <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>
386 pub fn use_previous_template(mut self, input: bool) -> Self {
387 self.use_previous_template = ::std::option::Option::Some(input);
388 self
389 }
390 /// <p>Use the existing template that's associated with the stack set that you're updating.</p>
391 /// <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>
392 pub fn set_use_previous_template(mut self, input: ::std::option::Option<bool>) -> Self {
393 self.use_previous_template = input;
394 self
395 }
396 /// <p>Use the existing template that's associated with the stack set that you're updating.</p>
397 /// <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>
398 pub fn get_use_previous_template(&self) -> &::std::option::Option<bool> {
399 &self.use_previous_template
400 }
401 /// Appends an item to `parameters`.
402 ///
403 /// To override the contents of this collection use [`set_parameters`](Self::set_parameters).
404 ///
405 /// <p>A list of input parameters for the stack set template.</p>
406 pub fn parameters(mut self, input: crate::types::Parameter) -> Self {
407 let mut v = self.parameters.unwrap_or_default();
408 v.push(input);
409 self.parameters = ::std::option::Option::Some(v);
410 self
411 }
412 /// <p>A list of input parameters for the stack set template.</p>
413 pub fn set_parameters(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>) -> Self {
414 self.parameters = input;
415 self
416 }
417 /// <p>A list of input parameters for the stack set template.</p>
418 pub fn get_parameters(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Parameter>> {
419 &self.parameters
420 }
421 /// Appends an item to `capabilities`.
422 ///
423 /// To override the contents of this collection use [`set_capabilities`](Self::set_capabilities).
424 ///
425 /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the stack set and its associated stack instances.</p>
426 /// <ul>
427 /// <li>
428 /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
429 /// <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>
430 /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
431 /// <ul>
432 /// <li>
433 /// <p>If you have IAM resources, you can specify either capability.</p></li>
434 /// <li>
435 /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
436 /// <li>
437 /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
438 /// </ul>
439 /// <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>
440 /// <ul>
441 /// <li>
442 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
443 /// <li>
444 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
445 /// <li>
446 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
447 /// <li>
448 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
449 /// <li>
450 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
451 /// <li>
452 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
453 /// <li>
454 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
455 /// </ul>
456 /// <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>
457 /// <li>
458 /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
459 /// <p>Some templates reference macros. If your stack set template references one or more macros, you must update the stack set directly from the processed template, without first reviewing the resulting changes in a change set. To update the stack set 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>
460 /// <p>Stack sets 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 stack set with service-managed permissions, if you reference a macro in your template the stack set operation will fail.</p>
461 /// </important></li>
462 /// </ul>
463 pub fn capabilities(mut self, input: crate::types::Capability) -> Self {
464 let mut v = self.capabilities.unwrap_or_default();
465 v.push(input);
466 self.capabilities = ::std::option::Option::Some(v);
467 self
468 }
469 /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the stack set and its associated stack instances.</p>
470 /// <ul>
471 /// <li>
472 /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
473 /// <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>
474 /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
475 /// <ul>
476 /// <li>
477 /// <p>If you have IAM resources, you can specify either capability.</p></li>
478 /// <li>
479 /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
480 /// <li>
481 /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
482 /// </ul>
483 /// <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>
484 /// <ul>
485 /// <li>
486 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
487 /// <li>
488 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
489 /// <li>
490 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
491 /// <li>
492 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
493 /// <li>
494 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
495 /// <li>
496 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
497 /// <li>
498 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
499 /// </ul>
500 /// <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>
501 /// <li>
502 /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
503 /// <p>Some templates reference macros. If your stack set template references one or more macros, you must update the stack set directly from the processed template, without first reviewing the resulting changes in a change set. To update the stack set 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>
504 /// <p>Stack sets 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 stack set with service-managed permissions, if you reference a macro in your template the stack set operation will fail.</p>
505 /// </important></li>
506 /// </ul>
507 pub fn set_capabilities(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Capability>>) -> Self {
508 self.capabilities = input;
509 self
510 }
511 /// <p>In some cases, you must explicitly acknowledge that your stack template contains certain capabilities in order for CloudFormation to update the stack set and its associated stack instances.</p>
512 /// <ul>
513 /// <li>
514 /// <p><code>CAPABILITY_IAM</code> and <code>CAPABILITY_NAMED_IAM</code></p>
515 /// <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>
516 /// <p>The following IAM resources require you to specify either the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code> capability.</p>
517 /// <ul>
518 /// <li>
519 /// <p>If you have IAM resources, you can specify either capability.</p></li>
520 /// <li>
521 /// <p>If you have IAM resources with custom names, you <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p></li>
522 /// <li>
523 /// <p>If you don't specify either of these capabilities, CloudFormation returns an <code>InsufficientCapabilities</code> error.</p></li>
524 /// </ul>
525 /// <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>
526 /// <ul>
527 /// <li>
528 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-accesskey.html">AWS::IAM::AccessKey</a></p></li>
529 /// <li>
530 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-group.html">AWS::IAM::Group</a></p></li>
531 /// <li>
532 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-instanceprofile.html">AWS::IAM::InstanceProfile</a></p></li>
533 /// <li>
534 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-policy.html">AWS::IAM::Policy</a></p></li>
535 /// <li>
536 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html">AWS::IAM::Role</a></p></li>
537 /// <li>
538 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html">AWS::IAM::User</a></p></li>
539 /// <li>
540 /// <p><a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-usertogroupaddition.html">AWS::IAM::UserToGroupAddition</a></p></li>
541 /// </ul>
542 /// <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>
543 /// <li>
544 /// <p><code>CAPABILITY_AUTO_EXPAND</code></p>
545 /// <p>Some templates reference macros. If your stack set template references one or more macros, you must update the stack set directly from the processed template, without first reviewing the resulting changes in a change set. To update the stack set 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>
546 /// <p>Stack sets 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 stack set with service-managed permissions, if you reference a macro in your template the stack set operation will fail.</p>
547 /// </important></li>
548 /// </ul>
549 pub fn get_capabilities(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Capability>> {
550 &self.capabilities
551 }
552 /// Appends an item to `tags`.
553 ///
554 /// To override the contents of this collection use [`set_tags`](Self::set_tags).
555 ///
556 /// <p>The key-value pairs to associate with this stack set 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>
557 /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means:</p>
558 /// <ul>
559 /// <li>
560 /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
561 /// <li>
562 /// <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 stack set, even tags you've specified before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well.</p></li>
563 /// <li>
564 /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
565 /// </ul>
566 /// <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 stack set from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the stack set, 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 stack set is not updated.</p>
567 pub fn tags(mut self, input: crate::types::Tag) -> Self {
568 let mut v = self.tags.unwrap_or_default();
569 v.push(input);
570 self.tags = ::std::option::Option::Some(v);
571 self
572 }
573 /// <p>The key-value pairs to associate with this stack set 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>
574 /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means:</p>
575 /// <ul>
576 /// <li>
577 /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
578 /// <li>
579 /// <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 stack set, even tags you've specified before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well.</p></li>
580 /// <li>
581 /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
582 /// </ul>
583 /// <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 stack set from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the stack set, 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 stack set is not updated.</p>
584 pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
585 self.tags = input;
586 self
587 }
588 /// <p>The key-value pairs to associate with this stack set 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>
589 /// <p>If you specify tags for this parameter, those tags replace any list of tags that are currently associated with this stack set. This means:</p>
590 /// <ul>
591 /// <li>
592 /// <p>If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.</p></li>
593 /// <li>
594 /// <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 stack set, even tags you've specified before (for example, when creating the stack set or during a previous update of the stack set.). Any tags that you don't include in the updated list of tags are removed from the stack set, and therefore from the stacks and resources as well.</p></li>
595 /// <li>
596 /// <p>If you specify an empty value, CloudFormation removes all currently associated tags.</p></li>
597 /// </ul>
598 /// <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 stack set from the list of tags you specify, CloudFormation assumes that you want to remove those tags from the stack set, 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 stack set is not updated.</p>
599 pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
600 &self.tags
601 }
602 /// <p>Preferences for how CloudFormation performs this stack set operation.</p>
603 pub fn operation_preferences(mut self, input: crate::types::StackSetOperationPreferences) -> Self {
604 self.operation_preferences = ::std::option::Option::Some(input);
605 self
606 }
607 /// <p>Preferences for how CloudFormation performs this stack set operation.</p>
608 pub fn set_operation_preferences(mut self, input: ::std::option::Option<crate::types::StackSetOperationPreferences>) -> Self {
609 self.operation_preferences = input;
610 self
611 }
612 /// <p>Preferences for how CloudFormation performs this stack set operation.</p>
613 pub fn get_operation_preferences(&self) -> &::std::option::Option<crate::types::StackSetOperationPreferences> {
614 &self.operation_preferences
615 }
616 /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.</p>
617 /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets 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>
618 /// <p>If you specified a customized administrator role when you created the stack set, you must specify a customized administrator role, even if it is the same customized administrator role used with this stack set previously.</p>
619 pub fn administration_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
620 self.administration_role_arn = ::std::option::Option::Some(input.into());
621 self
622 }
623 /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.</p>
624 /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets 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>
625 /// <p>If you specified a customized administrator role when you created the stack set, you must specify a customized administrator role, even if it is the same customized administrator role used with this stack set previously.</p>
626 pub fn set_administration_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
627 self.administration_role_arn = input;
628 self
629 }
630 /// <p>\[Self-managed permissions\] The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.</p>
631 /// <p>Specify an IAM role only if you are using customized administrator roles to control which users or groups can manage specific stack sets 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>
632 /// <p>If you specified a customized administrator role when you created the stack set, you must specify a customized administrator role, even if it is the same customized administrator role used with this stack set previously.</p>
633 pub fn get_administration_role_arn(&self) -> &::std::option::Option<::std::string::String> {
634 &self.administration_role_arn
635 }
636 /// <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 stack set operation.</p>
637 /// <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 stack sets.</p>
638 /// <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 stack set, so long as you have permissions to perform operations on the stack set.</p>
639 pub fn execution_role_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
640 self.execution_role_name = ::std::option::Option::Some(input.into());
641 self
642 }
643 /// <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 stack set operation.</p>
644 /// <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 stack sets.</p>
645 /// <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 stack set, so long as you have permissions to perform operations on the stack set.</p>
646 pub fn set_execution_role_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
647 self.execution_role_name = input;
648 self
649 }
650 /// <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 stack set operation.</p>
651 /// <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 stack sets.</p>
652 /// <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 stack set, so long as you have permissions to perform operations on the stack set.</p>
653 pub fn get_execution_role_name(&self) -> &::std::option::Option<::std::string::String> {
654 &self.execution_role_name
655 }
656 /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
657 /// <p>To update all the stack instances associated with this stack set, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
658 /// <p>If the stack set 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 stack set 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>
659 pub fn deployment_targets(mut self, input: crate::types::DeploymentTargets) -> Self {
660 self.deployment_targets = ::std::option::Option::Some(input);
661 self
662 }
663 /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
664 /// <p>To update all the stack instances associated with this stack set, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
665 /// <p>If the stack set 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 stack set 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>
666 pub fn set_deployment_targets(mut self, input: ::std::option::Option<crate::types::DeploymentTargets>) -> Self {
667 self.deployment_targets = input;
668 self
669 }
670 /// <p>\[Service-managed permissions\] The Organizations accounts in which to update associated stack instances.</p>
671 /// <p>To update all the stack instances associated with this stack set, do not specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
672 /// <p>If the stack set 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 stack set 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>
673 pub fn get_deployment_targets(&self) -> &::std::option::Option<crate::types::DeploymentTargets> {
674 &self.deployment_targets
675 }
676 /// <p>Describes how the IAM roles required for stack set operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
677 /// <ul>
678 /// <li>
679 /// <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>
680 /// <li>
681 /// <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 stack sets with Organizations</a>.</p></li>
682 /// </ul>
683 pub fn permission_model(mut self, input: crate::types::PermissionModels) -> Self {
684 self.permission_model = ::std::option::Option::Some(input);
685 self
686 }
687 /// <p>Describes how the IAM roles required for stack set operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
688 /// <ul>
689 /// <li>
690 /// <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>
691 /// <li>
692 /// <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 stack sets with Organizations</a>.</p></li>
693 /// </ul>
694 pub fn set_permission_model(mut self, input: ::std::option::Option<crate::types::PermissionModels>) -> Self {
695 self.permission_model = input;
696 self
697 }
698 /// <p>Describes how the IAM roles required for stack set operations are created. You cannot modify <code>PermissionModel</code> if there are stack instances associated with your stack set.</p>
699 /// <ul>
700 /// <li>
701 /// <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>
702 /// <li>
703 /// <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 stack sets with Organizations</a>.</p></li>
704 /// </ul>
705 pub fn get_permission_model(&self) -> &::std::option::Option<crate::types::PermissionModels> {
706 &self.permission_model
707 }
708 /// <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 Manage automatic deployments for CloudFormation StackSets that use service-managed permissions in the CloudFormation User Guide.</p>
709 /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
710 pub fn auto_deployment(mut self, input: crate::types::AutoDeployment) -> Self {
711 self.auto_deployment = ::std::option::Option::Some(input);
712 self
713 }
714 /// <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 Manage automatic deployments for CloudFormation StackSets that use service-managed permissions in the CloudFormation User Guide.</p>
715 /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
716 pub fn set_auto_deployment(mut self, input: ::std::option::Option<crate::types::AutoDeployment>) -> Self {
717 self.auto_deployment = input;
718 self
719 }
720 /// <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 Manage automatic deployments for CloudFormation StackSets that use service-managed permissions in the CloudFormation User Guide.</p>
721 /// <p>If you specify <code>AutoDeployment</code>, don't specify <code>DeploymentTargets</code> or <code>Regions</code>.</p>
722 pub fn get_auto_deployment(&self) -> &::std::option::Option<crate::types::AutoDeployment> {
723 &self.auto_deployment
724 }
725 /// <p>The unique ID for this stack set operation.</p>
726 /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that CloudFormation successfully received them.</p>
727 /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
728 /// <p>Repeating this stack set operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
729 pub fn operation_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
730 self.operation_id = ::std::option::Option::Some(input.into());
731 self
732 }
733 /// <p>The unique ID for this stack set operation.</p>
734 /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that CloudFormation successfully received them.</p>
735 /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
736 /// <p>Repeating this stack set operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
737 pub fn set_operation_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
738 self.operation_id = input;
739 self
740 }
741 /// <p>The unique ID for this stack set operation.</p>
742 /// <p>The operation ID also functions as an idempotency token, to ensure that CloudFormation performs the stack set operation only once, even if you retry the request multiple times. You might retry stack set operation requests to ensure that CloudFormation successfully received them.</p>
743 /// <p>If you don't specify an operation ID, CloudFormation generates one automatically.</p>
744 /// <p>Repeating this stack set operation with a new operation ID retries all stack instances whose status is <code>OUTDATED</code>.</p>
745 pub fn get_operation_id(&self) -> &::std::option::Option<::std::string::String> {
746 &self.operation_id
747 }
748 /// Appends an item to `accounts`.
749 ///
750 /// To override the contents of this collection use [`set_accounts`](Self::set_accounts).
751 ///
752 /// <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 stack set instances.</p>
753 /// <p>To update <i>all</i> the stack instances associated with this stack set, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
754 /// <p>If the stack set 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 stack set 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>
755 pub fn accounts(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
756 let mut v = self.accounts.unwrap_or_default();
757 v.push(input.into());
758 self.accounts = ::std::option::Option::Some(v);
759 self
760 }
761 /// <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 stack set instances.</p>
762 /// <p>To update <i>all</i> the stack instances associated with this stack set, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
763 /// <p>If the stack set 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 stack set 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>
764 pub fn set_accounts(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
765 self.accounts = input;
766 self
767 }
768 /// <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 stack set instances.</p>
769 /// <p>To update <i>all</i> the stack instances associated with this stack set, don't specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
770 /// <p>If the stack set 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 stack set 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>
771 pub fn get_accounts(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
772 &self.accounts
773 }
774 /// Appends an item to `regions`.
775 ///
776 /// To override the contents of this collection use [`set_regions`](Self::set_regions).
777 ///
778 /// <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 stack set instances.</p>
779 /// <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
780 /// <p>If the stack set 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 stack set 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>
781 pub fn regions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
782 let mut v = self.regions.unwrap_or_default();
783 v.push(input.into());
784 self.regions = ::std::option::Option::Some(v);
785 self
786 }
787 /// <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 stack set instances.</p>
788 /// <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
789 /// <p>If the stack set 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 stack set 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>
790 pub fn set_regions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
791 self.regions = input;
792 self
793 }
794 /// <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 stack set instances.</p>
795 /// <p>To update <i>all</i> the stack instances associated with this stack set, do not specify the <code>Accounts</code> or <code>Regions</code> properties.</p>
796 /// <p>If the stack set 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 stack set 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>
797 pub fn get_regions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
798 &self.regions
799 }
800 /// <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>
801 /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for stack sets with self-managed permissions.</p>
802 /// <ul>
803 /// <li>
804 /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
805 /// <li>
806 /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
807 /// <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>
808 /// </ul>
809 pub fn call_as(mut self, input: crate::types::CallAs) -> Self {
810 self.call_as = ::std::option::Option::Some(input);
811 self
812 }
813 /// <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>
814 /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for stack sets with self-managed permissions.</p>
815 /// <ul>
816 /// <li>
817 /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
818 /// <li>
819 /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
820 /// <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>
821 /// </ul>
822 pub fn set_call_as(mut self, input: ::std::option::Option<crate::types::CallAs>) -> Self {
823 self.call_as = input;
824 self
825 }
826 /// <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>
827 /// <p>By default, <code>SELF</code> is specified. Use <code>SELF</code> for stack sets with self-managed permissions.</p>
828 /// <ul>
829 /// <li>
830 /// <p>If you are signed in to the management account, specify <code>SELF</code>.</p></li>
831 /// <li>
832 /// <p>If you are signed in to a delegated administrator account, specify <code>DELEGATED_ADMIN</code>.</p>
833 /// <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>
834 /// </ul>
835 pub fn get_call_as(&self) -> &::std::option::Option<crate::types::CallAs> {
836 &self.call_as
837 }
838 /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
839 pub fn managed_execution(mut self, input: crate::types::ManagedExecution) -> Self {
840 self.managed_execution = ::std::option::Option::Some(input);
841 self
842 }
843 /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
844 pub fn set_managed_execution(mut self, input: ::std::option::Option<crate::types::ManagedExecution>) -> Self {
845 self.managed_execution = input;
846 self
847 }
848 /// <p>Describes whether StackSets performs non-conflicting operations concurrently and queues conflicting operations.</p>
849 pub fn get_managed_execution(&self) -> &::std::option::Option<crate::types::ManagedExecution> {
850 &self.managed_execution
851 }
852 /// Consumes the builder and constructs a [`UpdateStackSetInput`](crate::operation::update_stack_set::UpdateStackSetInput).
853 pub fn build(
854 self,
855 ) -> ::std::result::Result<crate::operation::update_stack_set::UpdateStackSetInput, ::aws_smithy_types::error::operation::BuildError> {
856 ::std::result::Result::Ok(crate::operation::update_stack_set::UpdateStackSetInput {
857 stack_set_name: self.stack_set_name,
858 description: self.description,
859 template_body: self.template_body,
860 template_url: self.template_url,
861 use_previous_template: self.use_previous_template,
862 parameters: self.parameters,
863 capabilities: self.capabilities,
864 tags: self.tags,
865 operation_preferences: self.operation_preferences,
866 administration_role_arn: self.administration_role_arn,
867 execution_role_name: self.execution_role_name,
868 deployment_targets: self.deployment_targets,
869 permission_model: self.permission_model,
870 auto_deployment: self.auto_deployment,
871 operation_id: self.operation_id,
872 accounts: self.accounts,
873 regions: self.regions,
874 call_as: self.call_as,
875 managed_execution: self.managed_execution,
876 })
877 }
878}