/* * 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; } } }