/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the cloudformation-2010-05-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.CloudFormation.Model
{
///
/// Container for the parameters to the CreateStack operation.
/// Creates a stack as specified in the template. After the call completes successfully,
/// the stack creation starts. You can check the status of the stack through the DescribeStacks
/// operation.
///
public partial class CreateStackRequest : AmazonCloudFormationRequest
{
private List _capabilities = new List();
private string _clientRequestToken;
private bool? _disableRollback;
private bool? _enableTerminationProtection;
private List _notificationARNs = new List();
private OnFailure _onFailure;
private List _parameters = new List();
private List _resourceTypes = new List();
private bool? _retainExceptOnCreate;
private string _roleARN;
private RollbackConfiguration _rollbackConfiguration;
private string _stackName;
private string _stackPolicyBody;
private string _stackPolicyURL;
private List _tags = new List();
private string _templateBody;
private string _templateURL;
private int? _timeoutInMinutes;
///
/// Gets and sets the property Capabilities.
///
/// In some cases, you must explicitly acknowledge that your stack template contains certain
/// capabilities in order for CloudFormation to create the stack.
///
/// -
///
///
CAPABILITY_IAM
and CAPABILITY_NAMED_IAM
///
///
///
/// Some stack templates might include resources that can affect permissions in your Amazon
/// Web Services account; for example, by creating new Identity and Access Management
/// (IAM) users. For those stacks, you must explicitly acknowledge this by specifying
/// one of these capabilities.
///
///
///
/// The following IAM resources require you to specify either the CAPABILITY_IAM
/// or CAPABILITY_NAMED_IAM
capability.
///
/// -
///
/// If you have IAM resources, you can specify either capability.
///
///
-
///
/// If you have IAM resources with custom names, you must specify
CAPABILITY_NAMED_IAM
.
///
/// -
///
/// If you don't specify either of these capabilities, CloudFormation returns an
InsufficientCapabilities
/// error.
///
///
///
/// If your stack template contains these resources, we recommend that you review all
/// permissions associated with them and edit their permissions if necessary.
///
///
///
/// For more information, see Acknowledging
/// IAM Resources in CloudFormation Templates.
///
/// -
///
///
CAPABILITY_AUTO_EXPAND
///
///
///
/// Some template contain macros. Macros perform custom processing on templates; this
/// can include simple actions like find-and-replace operations, all the way to extensive
/// transformations of entire templates. Because of this, users typically create a change
/// set from the processed template, so that they can review the changes resulting from
/// the macros before actually creating the stack. If your stack template contains one
/// or more macros, and you choose to create a stack directly from the processed template,
/// without first reviewing the resulting changes in a change set, you must acknowledge
/// this capability. This includes the AWS::Include
/// and AWS::Serverless
/// transforms, which are macros hosted by CloudFormation.
///
///
///
/// If you want to create a stack from a stack template that contains macros and
/// nested stacks, you must create the stack directly from the template using this capability.
///
///
///
/// You should only create stacks directly from a stack template that contains macros
/// if you know what processing the macro performs.
///
///
///
/// Each macro relies on an underlying Lambda service function for processing stack templates.
/// Be aware that the Lambda function owner can update the function operation without
/// CloudFormation being notified.
///
///
///
/// For more information, see Using
/// CloudFormation macros to perform custom processing on templates.
///
///
///
public List Capabilities
{
get { return this._capabilities; }
set { this._capabilities = value; }
}
// Check to see if Capabilities property is set
internal bool IsSetCapabilities()
{
return this._capabilities != null && this._capabilities.Count > 0;
}
///
/// Gets and sets the property ClientRequestToken.
///
/// A unique identifier for this CreateStack
request. Specify this token
/// if you plan to retry requests so that CloudFormation knows that you're not attempting
/// to create a stack with the same name. You might retry CreateStack
requests
/// to ensure that CloudFormation successfully received them.
///
///
///
/// All events initiated by a given stack operation are assigned the same client request
/// token, which you can use to track operations. For example, if you execute a CreateStack
/// operation with the token token1
, then all the StackEvents
/// generated by that operation will have ClientRequestToken
set as token1
.
///
///
///
/// In the console, stack operations display the client request token on the Events tab.
/// Stack operations that are initiated from the console use the token format Console-StackOperation-ID,
/// which helps you easily identify the stack operation . For example, if you create a
/// stack using the console, each stack event would be assigned the same token in the
/// following format: Console-CreateStack-7f59c3cf-00d2-40c7-b2ff-e75db0987002
.
///
///
[AWSProperty(Min=1, Max=128)]
public string ClientRequestToken
{
get { return this._clientRequestToken; }
set { this._clientRequestToken = value; }
}
// Check to see if ClientRequestToken property is set
internal bool IsSetClientRequestToken()
{
return this._clientRequestToken != null;
}
///
/// Gets and sets the property DisableRollback.
///
/// Set to true
to disable rollback of the stack if stack creation failed.
/// You can specify either DisableRollback
or OnFailure
, but
/// not both.
///
///
///
/// Default: false
///
///
public bool DisableRollback
{
get { return this._disableRollback.GetValueOrDefault(); }
set { this._disableRollback = value; }
}
// Check to see if DisableRollback property is set
internal bool IsSetDisableRollback()
{
return this._disableRollback.HasValue;
}
///
/// Gets and sets the property EnableTerminationProtection.
///
/// Whether to enable termination protection on the specified stack. If a user attempts
/// to delete a stack with termination protection enabled, the operation fails and the
/// stack remains unchanged. For more information, see Protecting
/// a Stack From Being Deleted in the CloudFormation User Guide. Termination
/// protection is deactivated on stacks by default.
///
///
///
/// For nested
/// stacks, termination protection is set on the root stack and can't be changed directly
/// on the nested stack.
///
///
public bool EnableTerminationProtection
{
get { return this._enableTerminationProtection.GetValueOrDefault(); }
set { this._enableTerminationProtection = value; }
}
// Check to see if EnableTerminationProtection property is set
internal bool IsSetEnableTerminationProtection()
{
return this._enableTerminationProtection.HasValue;
}
///
/// Gets and sets the property NotificationARNs.
///
/// The Amazon Simple Notification Service (Amazon SNS) topic ARNs to publish stack related
/// events. You can find your Amazon SNS topic ARNs using the Amazon SNS console or your
/// Command Line Interface (CLI).
///
///
[AWSProperty(Max=5)]
public List NotificationARNs
{
get { return this._notificationARNs; }
set { this._notificationARNs = value; }
}
// Check to see if NotificationARNs property is set
internal bool IsSetNotificationARNs()
{
return this._notificationARNs != null && this._notificationARNs.Count > 0;
}
///
/// Gets and sets the property OnFailure.
///
/// Determines what action will be taken if stack creation fails. This must be one of:
/// DO_NOTHING
, ROLLBACK
, or DELETE
. You can specify
/// either OnFailure
or DisableRollback
, but not both.
///
///
///
/// Default: ROLLBACK
///
///
public OnFailure OnFailure
{
get { return this._onFailure; }
set { this._onFailure = value; }
}
// Check to see if OnFailure property is set
internal bool IsSetOnFailure()
{
return this._onFailure != null;
}
///
/// Gets and sets the property Parameters.
///
/// A list of Parameter
structures that specify input parameters for the
/// stack. For more information, see the Parameter
/// data type.
///
///
public List Parameters
{
get { return this._parameters; }
set { this._parameters = value; }
}
// Check to see if Parameters property is set
internal bool IsSetParameters()
{
return this._parameters != null && this._parameters.Count > 0;
}
///
/// Gets and sets the property ResourceTypes.
///
/// The template resource types that you have permissions to work with for this create
/// stack action, such as AWS::EC2::Instance
, AWS::EC2::*
, or
/// Custom::MyCustomInstance
. Use the following syntax to describe template
/// resource types: AWS::*
(for all Amazon Web Services resources), Custom::*
/// (for all custom resources), Custom::logical_ID
(for a specific
/// custom resource), AWS::service_name::*
(for all resources of a
/// particular Amazon Web Services service), and AWS::service_name::resource_logical_ID
///
(for a specific Amazon Web Services resource).
///
///
///
/// If the list of resource types doesn't include a resource that you're creating, the
/// stack creation fails. By default, CloudFormation grants permissions to all resource
/// types. Identity and Access Management (IAM) uses this parameter for CloudFormation-specific
/// condition keys in IAM policies. For more information, see Controlling
/// Access with Identity and Access Management.
///
///
public List ResourceTypes
{
get { return this._resourceTypes; }
set { this._resourceTypes = value; }
}
// Check to see if ResourceTypes property is set
internal bool IsSetResourceTypes()
{
return this._resourceTypes != null && this._resourceTypes.Count > 0;
}
///
/// Gets and sets the property RetainExceptOnCreate.
///
/// This deletion policy deletes newly created resources, but retains existing resources,
/// when a stack operation is rolled back. This ensures new, empty, and unused resources
/// are deleted, while critical resources and their data are retained. RetainExceptOnCreate
/// can be specified for any resource that supports the
/// DeletionPolicy attribute.
///
///
public bool RetainExceptOnCreate
{
get { return this._retainExceptOnCreate.GetValueOrDefault(); }
set { this._retainExceptOnCreate = value; }
}
// Check to see if RetainExceptOnCreate property is set
internal bool IsSetRetainExceptOnCreate()
{
return this._retainExceptOnCreate.HasValue;
}
///
/// Gets and sets the property RoleARN.
///
/// The Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that
/// CloudFormation assumes to create the stack. CloudFormation uses the role's credentials
/// to make calls on your behalf. CloudFormation always uses this role for all future
/// operations on the stack. Provided that users have permission to operate on the stack,
/// CloudFormation uses this role even if the users don't have permission to pass it.
/// Ensure that the role grants least privilege.
///
///
///
/// If you don't specify a value, CloudFormation uses the role that was previously associated
/// with the stack. If no role is available, CloudFormation uses a temporary session that's
/// generated from your user credentials.
///
///
[AWSProperty(Min=20, Max=2048)]
public string RoleARN
{
get { return this._roleARN; }
set { this._roleARN = value; }
}
// Check to see if RoleARN property is set
internal bool IsSetRoleARN()
{
return this._roleARN != null;
}
///
/// Gets and sets the property RollbackConfiguration.
///
/// The rollback triggers for CloudFormation to monitor during stack creation and updating
/// operations, and for the specified monitoring period afterwards.
///
///
public RollbackConfiguration RollbackConfiguration
{
get { return this._rollbackConfiguration; }
set { this._rollbackConfiguration = value; }
}
// Check to see if RollbackConfiguration property is set
internal bool IsSetRollbackConfiguration()
{
return this._rollbackConfiguration != null;
}
///
/// Gets and sets the property StackName.
///
/// The name that's associated with the stack. The name must be unique in the Region in
/// which you are creating the stack.
///
///
///
/// A stack name can contain only alphanumeric characters (case sensitive) and hyphens.
/// It must start with an alphabetical character and can't be longer than 128 characters.
///
///
///
[AWSProperty(Required=true)]
public string StackName
{
get { return this._stackName; }
set { this._stackName = value; }
}
// Check to see if StackName property is set
internal bool IsSetStackName()
{
return this._stackName != null;
}
///
/// Gets and sets the property StackPolicyBody.
///
/// Structure containing the stack policy body. For more information, go to
/// Prevent Updates to Stack Resources in the CloudFormation User Guide. You
/// can specify either the StackPolicyBody
or the StackPolicyURL
/// parameter, but not both.
///
///
[AWSProperty(Min=1, Max=16384)]
public string StackPolicyBody
{
get { return this._stackPolicyBody; }
set { this._stackPolicyBody = value; }
}
// Check to see if StackPolicyBody property is set
internal bool IsSetStackPolicyBody()
{
return this._stackPolicyBody != null;
}
///
/// Gets and sets the property StackPolicyURL.
///
/// Location of a file containing the stack policy. The URL must point to a policy (maximum
/// size: 16 KB) located in an S3 bucket in the same Region as the stack. You can specify
/// either the StackPolicyBody
or the StackPolicyURL
parameter,
/// but not both.
///
///
[AWSProperty(Min=1, Max=1350)]
public string StackPolicyURL
{
get { return this._stackPolicyURL; }
set { this._stackPolicyURL = value; }
}
// Check to see if StackPolicyURL property is set
internal bool IsSetStackPolicyURL()
{
return this._stackPolicyURL != null;
}
///
/// Gets and sets the property Tags.
///
/// Key-value pairs to associate with this stack. CloudFormation also propagates these
/// tags to the resources created in the stack. A maximum number of 50 tags can be specified.
///
///
[AWSProperty(Max=50)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property TemplateBody.
///
/// Structure containing the template body with a minimum length of 1 byte and a maximum
/// length of 51,200 bytes. For more information, go to Template
/// anatomy in the CloudFormation User Guide.
///
///
///
/// Conditional: You must specify either the TemplateBody
or the TemplateURL
/// parameter, but not both.
///
///
[AWSProperty(Min=1)]
public string TemplateBody
{
get { return this._templateBody; }
set { this._templateBody = value; }
}
// Check to see if TemplateBody property is set
internal bool IsSetTemplateBody()
{
return this._templateBody != null;
}
///
/// Gets and sets the property TemplateURL.
///
/// Location of file containing the template body. The URL must point to a template (max
/// size: 460,800 bytes) that's located in an Amazon S3 bucket or a Systems Manager document.
/// For more information, go to the Template
/// anatomy in the CloudFormation User Guide.
///
///
///
/// Conditional: You must specify either the TemplateBody
or the TemplateURL
/// parameter, but not both.
///
///
[AWSProperty(Min=1, Max=1024)]
public string TemplateURL
{
get { return this._templateURL; }
set { this._templateURL = value; }
}
// Check to see if TemplateURL property is set
internal bool IsSetTemplateURL()
{
return this._templateURL != null;
}
///
/// Gets and sets the property TimeoutInMinutes.
///
/// The amount of time that can pass before the stack status becomes CREATE_FAILED; if
/// DisableRollback
is not set or is set to false
, the stack
/// will be rolled back.
///
///
[AWSProperty(Min=1)]
public int TimeoutInMinutes
{
get { return this._timeoutInMinutes.GetValueOrDefault(); }
set { this._timeoutInMinutes = value; }
}
// Check to see if TimeoutInMinutes property is set
internal bool IsSetTimeoutInMinutes()
{
return this._timeoutInMinutes.HasValue;
}
}
}