1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/cloudformation/CloudFormation_EXPORTS.h>
8 #include <aws/cloudformation/CloudFormationRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/cloudformation/model/RollbackConfiguration.h>
12 #include <aws/cloudformation/model/OnFailure.h>
13 #include <aws/cloudformation/model/Parameter.h>
14 #include <aws/cloudformation/model/Capability.h>
15 #include <aws/cloudformation/model/Tag.h>
16 #include <utility>
17 
18 namespace Aws
19 {
20 namespace CloudFormation
21 {
22 namespace Model
23 {
24 
25   /**
26    * <p>The input for <a>CreateStack</a> action.</p><p><h3>See Also:</h3>   <a
27    * href="http://docs.aws.amazon.com/goto/WebAPI/cloudformation-2010-05-15/CreateStackInput">AWS
28    * API Reference</a></p>
29    */
30   class AWS_CLOUDFORMATION_API CreateStackRequest : public CloudFormationRequest
31   {
32   public:
33     CreateStackRequest();
34 
35     // Service request name is the Operation name which will send this request out,
36     // each operation should has unique request name, so that we can get operation's name from this request.
37     // Note: this is not true for response, multiple operations may have the same response name,
38     // so we can not get operation's name from response.
GetServiceRequestName()39     inline virtual const char* GetServiceRequestName() const override { return "CreateStack"; }
40 
41     Aws::String SerializePayload() const override;
42 
43   protected:
44     void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
45 
46   public:
47 
48     /**
49      * <p>The name that is associated with the stack. The name must be unique in the
50      * Region in which you are creating the stack.</p>  <p>A stack name can
51      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
52      * with an alphabetical character and cannot be longer than 128 characters.</p>
53      *
54      */
GetStackName()55     inline const Aws::String& GetStackName() const{ return m_stackName; }
56 
57     /**
58      * <p>The name that is associated with the stack. The name must be unique in the
59      * Region in which you are creating the stack.</p>  <p>A stack name can
60      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
61      * with an alphabetical character and cannot be longer than 128 characters.</p>
62      *
63      */
StackNameHasBeenSet()64     inline bool StackNameHasBeenSet() const { return m_stackNameHasBeenSet; }
65 
66     /**
67      * <p>The name that is associated with the stack. The name must be unique in the
68      * Region in which you are creating the stack.</p>  <p>A stack name can
69      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
70      * with an alphabetical character and cannot be longer than 128 characters.</p>
71      *
72      */
SetStackName(const Aws::String & value)73     inline void SetStackName(const Aws::String& value) { m_stackNameHasBeenSet = true; m_stackName = value; }
74 
75     /**
76      * <p>The name that is associated with the stack. The name must be unique in the
77      * Region in which you are creating the stack.</p>  <p>A stack name can
78      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
79      * with an alphabetical character and cannot be longer than 128 characters.</p>
80      *
81      */
SetStackName(Aws::String && value)82     inline void SetStackName(Aws::String&& value) { m_stackNameHasBeenSet = true; m_stackName = std::move(value); }
83 
84     /**
85      * <p>The name that is associated with the stack. The name must be unique in the
86      * Region in which you are creating the stack.</p>  <p>A stack name can
87      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
88      * with an alphabetical character and cannot be longer than 128 characters.</p>
89      *
90      */
SetStackName(const char * value)91     inline void SetStackName(const char* value) { m_stackNameHasBeenSet = true; m_stackName.assign(value); }
92 
93     /**
94      * <p>The name that is associated with the stack. The name must be unique in the
95      * Region in which you are creating the stack.</p>  <p>A stack name can
96      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
97      * with an alphabetical character and cannot be longer than 128 characters.</p>
98      *
99      */
WithStackName(const Aws::String & value)100     inline CreateStackRequest& WithStackName(const Aws::String& value) { SetStackName(value); return *this;}
101 
102     /**
103      * <p>The name that is associated with the stack. The name must be unique in the
104      * Region in which you are creating the stack.</p>  <p>A stack name can
105      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
106      * with an alphabetical character and cannot be longer than 128 characters.</p>
107      *
108      */
WithStackName(Aws::String && value)109     inline CreateStackRequest& WithStackName(Aws::String&& value) { SetStackName(std::move(value)); return *this;}
110 
111     /**
112      * <p>The name that is associated with the stack. The name must be unique in the
113      * Region in which you are creating the stack.</p>  <p>A stack name can
114      * contain only alphanumeric characters (case sensitive) and hyphens. It must start
115      * with an alphabetical character and cannot be longer than 128 characters.</p>
116      *
117      */
WithStackName(const char * value)118     inline CreateStackRequest& WithStackName(const char* value) { SetStackName(value); return *this;}
119 
120 
121     /**
122      * <p>Structure containing the template body with a minimum length of 1 byte and a
123      * maximum length of 51,200 bytes. For more information, go to <a
124      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
125      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
126      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
127      * parameter, but not both.</p>
128      */
GetTemplateBody()129     inline const Aws::String& GetTemplateBody() const{ return m_templateBody; }
130 
131     /**
132      * <p>Structure containing the template body with a minimum length of 1 byte and a
133      * maximum length of 51,200 bytes. For more information, go to <a
134      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
135      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
136      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
137      * parameter, but not both.</p>
138      */
TemplateBodyHasBeenSet()139     inline bool TemplateBodyHasBeenSet() const { return m_templateBodyHasBeenSet; }
140 
141     /**
142      * <p>Structure containing the template body with a minimum length of 1 byte and a
143      * maximum length of 51,200 bytes. For more information, go to <a
144      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
145      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
146      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
147      * parameter, but not both.</p>
148      */
SetTemplateBody(const Aws::String & value)149     inline void SetTemplateBody(const Aws::String& value) { m_templateBodyHasBeenSet = true; m_templateBody = value; }
150 
151     /**
152      * <p>Structure containing the template body with a minimum length of 1 byte and a
153      * maximum length of 51,200 bytes. For more information, go to <a
154      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
155      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
156      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
157      * parameter, but not both.</p>
158      */
SetTemplateBody(Aws::String && value)159     inline void SetTemplateBody(Aws::String&& value) { m_templateBodyHasBeenSet = true; m_templateBody = std::move(value); }
160 
161     /**
162      * <p>Structure containing the template body with a minimum length of 1 byte and a
163      * maximum length of 51,200 bytes. For more information, go to <a
164      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
165      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
166      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
167      * parameter, but not both.</p>
168      */
SetTemplateBody(const char * value)169     inline void SetTemplateBody(const char* value) { m_templateBodyHasBeenSet = true; m_templateBody.assign(value); }
170 
171     /**
172      * <p>Structure containing the template body with a minimum length of 1 byte and a
173      * maximum length of 51,200 bytes. For more information, go to <a
174      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
175      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
176      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
177      * parameter, but not both.</p>
178      */
WithTemplateBody(const Aws::String & value)179     inline CreateStackRequest& WithTemplateBody(const Aws::String& value) { SetTemplateBody(value); return *this;}
180 
181     /**
182      * <p>Structure containing the template body with a minimum length of 1 byte and a
183      * maximum length of 51,200 bytes. For more information, go to <a
184      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
185      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
186      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
187      * parameter, but not both.</p>
188      */
WithTemplateBody(Aws::String && value)189     inline CreateStackRequest& WithTemplateBody(Aws::String&& value) { SetTemplateBody(std::move(value)); return *this;}
190 
191     /**
192      * <p>Structure containing the template body with a minimum length of 1 byte and a
193      * maximum length of 51,200 bytes. For more information, go to <a
194      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
195      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
196      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
197      * parameter, but not both.</p>
198      */
WithTemplateBody(const char * value)199     inline CreateStackRequest& WithTemplateBody(const char* value) { SetTemplateBody(value); return *this;}
200 
201 
202     /**
203      * <p>Location of file containing the template body. The URL must point to a
204      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
205      * Systems Manager document. For more information, go to the <a
206      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
207      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
208      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
209      * parameter, but not both.</p>
210      */
GetTemplateURL()211     inline const Aws::String& GetTemplateURL() const{ return m_templateURL; }
212 
213     /**
214      * <p>Location of file containing the template body. The URL must point to a
215      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
216      * Systems Manager document. For more information, go to the <a
217      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
218      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
219      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
220      * parameter, but not both.</p>
221      */
TemplateURLHasBeenSet()222     inline bool TemplateURLHasBeenSet() const { return m_templateURLHasBeenSet; }
223 
224     /**
225      * <p>Location of file containing the template body. The URL must point to a
226      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
227      * Systems Manager document. For more information, go to the <a
228      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
229      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
230      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
231      * parameter, but not both.</p>
232      */
SetTemplateURL(const Aws::String & value)233     inline void SetTemplateURL(const Aws::String& value) { m_templateURLHasBeenSet = true; m_templateURL = value; }
234 
235     /**
236      * <p>Location of file containing the template body. The URL must point to a
237      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
238      * Systems Manager document. For more information, go to the <a
239      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
240      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
241      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
242      * parameter, but not both.</p>
243      */
SetTemplateURL(Aws::String && value)244     inline void SetTemplateURL(Aws::String&& value) { m_templateURLHasBeenSet = true; m_templateURL = std::move(value); }
245 
246     /**
247      * <p>Location of file containing the template body. The URL must point to a
248      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
249      * Systems Manager document. For more information, go to the <a
250      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
251      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
252      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
253      * parameter, but not both.</p>
254      */
SetTemplateURL(const char * value)255     inline void SetTemplateURL(const char* value) { m_templateURLHasBeenSet = true; m_templateURL.assign(value); }
256 
257     /**
258      * <p>Location of file containing the template body. The URL must point to a
259      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
260      * Systems Manager document. For more information, go to the <a
261      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
262      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
263      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
264      * parameter, but not both.</p>
265      */
WithTemplateURL(const Aws::String & value)266     inline CreateStackRequest& WithTemplateURL(const Aws::String& value) { SetTemplateURL(value); return *this;}
267 
268     /**
269      * <p>Location of file containing the template body. The URL must point to a
270      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
271      * Systems Manager document. For more information, go to the <a
272      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
273      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
274      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
275      * parameter, but not both.</p>
276      */
WithTemplateURL(Aws::String && value)277     inline CreateStackRequest& WithTemplateURL(Aws::String&& value) { SetTemplateURL(std::move(value)); return *this;}
278 
279     /**
280      * <p>Location of file containing the template body. The URL must point to a
281      * template (max size: 460,800 bytes) that is located in an Amazon S3 bucket or a
282      * Systems Manager document. For more information, go to the <a
283      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html">Template
284      * Anatomy</a> in the CloudFormation User Guide.</p> <p>Conditional: You must
285      * specify either the <code>TemplateBody</code> or the <code>TemplateURL</code>
286      * parameter, but not both.</p>
287      */
WithTemplateURL(const char * value)288     inline CreateStackRequest& WithTemplateURL(const char* value) { SetTemplateURL(value); return *this;}
289 
290 
291     /**
292      * <p>A list of <code>Parameter</code> structures that specify input parameters for
293      * the stack. For more information, see the <a
294      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
295      * data type.</p>
296      */
GetParameters()297     inline const Aws::Vector<Parameter>& GetParameters() const{ return m_parameters; }
298 
299     /**
300      * <p>A list of <code>Parameter</code> structures that specify input parameters for
301      * the stack. For more information, see the <a
302      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
303      * data type.</p>
304      */
ParametersHasBeenSet()305     inline bool ParametersHasBeenSet() const { return m_parametersHasBeenSet; }
306 
307     /**
308      * <p>A list of <code>Parameter</code> structures that specify input parameters for
309      * the stack. For more information, see the <a
310      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
311      * data type.</p>
312      */
SetParameters(const Aws::Vector<Parameter> & value)313     inline void SetParameters(const Aws::Vector<Parameter>& value) { m_parametersHasBeenSet = true; m_parameters = value; }
314 
315     /**
316      * <p>A list of <code>Parameter</code> structures that specify input parameters for
317      * the stack. For more information, see the <a
318      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
319      * data type.</p>
320      */
SetParameters(Aws::Vector<Parameter> && value)321     inline void SetParameters(Aws::Vector<Parameter>&& value) { m_parametersHasBeenSet = true; m_parameters = std::move(value); }
322 
323     /**
324      * <p>A list of <code>Parameter</code> structures that specify input parameters for
325      * the stack. For more information, see the <a
326      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
327      * data type.</p>
328      */
WithParameters(const Aws::Vector<Parameter> & value)329     inline CreateStackRequest& WithParameters(const Aws::Vector<Parameter>& value) { SetParameters(value); return *this;}
330 
331     /**
332      * <p>A list of <code>Parameter</code> structures that specify input parameters for
333      * the stack. For more information, see the <a
334      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
335      * data type.</p>
336      */
WithParameters(Aws::Vector<Parameter> && value)337     inline CreateStackRequest& WithParameters(Aws::Vector<Parameter>&& value) { SetParameters(std::move(value)); return *this;}
338 
339     /**
340      * <p>A list of <code>Parameter</code> structures that specify input parameters for
341      * the stack. For more information, see the <a
342      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
343      * data type.</p>
344      */
AddParameters(const Parameter & value)345     inline CreateStackRequest& AddParameters(const Parameter& value) { m_parametersHasBeenSet = true; m_parameters.push_back(value); return *this; }
346 
347     /**
348      * <p>A list of <code>Parameter</code> structures that specify input parameters for
349      * the stack. For more information, see the <a
350      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html">Parameter</a>
351      * data type.</p>
352      */
AddParameters(Parameter && value)353     inline CreateStackRequest& AddParameters(Parameter&& value) { m_parametersHasBeenSet = true; m_parameters.push_back(std::move(value)); return *this; }
354 
355 
356     /**
357      * <p>Set to <code>true</code> to disable rollback of the stack if stack creation
358      * failed. You can specify either <code>DisableRollback</code> or
359      * <code>OnFailure</code>, but not both.</p> <p>Default: <code>false</code> </p>
360      */
GetDisableRollback()361     inline bool GetDisableRollback() const{ return m_disableRollback; }
362 
363     /**
364      * <p>Set to <code>true</code> to disable rollback of the stack if stack creation
365      * failed. You can specify either <code>DisableRollback</code> or
366      * <code>OnFailure</code>, but not both.</p> <p>Default: <code>false</code> </p>
367      */
DisableRollbackHasBeenSet()368     inline bool DisableRollbackHasBeenSet() const { return m_disableRollbackHasBeenSet; }
369 
370     /**
371      * <p>Set to <code>true</code> to disable rollback of the stack if stack creation
372      * failed. You can specify either <code>DisableRollback</code> or
373      * <code>OnFailure</code>, but not both.</p> <p>Default: <code>false</code> </p>
374      */
SetDisableRollback(bool value)375     inline void SetDisableRollback(bool value) { m_disableRollbackHasBeenSet = true; m_disableRollback = value; }
376 
377     /**
378      * <p>Set to <code>true</code> to disable rollback of the stack if stack creation
379      * failed. You can specify either <code>DisableRollback</code> or
380      * <code>OnFailure</code>, but not both.</p> <p>Default: <code>false</code> </p>
381      */
WithDisableRollback(bool value)382     inline CreateStackRequest& WithDisableRollback(bool value) { SetDisableRollback(value); return *this;}
383 
384 
385     /**
386      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
387      * updating operations, and for the specified monitoring period afterwards.</p>
388      */
GetRollbackConfiguration()389     inline const RollbackConfiguration& GetRollbackConfiguration() const{ return m_rollbackConfiguration; }
390 
391     /**
392      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
393      * updating operations, and for the specified monitoring period afterwards.</p>
394      */
RollbackConfigurationHasBeenSet()395     inline bool RollbackConfigurationHasBeenSet() const { return m_rollbackConfigurationHasBeenSet; }
396 
397     /**
398      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
399      * updating operations, and for the specified monitoring period afterwards.</p>
400      */
SetRollbackConfiguration(const RollbackConfiguration & value)401     inline void SetRollbackConfiguration(const RollbackConfiguration& value) { m_rollbackConfigurationHasBeenSet = true; m_rollbackConfiguration = value; }
402 
403     /**
404      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
405      * updating operations, and for the specified monitoring period afterwards.</p>
406      */
SetRollbackConfiguration(RollbackConfiguration && value)407     inline void SetRollbackConfiguration(RollbackConfiguration&& value) { m_rollbackConfigurationHasBeenSet = true; m_rollbackConfiguration = std::move(value); }
408 
409     /**
410      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
411      * updating operations, and for the specified monitoring period afterwards.</p>
412      */
WithRollbackConfiguration(const RollbackConfiguration & value)413     inline CreateStackRequest& WithRollbackConfiguration(const RollbackConfiguration& value) { SetRollbackConfiguration(value); return *this;}
414 
415     /**
416      * <p>The rollback triggers for CloudFormation to monitor during stack creation and
417      * updating operations, and for the specified monitoring period afterwards.</p>
418      */
WithRollbackConfiguration(RollbackConfiguration && value)419     inline CreateStackRequest& WithRollbackConfiguration(RollbackConfiguration&& value) { SetRollbackConfiguration(std::move(value)); return *this;}
420 
421 
422     /**
423      * <p>The amount of time that can pass before the stack status becomes
424      * CREATE_FAILED; if <code>DisableRollback</code> is not set or is set to
425      * <code>false</code>, the stack will be rolled back.</p>
426      */
GetTimeoutInMinutes()427     inline int GetTimeoutInMinutes() const{ return m_timeoutInMinutes; }
428 
429     /**
430      * <p>The amount of time that can pass before the stack status becomes
431      * CREATE_FAILED; if <code>DisableRollback</code> is not set or is set to
432      * <code>false</code>, the stack will be rolled back.</p>
433      */
TimeoutInMinutesHasBeenSet()434     inline bool TimeoutInMinutesHasBeenSet() const { return m_timeoutInMinutesHasBeenSet; }
435 
436     /**
437      * <p>The amount of time that can pass before the stack status becomes
438      * CREATE_FAILED; if <code>DisableRollback</code> is not set or is set to
439      * <code>false</code>, the stack will be rolled back.</p>
440      */
SetTimeoutInMinutes(int value)441     inline void SetTimeoutInMinutes(int value) { m_timeoutInMinutesHasBeenSet = true; m_timeoutInMinutes = value; }
442 
443     /**
444      * <p>The amount of time that can pass before the stack status becomes
445      * CREATE_FAILED; if <code>DisableRollback</code> is not set or is set to
446      * <code>false</code>, the stack will be rolled back.</p>
447      */
WithTimeoutInMinutes(int value)448     inline CreateStackRequest& WithTimeoutInMinutes(int value) { SetTimeoutInMinutes(value); return *this;}
449 
450 
451     /**
452      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
453      * events. You can find your SNS topic ARNs using the SNS console or your Command
454      * Line Interface (CLI).</p>
455      */
GetNotificationARNs()456     inline const Aws::Vector<Aws::String>& GetNotificationARNs() const{ return m_notificationARNs; }
457 
458     /**
459      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
460      * events. You can find your SNS topic ARNs using the SNS console or your Command
461      * Line Interface (CLI).</p>
462      */
NotificationARNsHasBeenSet()463     inline bool NotificationARNsHasBeenSet() const { return m_notificationARNsHasBeenSet; }
464 
465     /**
466      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
467      * events. You can find your SNS topic ARNs using the SNS console or your Command
468      * Line Interface (CLI).</p>
469      */
SetNotificationARNs(const Aws::Vector<Aws::String> & value)470     inline void SetNotificationARNs(const Aws::Vector<Aws::String>& value) { m_notificationARNsHasBeenSet = true; m_notificationARNs = value; }
471 
472     /**
473      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
474      * events. You can find your SNS topic ARNs using the SNS console or your Command
475      * Line Interface (CLI).</p>
476      */
SetNotificationARNs(Aws::Vector<Aws::String> && value)477     inline void SetNotificationARNs(Aws::Vector<Aws::String>&& value) { m_notificationARNsHasBeenSet = true; m_notificationARNs = std::move(value); }
478 
479     /**
480      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
481      * events. You can find your SNS topic ARNs using the SNS console or your Command
482      * Line Interface (CLI).</p>
483      */
WithNotificationARNs(const Aws::Vector<Aws::String> & value)484     inline CreateStackRequest& WithNotificationARNs(const Aws::Vector<Aws::String>& value) { SetNotificationARNs(value); return *this;}
485 
486     /**
487      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
488      * events. You can find your SNS topic ARNs using the SNS console or your Command
489      * Line Interface (CLI).</p>
490      */
WithNotificationARNs(Aws::Vector<Aws::String> && value)491     inline CreateStackRequest& WithNotificationARNs(Aws::Vector<Aws::String>&& value) { SetNotificationARNs(std::move(value)); return *this;}
492 
493     /**
494      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
495      * events. You can find your SNS topic ARNs using the SNS console or your Command
496      * Line Interface (CLI).</p>
497      */
AddNotificationARNs(const Aws::String & value)498     inline CreateStackRequest& AddNotificationARNs(const Aws::String& value) { m_notificationARNsHasBeenSet = true; m_notificationARNs.push_back(value); return *this; }
499 
500     /**
501      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
502      * events. You can find your SNS topic ARNs using the SNS console or your Command
503      * Line Interface (CLI).</p>
504      */
AddNotificationARNs(Aws::String && value)505     inline CreateStackRequest& AddNotificationARNs(Aws::String&& value) { m_notificationARNsHasBeenSet = true; m_notificationARNs.push_back(std::move(value)); return *this; }
506 
507     /**
508      * <p>The Simple Notification Service (SNS) topic ARNs to publish stack related
509      * events. You can find your SNS topic ARNs using the SNS console or your Command
510      * Line Interface (CLI).</p>
511      */
AddNotificationARNs(const char * value)512     inline CreateStackRequest& AddNotificationARNs(const char* value) { m_notificationARNsHasBeenSet = true; m_notificationARNs.push_back(value); return *this; }
513 
514 
515     /**
516      * <p>In some cases, you must explicitly acknowledge that your stack template
517      * contains certain capabilities in order for CloudFormation to create the
518      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
519      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
520      * resources that can affect permissions in your Amazon Web Services account; for
521      * example, by creating new Identity and Access Management (IAM) users. For those
522      * stacks, you must explicitly acknowledge this by specifying one of these
523      * capabilities.</p> <p>The following IAM resources require you to specify either
524      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
525      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
526      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
527      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
528      * don't specify either of these capabilities, CloudFormation returns an
529      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
530      * template contains these resources, we recommend that you review all permissions
531      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
532      * <a
533      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
534      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
535      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
536      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
537      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
538      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
539      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
540      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
541      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
542      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
543      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
544      * AWS::IAM::User</a> </p> </li> <li> <p> <a
545      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
546      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
547      * <a
548      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
549      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
550      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
551      * perform custom processing on templates; this can include simple actions like
552      * find-and-replace operations, all the way to extensive transformations of entire
553      * templates. Because of this, users typically create a change set from the
554      * processed template, so that they can review the changes resulting from the
555      * macros before actually creating the stack. If your stack template contains one
556      * or more macros, and you choose to create a stack directly from the processed
557      * template, without first reviewing the resulting changes in a change set, you
558      * must acknowledge this capability. This includes the <a
559      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
560      * and <a
561      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
562      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
563      * create a stack from a stack template that contains macros <i>and</i> nested
564      * stacks, you must create the stack directly from the template using this
565      * capability.</p>  <p>You should only create stacks directly from a
566      * stack template that contains macros if you know what processing the macro
567      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
568      * processing stack templates. Be aware that the Lambda function owner can update
569      * the function operation without CloudFormation being notified.</p>
570      * <p>For more information, see <a
571      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
572      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
573      * </ul>
574      */
GetCapabilities()575     inline const Aws::Vector<Capability>& GetCapabilities() const{ return m_capabilities; }
576 
577     /**
578      * <p>In some cases, you must explicitly acknowledge that your stack template
579      * contains certain capabilities in order for CloudFormation to create the
580      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
581      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
582      * resources that can affect permissions in your Amazon Web Services account; for
583      * example, by creating new Identity and Access Management (IAM) users. For those
584      * stacks, you must explicitly acknowledge this by specifying one of these
585      * capabilities.</p> <p>The following IAM resources require you to specify either
586      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
587      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
588      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
589      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
590      * don't specify either of these capabilities, CloudFormation returns an
591      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
592      * template contains these resources, we recommend that you review all permissions
593      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
594      * <a
595      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
596      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
597      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
598      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
599      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
600      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
601      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
602      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
603      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
604      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
605      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
606      * AWS::IAM::User</a> </p> </li> <li> <p> <a
607      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
608      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
609      * <a
610      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
611      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
612      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
613      * perform custom processing on templates; this can include simple actions like
614      * find-and-replace operations, all the way to extensive transformations of entire
615      * templates. Because of this, users typically create a change set from the
616      * processed template, so that they can review the changes resulting from the
617      * macros before actually creating the stack. If your stack template contains one
618      * or more macros, and you choose to create a stack directly from the processed
619      * template, without first reviewing the resulting changes in a change set, you
620      * must acknowledge this capability. This includes the <a
621      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
622      * and <a
623      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
624      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
625      * create a stack from a stack template that contains macros <i>and</i> nested
626      * stacks, you must create the stack directly from the template using this
627      * capability.</p>  <p>You should only create stacks directly from a
628      * stack template that contains macros if you know what processing the macro
629      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
630      * processing stack templates. Be aware that the Lambda function owner can update
631      * the function operation without CloudFormation being notified.</p>
632      * <p>For more information, see <a
633      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
634      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
635      * </ul>
636      */
CapabilitiesHasBeenSet()637     inline bool CapabilitiesHasBeenSet() const { return m_capabilitiesHasBeenSet; }
638 
639     /**
640      * <p>In some cases, you must explicitly acknowledge that your stack template
641      * contains certain capabilities in order for CloudFormation to create the
642      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
643      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
644      * resources that can affect permissions in your Amazon Web Services account; for
645      * example, by creating new Identity and Access Management (IAM) users. For those
646      * stacks, you must explicitly acknowledge this by specifying one of these
647      * capabilities.</p> <p>The following IAM resources require you to specify either
648      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
649      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
650      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
651      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
652      * don't specify either of these capabilities, CloudFormation returns an
653      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
654      * template contains these resources, we recommend that you review all permissions
655      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
656      * <a
657      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
658      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
659      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
660      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
661      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
662      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
663      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
664      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
665      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
666      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
667      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
668      * AWS::IAM::User</a> </p> </li> <li> <p> <a
669      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
670      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
671      * <a
672      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
673      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
674      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
675      * perform custom processing on templates; this can include simple actions like
676      * find-and-replace operations, all the way to extensive transformations of entire
677      * templates. Because of this, users typically create a change set from the
678      * processed template, so that they can review the changes resulting from the
679      * macros before actually creating the stack. If your stack template contains one
680      * or more macros, and you choose to create a stack directly from the processed
681      * template, without first reviewing the resulting changes in a change set, you
682      * must acknowledge this capability. This includes the <a
683      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
684      * and <a
685      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
686      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
687      * create a stack from a stack template that contains macros <i>and</i> nested
688      * stacks, you must create the stack directly from the template using this
689      * capability.</p>  <p>You should only create stacks directly from a
690      * stack template that contains macros if you know what processing the macro
691      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
692      * processing stack templates. Be aware that the Lambda function owner can update
693      * the function operation without CloudFormation being notified.</p>
694      * <p>For more information, see <a
695      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
696      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
697      * </ul>
698      */
SetCapabilities(const Aws::Vector<Capability> & value)699     inline void SetCapabilities(const Aws::Vector<Capability>& value) { m_capabilitiesHasBeenSet = true; m_capabilities = value; }
700 
701     /**
702      * <p>In some cases, you must explicitly acknowledge that your stack template
703      * contains certain capabilities in order for CloudFormation to create the
704      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
705      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
706      * resources that can affect permissions in your Amazon Web Services account; for
707      * example, by creating new Identity and Access Management (IAM) users. For those
708      * stacks, you must explicitly acknowledge this by specifying one of these
709      * capabilities.</p> <p>The following IAM resources require you to specify either
710      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
711      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
712      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
713      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
714      * don't specify either of these capabilities, CloudFormation returns an
715      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
716      * template contains these resources, we recommend that you review all permissions
717      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
718      * <a
719      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
720      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
721      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
722      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
723      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
724      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
725      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
726      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
727      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
728      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
729      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
730      * AWS::IAM::User</a> </p> </li> <li> <p> <a
731      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
732      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
733      * <a
734      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
735      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
736      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
737      * perform custom processing on templates; this can include simple actions like
738      * find-and-replace operations, all the way to extensive transformations of entire
739      * templates. Because of this, users typically create a change set from the
740      * processed template, so that they can review the changes resulting from the
741      * macros before actually creating the stack. If your stack template contains one
742      * or more macros, and you choose to create a stack directly from the processed
743      * template, without first reviewing the resulting changes in a change set, you
744      * must acknowledge this capability. This includes the <a
745      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
746      * and <a
747      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
748      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
749      * create a stack from a stack template that contains macros <i>and</i> nested
750      * stacks, you must create the stack directly from the template using this
751      * capability.</p>  <p>You should only create stacks directly from a
752      * stack template that contains macros if you know what processing the macro
753      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
754      * processing stack templates. Be aware that the Lambda function owner can update
755      * the function operation without CloudFormation being notified.</p>
756      * <p>For more information, see <a
757      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
758      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
759      * </ul>
760      */
SetCapabilities(Aws::Vector<Capability> && value)761     inline void SetCapabilities(Aws::Vector<Capability>&& value) { m_capabilitiesHasBeenSet = true; m_capabilities = std::move(value); }
762 
763     /**
764      * <p>In some cases, you must explicitly acknowledge that your stack template
765      * contains certain capabilities in order for CloudFormation to create the
766      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
767      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
768      * resources that can affect permissions in your Amazon Web Services account; for
769      * example, by creating new Identity and Access Management (IAM) users. For those
770      * stacks, you must explicitly acknowledge this by specifying one of these
771      * capabilities.</p> <p>The following IAM resources require you to specify either
772      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
773      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
774      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
775      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
776      * don't specify either of these capabilities, CloudFormation returns an
777      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
778      * template contains these resources, we recommend that you review all permissions
779      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
780      * <a
781      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
782      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
783      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
784      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
785      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
786      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
787      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
788      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
789      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
790      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
791      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
792      * AWS::IAM::User</a> </p> </li> <li> <p> <a
793      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
794      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
795      * <a
796      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
797      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
798      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
799      * perform custom processing on templates; this can include simple actions like
800      * find-and-replace operations, all the way to extensive transformations of entire
801      * templates. Because of this, users typically create a change set from the
802      * processed template, so that they can review the changes resulting from the
803      * macros before actually creating the stack. If your stack template contains one
804      * or more macros, and you choose to create a stack directly from the processed
805      * template, without first reviewing the resulting changes in a change set, you
806      * must acknowledge this capability. This includes the <a
807      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
808      * and <a
809      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
810      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
811      * create a stack from a stack template that contains macros <i>and</i> nested
812      * stacks, you must create the stack directly from the template using this
813      * capability.</p>  <p>You should only create stacks directly from a
814      * stack template that contains macros if you know what processing the macro
815      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
816      * processing stack templates. Be aware that the Lambda function owner can update
817      * the function operation without CloudFormation being notified.</p>
818      * <p>For more information, see <a
819      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
820      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
821      * </ul>
822      */
WithCapabilities(const Aws::Vector<Capability> & value)823     inline CreateStackRequest& WithCapabilities(const Aws::Vector<Capability>& value) { SetCapabilities(value); return *this;}
824 
825     /**
826      * <p>In some cases, you must explicitly acknowledge that your stack template
827      * contains certain capabilities in order for CloudFormation to create the
828      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
829      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
830      * resources that can affect permissions in your Amazon Web Services account; for
831      * example, by creating new Identity and Access Management (IAM) users. For those
832      * stacks, you must explicitly acknowledge this by specifying one of these
833      * capabilities.</p> <p>The following IAM resources require you to specify either
834      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
835      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
836      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
837      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
838      * don't specify either of these capabilities, CloudFormation returns an
839      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
840      * template contains these resources, we recommend that you review all permissions
841      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
842      * <a
843      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
844      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
845      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
846      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
847      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
848      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
849      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
850      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
851      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
852      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
853      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
854      * AWS::IAM::User</a> </p> </li> <li> <p> <a
855      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
856      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
857      * <a
858      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
859      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
860      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
861      * perform custom processing on templates; this can include simple actions like
862      * find-and-replace operations, all the way to extensive transformations of entire
863      * templates. Because of this, users typically create a change set from the
864      * processed template, so that they can review the changes resulting from the
865      * macros before actually creating the stack. If your stack template contains one
866      * or more macros, and you choose to create a stack directly from the processed
867      * template, without first reviewing the resulting changes in a change set, you
868      * must acknowledge this capability. This includes the <a
869      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
870      * and <a
871      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
872      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
873      * create a stack from a stack template that contains macros <i>and</i> nested
874      * stacks, you must create the stack directly from the template using this
875      * capability.</p>  <p>You should only create stacks directly from a
876      * stack template that contains macros if you know what processing the macro
877      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
878      * processing stack templates. Be aware that the Lambda function owner can update
879      * the function operation without CloudFormation being notified.</p>
880      * <p>For more information, see <a
881      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
882      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
883      * </ul>
884      */
WithCapabilities(Aws::Vector<Capability> && value)885     inline CreateStackRequest& WithCapabilities(Aws::Vector<Capability>&& value) { SetCapabilities(std::move(value)); return *this;}
886 
887     /**
888      * <p>In some cases, you must explicitly acknowledge that your stack template
889      * contains certain capabilities in order for CloudFormation to create the
890      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
891      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
892      * resources that can affect permissions in your Amazon Web Services account; for
893      * example, by creating new Identity and Access Management (IAM) users. For those
894      * stacks, you must explicitly acknowledge this by specifying one of these
895      * capabilities.</p> <p>The following IAM resources require you to specify either
896      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
897      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
898      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
899      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
900      * don't specify either of these capabilities, CloudFormation returns an
901      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
902      * template contains these resources, we recommend that you review all permissions
903      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
904      * <a
905      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
906      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
907      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
908      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
909      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
910      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
911      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
912      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
913      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
914      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
915      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
916      * AWS::IAM::User</a> </p> </li> <li> <p> <a
917      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
918      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
919      * <a
920      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
921      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
922      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
923      * perform custom processing on templates; this can include simple actions like
924      * find-and-replace operations, all the way to extensive transformations of entire
925      * templates. Because of this, users typically create a change set from the
926      * processed template, so that they can review the changes resulting from the
927      * macros before actually creating the stack. If your stack template contains one
928      * or more macros, and you choose to create a stack directly from the processed
929      * template, without first reviewing the resulting changes in a change set, you
930      * must acknowledge this capability. This includes the <a
931      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
932      * and <a
933      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
934      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
935      * create a stack from a stack template that contains macros <i>and</i> nested
936      * stacks, you must create the stack directly from the template using this
937      * capability.</p>  <p>You should only create stacks directly from a
938      * stack template that contains macros if you know what processing the macro
939      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
940      * processing stack templates. Be aware that the Lambda function owner can update
941      * the function operation without CloudFormation being notified.</p>
942      * <p>For more information, see <a
943      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
944      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
945      * </ul>
946      */
AddCapabilities(const Capability & value)947     inline CreateStackRequest& AddCapabilities(const Capability& value) { m_capabilitiesHasBeenSet = true; m_capabilities.push_back(value); return *this; }
948 
949     /**
950      * <p>In some cases, you must explicitly acknowledge that your stack template
951      * contains certain capabilities in order for CloudFormation to create the
952      * stack.</p> <ul> <li> <p> <code>CAPABILITY_IAM</code> and
953      * <code>CAPABILITY_NAMED_IAM</code> </p> <p>Some stack templates might include
954      * resources that can affect permissions in your Amazon Web Services account; for
955      * example, by creating new Identity and Access Management (IAM) users. For those
956      * stacks, you must explicitly acknowledge this by specifying one of these
957      * capabilities.</p> <p>The following IAM resources require you to specify either
958      * the <code>CAPABILITY_IAM</code> or <code>CAPABILITY_NAMED_IAM</code>
959      * capability.</p> <ul> <li> <p>If you have IAM resources, you can specify either
960      * capability.</p> </li> <li> <p>If you have IAM resources with custom names, you
961      * <i>must</i> specify <code>CAPABILITY_NAMED_IAM</code>.</p> </li> <li> <p>If you
962      * don't specify either of these capabilities, CloudFormation returns an
963      * <code>InsufficientCapabilities</code> error.</p> </li> </ul> <p>If your stack
964      * template contains these resources, we recommend that you review all permissions
965      * associated with them and edit their permissions if necessary.</p> <ul> <li> <p>
966      * <a
967      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html">
968      * AWS::IAM::AccessKey</a> </p> </li> <li> <p> <a
969      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html">
970      * AWS::IAM::Group</a> </p> </li> <li> <p> <a
971      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html">
972      * AWS::IAM::InstanceProfile</a> </p> </li> <li> <p> <a
973      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html">
974      * AWS::IAM::Policy</a> </p> </li> <li> <p> <a
975      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html">
976      * AWS::IAM::Role</a> </p> </li> <li> <p> <a
977      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html">
978      * AWS::IAM::User</a> </p> </li> <li> <p> <a
979      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html">
980      * AWS::IAM::UserToGroupAddition</a> </p> </li> </ul> <p>For more information, see
981      * <a
982      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities">Acknowledging
983      * IAM Resources in CloudFormation Templates</a>.</p> </li> <li> <p>
984      * <code>CAPABILITY_AUTO_EXPAND</code> </p> <p>Some template contain macros. Macros
985      * perform custom processing on templates; this can include simple actions like
986      * find-and-replace operations, all the way to extensive transformations of entire
987      * templates. Because of this, users typically create a change set from the
988      * processed template, so that they can review the changes resulting from the
989      * macros before actually creating the stack. If your stack template contains one
990      * or more macros, and you choose to create a stack directly from the processed
991      * template, without first reviewing the resulting changes in a change set, you
992      * must acknowledge this capability. This includes the <a
993      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html">AWS::Include</a>
994      * and <a
995      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html">AWS::Serverless</a>
996      * transforms, which are macros hosted by CloudFormation.</p> <p>If you want to
997      * create a stack from a stack template that contains macros <i>and</i> nested
998      * stacks, you must create the stack directly from the template using this
999      * capability.</p>  <p>You should only create stacks directly from a
1000      * stack template that contains macros if you know what processing the macro
1001      * performs.</p> <p>Each macro relies on an underlying Lambda service function for
1002      * processing stack templates. Be aware that the Lambda function owner can update
1003      * the function operation without CloudFormation being notified.</p>
1004      * <p>For more information, see <a
1005      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html">Using
1006      * CloudFormation Macros to Perform Custom Processing on Templates</a>.</p> </li>
1007      * </ul>
1008      */
AddCapabilities(Capability && value)1009     inline CreateStackRequest& AddCapabilities(Capability&& value) { m_capabilitiesHasBeenSet = true; m_capabilities.push_back(std::move(value)); return *this; }
1010 
1011 
1012     /**
1013      * <p>The template resource types that you have permissions to work with for this
1014      * create stack action, such as <code>AWS::EC2::Instance</code>,
1015      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1016      * following syntax to describe template resource types: <code>AWS::*</code> (for
1017      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1018      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1019      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1020      * particular Amazon Web Services service), and
1021      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1022      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1023      * doesn't include a resource that you're creating, the stack creation fails. By
1024      * default, CloudFormation grants permissions to all resource types. Identity and
1025      * Access Management (IAM) uses this parameter for CloudFormation-specific
1026      * condition keys in IAM policies. For more information, see <a
1027      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1028      * Access with Identity and Access Management</a>.</p>
1029      */
GetResourceTypes()1030     inline const Aws::Vector<Aws::String>& GetResourceTypes() const{ return m_resourceTypes; }
1031 
1032     /**
1033      * <p>The template resource types that you have permissions to work with for this
1034      * create stack action, such as <code>AWS::EC2::Instance</code>,
1035      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1036      * following syntax to describe template resource types: <code>AWS::*</code> (for
1037      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1038      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1039      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1040      * particular Amazon Web Services service), and
1041      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1042      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1043      * doesn't include a resource that you're creating, the stack creation fails. By
1044      * default, CloudFormation grants permissions to all resource types. Identity and
1045      * Access Management (IAM) uses this parameter for CloudFormation-specific
1046      * condition keys in IAM policies. For more information, see <a
1047      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1048      * Access with Identity and Access Management</a>.</p>
1049      */
ResourceTypesHasBeenSet()1050     inline bool ResourceTypesHasBeenSet() const { return m_resourceTypesHasBeenSet; }
1051 
1052     /**
1053      * <p>The template resource types that you have permissions to work with for this
1054      * create stack action, such as <code>AWS::EC2::Instance</code>,
1055      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1056      * following syntax to describe template resource types: <code>AWS::*</code> (for
1057      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1058      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1059      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1060      * particular Amazon Web Services service), and
1061      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1062      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1063      * doesn't include a resource that you're creating, the stack creation fails. By
1064      * default, CloudFormation grants permissions to all resource types. Identity and
1065      * Access Management (IAM) uses this parameter for CloudFormation-specific
1066      * condition keys in IAM policies. For more information, see <a
1067      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1068      * Access with Identity and Access Management</a>.</p>
1069      */
SetResourceTypes(const Aws::Vector<Aws::String> & value)1070     inline void SetResourceTypes(const Aws::Vector<Aws::String>& value) { m_resourceTypesHasBeenSet = true; m_resourceTypes = value; }
1071 
1072     /**
1073      * <p>The template resource types that you have permissions to work with for this
1074      * create stack action, such as <code>AWS::EC2::Instance</code>,
1075      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1076      * following syntax to describe template resource types: <code>AWS::*</code> (for
1077      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1078      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1079      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1080      * particular Amazon Web Services service), and
1081      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1082      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1083      * doesn't include a resource that you're creating, the stack creation fails. By
1084      * default, CloudFormation grants permissions to all resource types. Identity and
1085      * Access Management (IAM) uses this parameter for CloudFormation-specific
1086      * condition keys in IAM policies. For more information, see <a
1087      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1088      * Access with Identity and Access Management</a>.</p>
1089      */
SetResourceTypes(Aws::Vector<Aws::String> && value)1090     inline void SetResourceTypes(Aws::Vector<Aws::String>&& value) { m_resourceTypesHasBeenSet = true; m_resourceTypes = std::move(value); }
1091 
1092     /**
1093      * <p>The template resource types that you have permissions to work with for this
1094      * create stack action, such as <code>AWS::EC2::Instance</code>,
1095      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1096      * following syntax to describe template resource types: <code>AWS::*</code> (for
1097      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1098      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1099      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1100      * particular Amazon Web Services service), and
1101      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1102      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1103      * doesn't include a resource that you're creating, the stack creation fails. By
1104      * default, CloudFormation grants permissions to all resource types. Identity and
1105      * Access Management (IAM) uses this parameter for CloudFormation-specific
1106      * condition keys in IAM policies. For more information, see <a
1107      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1108      * Access with Identity and Access Management</a>.</p>
1109      */
WithResourceTypes(const Aws::Vector<Aws::String> & value)1110     inline CreateStackRequest& WithResourceTypes(const Aws::Vector<Aws::String>& value) { SetResourceTypes(value); return *this;}
1111 
1112     /**
1113      * <p>The template resource types that you have permissions to work with for this
1114      * create stack action, such as <code>AWS::EC2::Instance</code>,
1115      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1116      * following syntax to describe template resource types: <code>AWS::*</code> (for
1117      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1118      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1119      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1120      * particular Amazon Web Services service), and
1121      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1122      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1123      * doesn't include a resource that you're creating, the stack creation fails. By
1124      * default, CloudFormation grants permissions to all resource types. Identity and
1125      * Access Management (IAM) uses this parameter for CloudFormation-specific
1126      * condition keys in IAM policies. For more information, see <a
1127      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1128      * Access with Identity and Access Management</a>.</p>
1129      */
WithResourceTypes(Aws::Vector<Aws::String> && value)1130     inline CreateStackRequest& WithResourceTypes(Aws::Vector<Aws::String>&& value) { SetResourceTypes(std::move(value)); return *this;}
1131 
1132     /**
1133      * <p>The template resource types that you have permissions to work with for this
1134      * create stack action, such as <code>AWS::EC2::Instance</code>,
1135      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1136      * following syntax to describe template resource types: <code>AWS::*</code> (for
1137      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1138      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1139      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1140      * particular Amazon Web Services service), and
1141      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1142      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1143      * doesn't include a resource that you're creating, the stack creation fails. By
1144      * default, CloudFormation grants permissions to all resource types. Identity and
1145      * Access Management (IAM) uses this parameter for CloudFormation-specific
1146      * condition keys in IAM policies. For more information, see <a
1147      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1148      * Access with Identity and Access Management</a>.</p>
1149      */
AddResourceTypes(const Aws::String & value)1150     inline CreateStackRequest& AddResourceTypes(const Aws::String& value) { m_resourceTypesHasBeenSet = true; m_resourceTypes.push_back(value); return *this; }
1151 
1152     /**
1153      * <p>The template resource types that you have permissions to work with for this
1154      * create stack action, such as <code>AWS::EC2::Instance</code>,
1155      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1156      * following syntax to describe template resource types: <code>AWS::*</code> (for
1157      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1158      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1159      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1160      * particular Amazon Web Services service), and
1161      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1162      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1163      * doesn't include a resource that you're creating, the stack creation fails. By
1164      * default, CloudFormation grants permissions to all resource types. Identity and
1165      * Access Management (IAM) uses this parameter for CloudFormation-specific
1166      * condition keys in IAM policies. For more information, see <a
1167      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1168      * Access with Identity and Access Management</a>.</p>
1169      */
AddResourceTypes(Aws::String && value)1170     inline CreateStackRequest& AddResourceTypes(Aws::String&& value) { m_resourceTypesHasBeenSet = true; m_resourceTypes.push_back(std::move(value)); return *this; }
1171 
1172     /**
1173      * <p>The template resource types that you have permissions to work with for this
1174      * create stack action, such as <code>AWS::EC2::Instance</code>,
1175      * <code>AWS::EC2::*</code>, or <code>Custom::MyCustomInstance</code>. Use the
1176      * following syntax to describe template resource types: <code>AWS::*</code> (for
1177      * all Amazon Web Services resources), <code>Custom::*</code> (for all custom
1178      * resources), <code>Custom::<i>logical_ID</i> </code> (for a specific custom
1179      * resource), <code>AWS::<i>service_name</i>::*</code> (for all resources of a
1180      * particular Amazon Web Services service), and
1181      * <code>AWS::<i>service_name</i>::<i>resource_logical_ID</i> </code> (for a
1182      * specific Amazon Web Services resource).</p> <p>If the list of resource types
1183      * doesn't include a resource that you're creating, the stack creation fails. By
1184      * default, CloudFormation grants permissions to all resource types. Identity and
1185      * Access Management (IAM) uses this parameter for CloudFormation-specific
1186      * condition keys in IAM policies. For more information, see <a
1187      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html">Controlling
1188      * Access with Identity and Access Management</a>.</p>
1189      */
AddResourceTypes(const char * value)1190     inline CreateStackRequest& AddResourceTypes(const char* value) { m_resourceTypesHasBeenSet = true; m_resourceTypes.push_back(value); return *this; }
1191 
1192 
1193     /**
1194      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1195      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1196      * role's credentials to make calls on your behalf. CloudFormation always uses this
1197      * role for all future operations on the stack. As long as users have permission to
1198      * operate on the stack, CloudFormation uses this role even if the users don't have
1199      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1200      * you don't specify a value, CloudFormation uses the role that was previously
1201      * associated with the stack. If no role is available, CloudFormation uses a
1202      * temporary session that is generated from your user credentials.</p>
1203      */
GetRoleARN()1204     inline const Aws::String& GetRoleARN() const{ return m_roleARN; }
1205 
1206     /**
1207      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1208      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1209      * role's credentials to make calls on your behalf. CloudFormation always uses this
1210      * role for all future operations on the stack. As long as users have permission to
1211      * operate on the stack, CloudFormation uses this role even if the users don't have
1212      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1213      * you don't specify a value, CloudFormation uses the role that was previously
1214      * associated with the stack. If no role is available, CloudFormation uses a
1215      * temporary session that is generated from your user credentials.</p>
1216      */
RoleARNHasBeenSet()1217     inline bool RoleARNHasBeenSet() const { return m_roleARNHasBeenSet; }
1218 
1219     /**
1220      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1221      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1222      * role's credentials to make calls on your behalf. CloudFormation always uses this
1223      * role for all future operations on the stack. As long as users have permission to
1224      * operate on the stack, CloudFormation uses this role even if the users don't have
1225      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1226      * you don't specify a value, CloudFormation uses the role that was previously
1227      * associated with the stack. If no role is available, CloudFormation uses a
1228      * temporary session that is generated from your user credentials.</p>
1229      */
SetRoleARN(const Aws::String & value)1230     inline void SetRoleARN(const Aws::String& value) { m_roleARNHasBeenSet = true; m_roleARN = value; }
1231 
1232     /**
1233      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1234      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1235      * role's credentials to make calls on your behalf. CloudFormation always uses this
1236      * role for all future operations on the stack. As long as users have permission to
1237      * operate on the stack, CloudFormation uses this role even if the users don't have
1238      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1239      * you don't specify a value, CloudFormation uses the role that was previously
1240      * associated with the stack. If no role is available, CloudFormation uses a
1241      * temporary session that is generated from your user credentials.</p>
1242      */
SetRoleARN(Aws::String && value)1243     inline void SetRoleARN(Aws::String&& value) { m_roleARNHasBeenSet = true; m_roleARN = std::move(value); }
1244 
1245     /**
1246      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1247      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1248      * role's credentials to make calls on your behalf. CloudFormation always uses this
1249      * role for all future operations on the stack. As long as users have permission to
1250      * operate on the stack, CloudFormation uses this role even if the users don't have
1251      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1252      * you don't specify a value, CloudFormation uses the role that was previously
1253      * associated with the stack. If no role is available, CloudFormation uses a
1254      * temporary session that is generated from your user credentials.</p>
1255      */
SetRoleARN(const char * value)1256     inline void SetRoleARN(const char* value) { m_roleARNHasBeenSet = true; m_roleARN.assign(value); }
1257 
1258     /**
1259      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1260      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1261      * role's credentials to make calls on your behalf. CloudFormation always uses this
1262      * role for all future operations on the stack. As long as users have permission to
1263      * operate on the stack, CloudFormation uses this role even if the users don't have
1264      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1265      * you don't specify a value, CloudFormation uses the role that was previously
1266      * associated with the stack. If no role is available, CloudFormation uses a
1267      * temporary session that is generated from your user credentials.</p>
1268      */
WithRoleARN(const Aws::String & value)1269     inline CreateStackRequest& WithRoleARN(const Aws::String& value) { SetRoleARN(value); return *this;}
1270 
1271     /**
1272      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1273      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1274      * role's credentials to make calls on your behalf. CloudFormation always uses this
1275      * role for all future operations on the stack. As long as users have permission to
1276      * operate on the stack, CloudFormation uses this role even if the users don't have
1277      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1278      * you don't specify a value, CloudFormation uses the role that was previously
1279      * associated with the stack. If no role is available, CloudFormation uses a
1280      * temporary session that is generated from your user credentials.</p>
1281      */
WithRoleARN(Aws::String && value)1282     inline CreateStackRequest& WithRoleARN(Aws::String&& value) { SetRoleARN(std::move(value)); return *this;}
1283 
1284     /**
1285      * <p>The Amazon Resource Name (ARN) of an Identity and Access Management (IAM)
1286      * role that CloudFormation assumes to create the stack. CloudFormation uses the
1287      * role's credentials to make calls on your behalf. CloudFormation always uses this
1288      * role for all future operations on the stack. As long as users have permission to
1289      * operate on the stack, CloudFormation uses this role even if the users don't have
1290      * permission to pass it. Ensure that the role grants least privilege.</p> <p>If
1291      * you don't specify a value, CloudFormation uses the role that was previously
1292      * associated with the stack. If no role is available, CloudFormation uses a
1293      * temporary session that is generated from your user credentials.</p>
1294      */
WithRoleARN(const char * value)1295     inline CreateStackRequest& WithRoleARN(const char* value) { SetRoleARN(value); return *this;}
1296 
1297 
1298     /**
1299      * <p>Determines what action will be taken if stack creation fails. This must be
1300      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1301      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1302      * <p>Default: <code>ROLLBACK</code> </p>
1303      */
GetOnFailure()1304     inline const OnFailure& GetOnFailure() const{ return m_onFailure; }
1305 
1306     /**
1307      * <p>Determines what action will be taken if stack creation fails. This must be
1308      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1309      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1310      * <p>Default: <code>ROLLBACK</code> </p>
1311      */
OnFailureHasBeenSet()1312     inline bool OnFailureHasBeenSet() const { return m_onFailureHasBeenSet; }
1313 
1314     /**
1315      * <p>Determines what action will be taken if stack creation fails. This must be
1316      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1317      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1318      * <p>Default: <code>ROLLBACK</code> </p>
1319      */
SetOnFailure(const OnFailure & value)1320     inline void SetOnFailure(const OnFailure& value) { m_onFailureHasBeenSet = true; m_onFailure = value; }
1321 
1322     /**
1323      * <p>Determines what action will be taken if stack creation fails. This must be
1324      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1325      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1326      * <p>Default: <code>ROLLBACK</code> </p>
1327      */
SetOnFailure(OnFailure && value)1328     inline void SetOnFailure(OnFailure&& value) { m_onFailureHasBeenSet = true; m_onFailure = std::move(value); }
1329 
1330     /**
1331      * <p>Determines what action will be taken if stack creation fails. This must be
1332      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1333      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1334      * <p>Default: <code>ROLLBACK</code> </p>
1335      */
WithOnFailure(const OnFailure & value)1336     inline CreateStackRequest& WithOnFailure(const OnFailure& value) { SetOnFailure(value); return *this;}
1337 
1338     /**
1339      * <p>Determines what action will be taken if stack creation fails. This must be
1340      * one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either
1341      * <code>OnFailure</code> or <code>DisableRollback</code>, but not both.</p>
1342      * <p>Default: <code>ROLLBACK</code> </p>
1343      */
WithOnFailure(OnFailure && value)1344     inline CreateStackRequest& WithOnFailure(OnFailure&& value) { SetOnFailure(std::move(value)); return *this;}
1345 
1346 
1347     /**
1348      * <p>Structure containing the stack policy body. For more information, go to <a
1349      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1350      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1351      * You can specify either the <code>StackPolicyBody</code> or the
1352      * <code>StackPolicyURL</code> parameter, but not both.</p>
1353      */
GetStackPolicyBody()1354     inline const Aws::String& GetStackPolicyBody() const{ return m_stackPolicyBody; }
1355 
1356     /**
1357      * <p>Structure containing the stack policy body. For more information, go to <a
1358      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1359      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1360      * You can specify either the <code>StackPolicyBody</code> or the
1361      * <code>StackPolicyURL</code> parameter, but not both.</p>
1362      */
StackPolicyBodyHasBeenSet()1363     inline bool StackPolicyBodyHasBeenSet() const { return m_stackPolicyBodyHasBeenSet; }
1364 
1365     /**
1366      * <p>Structure containing the stack policy body. For more information, go to <a
1367      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1368      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1369      * You can specify either the <code>StackPolicyBody</code> or the
1370      * <code>StackPolicyURL</code> parameter, but not both.</p>
1371      */
SetStackPolicyBody(const Aws::String & value)1372     inline void SetStackPolicyBody(const Aws::String& value) { m_stackPolicyBodyHasBeenSet = true; m_stackPolicyBody = value; }
1373 
1374     /**
1375      * <p>Structure containing the stack policy body. For more information, go to <a
1376      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1377      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1378      * You can specify either the <code>StackPolicyBody</code> or the
1379      * <code>StackPolicyURL</code> parameter, but not both.</p>
1380      */
SetStackPolicyBody(Aws::String && value)1381     inline void SetStackPolicyBody(Aws::String&& value) { m_stackPolicyBodyHasBeenSet = true; m_stackPolicyBody = std::move(value); }
1382 
1383     /**
1384      * <p>Structure containing the stack policy body. For more information, go to <a
1385      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1386      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1387      * You can specify either the <code>StackPolicyBody</code> or the
1388      * <code>StackPolicyURL</code> parameter, but not both.</p>
1389      */
SetStackPolicyBody(const char * value)1390     inline void SetStackPolicyBody(const char* value) { m_stackPolicyBodyHasBeenSet = true; m_stackPolicyBody.assign(value); }
1391 
1392     /**
1393      * <p>Structure containing the stack policy body. For more information, go to <a
1394      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1395      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1396      * You can specify either the <code>StackPolicyBody</code> or the
1397      * <code>StackPolicyURL</code> parameter, but not both.</p>
1398      */
WithStackPolicyBody(const Aws::String & value)1399     inline CreateStackRequest& WithStackPolicyBody(const Aws::String& value) { SetStackPolicyBody(value); return *this;}
1400 
1401     /**
1402      * <p>Structure containing the stack policy body. For more information, go to <a
1403      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1404      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1405      * You can specify either the <code>StackPolicyBody</code> or the
1406      * <code>StackPolicyURL</code> parameter, but not both.</p>
1407      */
WithStackPolicyBody(Aws::String && value)1408     inline CreateStackRequest& WithStackPolicyBody(Aws::String&& value) { SetStackPolicyBody(std::move(value)); return *this;}
1409 
1410     /**
1411      * <p>Structure containing the stack policy body. For more information, go to <a
1412      * href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html">
1413      * Prevent Updates to Stack Resources</a> in the <i>CloudFormation User Guide</i>.
1414      * You can specify either the <code>StackPolicyBody</code> or the
1415      * <code>StackPolicyURL</code> parameter, but not both.</p>
1416      */
WithStackPolicyBody(const char * value)1417     inline CreateStackRequest& WithStackPolicyBody(const char* value) { SetStackPolicyBody(value); return *this;}
1418 
1419 
1420     /**
1421      * <p>Location of a file containing the stack policy. The URL must point to a
1422      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1423      * stack. You can specify either the <code>StackPolicyBody</code> or the
1424      * <code>StackPolicyURL</code> parameter, but not both.</p>
1425      */
GetStackPolicyURL()1426     inline const Aws::String& GetStackPolicyURL() const{ return m_stackPolicyURL; }
1427 
1428     /**
1429      * <p>Location of a file containing the stack policy. The URL must point to a
1430      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1431      * stack. You can specify either the <code>StackPolicyBody</code> or the
1432      * <code>StackPolicyURL</code> parameter, but not both.</p>
1433      */
StackPolicyURLHasBeenSet()1434     inline bool StackPolicyURLHasBeenSet() const { return m_stackPolicyURLHasBeenSet; }
1435 
1436     /**
1437      * <p>Location of a file containing the stack policy. The URL must point to a
1438      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1439      * stack. You can specify either the <code>StackPolicyBody</code> or the
1440      * <code>StackPolicyURL</code> parameter, but not both.</p>
1441      */
SetStackPolicyURL(const Aws::String & value)1442     inline void SetStackPolicyURL(const Aws::String& value) { m_stackPolicyURLHasBeenSet = true; m_stackPolicyURL = value; }
1443 
1444     /**
1445      * <p>Location of a file containing the stack policy. The URL must point to a
1446      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1447      * stack. You can specify either the <code>StackPolicyBody</code> or the
1448      * <code>StackPolicyURL</code> parameter, but not both.</p>
1449      */
SetStackPolicyURL(Aws::String && value)1450     inline void SetStackPolicyURL(Aws::String&& value) { m_stackPolicyURLHasBeenSet = true; m_stackPolicyURL = std::move(value); }
1451 
1452     /**
1453      * <p>Location of a file containing the stack policy. The URL must point to a
1454      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1455      * stack. You can specify either the <code>StackPolicyBody</code> or the
1456      * <code>StackPolicyURL</code> parameter, but not both.</p>
1457      */
SetStackPolicyURL(const char * value)1458     inline void SetStackPolicyURL(const char* value) { m_stackPolicyURLHasBeenSet = true; m_stackPolicyURL.assign(value); }
1459 
1460     /**
1461      * <p>Location of a file containing the stack policy. The URL must point to a
1462      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1463      * stack. You can specify either the <code>StackPolicyBody</code> or the
1464      * <code>StackPolicyURL</code> parameter, but not both.</p>
1465      */
WithStackPolicyURL(const Aws::String & value)1466     inline CreateStackRequest& WithStackPolicyURL(const Aws::String& value) { SetStackPolicyURL(value); return *this;}
1467 
1468     /**
1469      * <p>Location of a file containing the stack policy. The URL must point to a
1470      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1471      * stack. You can specify either the <code>StackPolicyBody</code> or the
1472      * <code>StackPolicyURL</code> parameter, but not both.</p>
1473      */
WithStackPolicyURL(Aws::String && value)1474     inline CreateStackRequest& WithStackPolicyURL(Aws::String&& value) { SetStackPolicyURL(std::move(value)); return *this;}
1475 
1476     /**
1477      * <p>Location of a file containing the stack policy. The URL must point to a
1478      * policy (maximum size: 16 KB) located in an S3 bucket in the same Region as the
1479      * stack. You can specify either the <code>StackPolicyBody</code> or the
1480      * <code>StackPolicyURL</code> parameter, but not both.</p>
1481      */
WithStackPolicyURL(const char * value)1482     inline CreateStackRequest& WithStackPolicyURL(const char* value) { SetStackPolicyURL(value); return *this;}
1483 
1484 
1485     /**
1486      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1487      * these tags to the resources created in the stack. A maximum number of 50 tags
1488      * can be specified.</p>
1489      */
GetTags()1490     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
1491 
1492     /**
1493      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1494      * these tags to the resources created in the stack. A maximum number of 50 tags
1495      * can be specified.</p>
1496      */
TagsHasBeenSet()1497     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
1498 
1499     /**
1500      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1501      * these tags to the resources created in the stack. A maximum number of 50 tags
1502      * can be specified.</p>
1503      */
SetTags(const Aws::Vector<Tag> & value)1504     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
1505 
1506     /**
1507      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1508      * these tags to the resources created in the stack. A maximum number of 50 tags
1509      * can be specified.</p>
1510      */
SetTags(Aws::Vector<Tag> && value)1511     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
1512 
1513     /**
1514      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1515      * these tags to the resources created in the stack. A maximum number of 50 tags
1516      * can be specified.</p>
1517      */
WithTags(const Aws::Vector<Tag> & value)1518     inline CreateStackRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
1519 
1520     /**
1521      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1522      * these tags to the resources created in the stack. A maximum number of 50 tags
1523      * can be specified.</p>
1524      */
WithTags(Aws::Vector<Tag> && value)1525     inline CreateStackRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
1526 
1527     /**
1528      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1529      * these tags to the resources created in the stack. A maximum number of 50 tags
1530      * can be specified.</p>
1531      */
AddTags(const Tag & value)1532     inline CreateStackRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
1533 
1534     /**
1535      * <p>Key-value pairs to associate with this stack. CloudFormation also propagates
1536      * these tags to the resources created in the stack. A maximum number of 50 tags
1537      * can be specified.</p>
1538      */
AddTags(Tag && value)1539     inline CreateStackRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
1540 
1541 
1542     /**
1543      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1544      * token if you plan to retry requests so that CloudFormation knows that you're not
1545      * attempting to create a stack with the same name. You might retry
1546      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1547      * received them.</p> <p>All events triggered by a given stack operation are
1548      * assigned the same client request token, which you can use to track operations.
1549      * For example, if you execute a <code>CreateStack</code> operation with the token
1550      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1551      * operation will have <code>ClientRequestToken</code> set as
1552      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1553      * request token on the Events tab. Stack operations that are initiated from the
1554      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1555      * easily identify the stack operation . For example, if you create a stack using
1556      * the console, each stack event would be assigned the same token in the following
1557      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1558      * </p>
1559      */
GetClientRequestToken()1560     inline const Aws::String& GetClientRequestToken() const{ return m_clientRequestToken; }
1561 
1562     /**
1563      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1564      * token if you plan to retry requests so that CloudFormation knows that you're not
1565      * attempting to create a stack with the same name. You might retry
1566      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1567      * received them.</p> <p>All events triggered by a given stack operation are
1568      * assigned the same client request token, which you can use to track operations.
1569      * For example, if you execute a <code>CreateStack</code> operation with the token
1570      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1571      * operation will have <code>ClientRequestToken</code> set as
1572      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1573      * request token on the Events tab. Stack operations that are initiated from the
1574      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1575      * easily identify the stack operation . For example, if you create a stack using
1576      * the console, each stack event would be assigned the same token in the following
1577      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1578      * </p>
1579      */
ClientRequestTokenHasBeenSet()1580     inline bool ClientRequestTokenHasBeenSet() const { return m_clientRequestTokenHasBeenSet; }
1581 
1582     /**
1583      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1584      * token if you plan to retry requests so that CloudFormation knows that you're not
1585      * attempting to create a stack with the same name. You might retry
1586      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1587      * received them.</p> <p>All events triggered by a given stack operation are
1588      * assigned the same client request token, which you can use to track operations.
1589      * For example, if you execute a <code>CreateStack</code> operation with the token
1590      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1591      * operation will have <code>ClientRequestToken</code> set as
1592      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1593      * request token on the Events tab. Stack operations that are initiated from the
1594      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1595      * easily identify the stack operation . For example, if you create a stack using
1596      * the console, each stack event would be assigned the same token in the following
1597      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1598      * </p>
1599      */
SetClientRequestToken(const Aws::String & value)1600     inline void SetClientRequestToken(const Aws::String& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = value; }
1601 
1602     /**
1603      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1604      * token if you plan to retry requests so that CloudFormation knows that you're not
1605      * attempting to create a stack with the same name. You might retry
1606      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1607      * received them.</p> <p>All events triggered by a given stack operation are
1608      * assigned the same client request token, which you can use to track operations.
1609      * For example, if you execute a <code>CreateStack</code> operation with the token
1610      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1611      * operation will have <code>ClientRequestToken</code> set as
1612      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1613      * request token on the Events tab. Stack operations that are initiated from the
1614      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1615      * easily identify the stack operation . For example, if you create a stack using
1616      * the console, each stack event would be assigned the same token in the following
1617      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1618      * </p>
1619      */
SetClientRequestToken(Aws::String && value)1620     inline void SetClientRequestToken(Aws::String&& value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken = std::move(value); }
1621 
1622     /**
1623      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1624      * token if you plan to retry requests so that CloudFormation knows that you're not
1625      * attempting to create a stack with the same name. You might retry
1626      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1627      * received them.</p> <p>All events triggered by a given stack operation are
1628      * assigned the same client request token, which you can use to track operations.
1629      * For example, if you execute a <code>CreateStack</code> operation with the token
1630      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1631      * operation will have <code>ClientRequestToken</code> set as
1632      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1633      * request token on the Events tab. Stack operations that are initiated from the
1634      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1635      * easily identify the stack operation . For example, if you create a stack using
1636      * the console, each stack event would be assigned the same token in the following
1637      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1638      * </p>
1639      */
SetClientRequestToken(const char * value)1640     inline void SetClientRequestToken(const char* value) { m_clientRequestTokenHasBeenSet = true; m_clientRequestToken.assign(value); }
1641 
1642     /**
1643      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1644      * token if you plan to retry requests so that CloudFormation knows that you're not
1645      * attempting to create a stack with the same name. You might retry
1646      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1647      * received them.</p> <p>All events triggered by a given stack operation are
1648      * assigned the same client request token, which you can use to track operations.
1649      * For example, if you execute a <code>CreateStack</code> operation with the token
1650      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1651      * operation will have <code>ClientRequestToken</code> set as
1652      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1653      * request token on the Events tab. Stack operations that are initiated from the
1654      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1655      * easily identify the stack operation . For example, if you create a stack using
1656      * the console, each stack event would be assigned the same token in the following
1657      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1658      * </p>
1659      */
WithClientRequestToken(const Aws::String & value)1660     inline CreateStackRequest& WithClientRequestToken(const Aws::String& value) { SetClientRequestToken(value); return *this;}
1661 
1662     /**
1663      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1664      * token if you plan to retry requests so that CloudFormation knows that you're not
1665      * attempting to create a stack with the same name. You might retry
1666      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1667      * received them.</p> <p>All events triggered by a given stack operation are
1668      * assigned the same client request token, which you can use to track operations.
1669      * For example, if you execute a <code>CreateStack</code> operation with the token
1670      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1671      * operation will have <code>ClientRequestToken</code> set as
1672      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1673      * request token on the Events tab. Stack operations that are initiated from the
1674      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1675      * easily identify the stack operation . For example, if you create a stack using
1676      * the console, each stack event would be assigned the same token in the following
1677      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1678      * </p>
1679      */
WithClientRequestToken(Aws::String && value)1680     inline CreateStackRequest& WithClientRequestToken(Aws::String&& value) { SetClientRequestToken(std::move(value)); return *this;}
1681 
1682     /**
1683      * <p>A unique identifier for this <code>CreateStack</code> request. Specify this
1684      * token if you plan to retry requests so that CloudFormation knows that you're not
1685      * attempting to create a stack with the same name. You might retry
1686      * <code>CreateStack</code> requests to ensure that CloudFormation successfully
1687      * received them.</p> <p>All events triggered by a given stack operation are
1688      * assigned the same client request token, which you can use to track operations.
1689      * For example, if you execute a <code>CreateStack</code> operation with the token
1690      * <code>token1</code>, then all the <code>StackEvents</code> generated by that
1691      * operation will have <code>ClientRequestToken</code> set as
1692      * <code>token1</code>.</p> <p>In the console, stack operations display the client
1693      * request token on the Events tab. Stack operations that are initiated from the
1694      * console use the token format <i>Console-StackOperation-ID</i>, which helps you
1695      * easily identify the stack operation . For example, if you create a stack using
1696      * the console, each stack event would be assigned the same token in the following
1697      * format: <code>Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002</code>.
1698      * </p>
1699      */
WithClientRequestToken(const char * value)1700     inline CreateStackRequest& WithClientRequestToken(const char* value) { SetClientRequestToken(value); return *this;}
1701 
1702 
1703     /**
1704      * <p>Whether to enable termination protection on the specified stack. If a user
1705      * attempts to delete a stack with termination protection enabled, the operation
1706      * fails and the stack remains unchanged. For more information, see <a
1707      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html">Protecting
1708      * a Stack From Being Deleted</a> in the <i>CloudFormation User Guide</i>.
1709      * Termination protection is disabled on stacks by default.</p> <p>For <a
1710      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html">nested
1711      * stacks</a>, termination protection is set on the root stack and cannot be
1712      * changed directly on the nested stack.</p>
1713      */
GetEnableTerminationProtection()1714     inline bool GetEnableTerminationProtection() const{ return m_enableTerminationProtection; }
1715 
1716     /**
1717      * <p>Whether to enable termination protection on the specified stack. If a user
1718      * attempts to delete a stack with termination protection enabled, the operation
1719      * fails and the stack remains unchanged. For more information, see <a
1720      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html">Protecting
1721      * a Stack From Being Deleted</a> in the <i>CloudFormation User Guide</i>.
1722      * Termination protection is disabled on stacks by default.</p> <p>For <a
1723      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html">nested
1724      * stacks</a>, termination protection is set on the root stack and cannot be
1725      * changed directly on the nested stack.</p>
1726      */
EnableTerminationProtectionHasBeenSet()1727     inline bool EnableTerminationProtectionHasBeenSet() const { return m_enableTerminationProtectionHasBeenSet; }
1728 
1729     /**
1730      * <p>Whether to enable termination protection on the specified stack. If a user
1731      * attempts to delete a stack with termination protection enabled, the operation
1732      * fails and the stack remains unchanged. For more information, see <a
1733      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html">Protecting
1734      * a Stack From Being Deleted</a> in the <i>CloudFormation User Guide</i>.
1735      * Termination protection is disabled on stacks by default.</p> <p>For <a
1736      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html">nested
1737      * stacks</a>, termination protection is set on the root stack and cannot be
1738      * changed directly on the nested stack.</p>
1739      */
SetEnableTerminationProtection(bool value)1740     inline void SetEnableTerminationProtection(bool value) { m_enableTerminationProtectionHasBeenSet = true; m_enableTerminationProtection = value; }
1741 
1742     /**
1743      * <p>Whether to enable termination protection on the specified stack. If a user
1744      * attempts to delete a stack with termination protection enabled, the operation
1745      * fails and the stack remains unchanged. For more information, see <a
1746      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html">Protecting
1747      * a Stack From Being Deleted</a> in the <i>CloudFormation User Guide</i>.
1748      * Termination protection is disabled on stacks by default.</p> <p>For <a
1749      * href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html">nested
1750      * stacks</a>, termination protection is set on the root stack and cannot be
1751      * changed directly on the nested stack.</p>
1752      */
WithEnableTerminationProtection(bool value)1753     inline CreateStackRequest& WithEnableTerminationProtection(bool value) { SetEnableTerminationProtection(value); return *this;}
1754 
1755   private:
1756 
1757     Aws::String m_stackName;
1758     bool m_stackNameHasBeenSet;
1759 
1760     Aws::String m_templateBody;
1761     bool m_templateBodyHasBeenSet;
1762 
1763     Aws::String m_templateURL;
1764     bool m_templateURLHasBeenSet;
1765 
1766     Aws::Vector<Parameter> m_parameters;
1767     bool m_parametersHasBeenSet;
1768 
1769     bool m_disableRollback;
1770     bool m_disableRollbackHasBeenSet;
1771 
1772     RollbackConfiguration m_rollbackConfiguration;
1773     bool m_rollbackConfigurationHasBeenSet;
1774 
1775     int m_timeoutInMinutes;
1776     bool m_timeoutInMinutesHasBeenSet;
1777 
1778     Aws::Vector<Aws::String> m_notificationARNs;
1779     bool m_notificationARNsHasBeenSet;
1780 
1781     Aws::Vector<Capability> m_capabilities;
1782     bool m_capabilitiesHasBeenSet;
1783 
1784     Aws::Vector<Aws::String> m_resourceTypes;
1785     bool m_resourceTypesHasBeenSet;
1786 
1787     Aws::String m_roleARN;
1788     bool m_roleARNHasBeenSet;
1789 
1790     OnFailure m_onFailure;
1791     bool m_onFailureHasBeenSet;
1792 
1793     Aws::String m_stackPolicyBody;
1794     bool m_stackPolicyBodyHasBeenSet;
1795 
1796     Aws::String m_stackPolicyURL;
1797     bool m_stackPolicyURLHasBeenSet;
1798 
1799     Aws::Vector<Tag> m_tags;
1800     bool m_tagsHasBeenSet;
1801 
1802     Aws::String m_clientRequestToken;
1803     bool m_clientRequestTokenHasBeenSet;
1804 
1805     bool m_enableTerminationProtection;
1806     bool m_enableTerminationProtectionHasBeenSet;
1807   };
1808 
1809 } // namespace Model
1810 } // namespace CloudFormation
1811 } // namespace Aws
1812