/*
* 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 UpdateStack operation.
/// Updates a stack as specified in the template. After the call completes successfully,
/// the stack update starts. You can check the status of the stack through the DescribeStacks
/// action.
///
///
///
/// To get a copy of the template for an existing stack, you can use the GetTemplate
/// action.
///
///
///
/// For more information about creating an update template, updating a stack, and monitoring
/// the progress of the update, see Updating
/// a Stack.
///
///
public partial class UpdateStackRequest : AmazonCloudFormationRequest
{
private List _capabilities = new List();
private string _clientRequestToken;
private bool? _disableRollback;
private List _notificationARNs = new List();
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 _stackPolicyDuringUpdateBody;
private string _stackPolicyDuringUpdateURL;
private string _stackPolicyURL;
private List _tags = new List();
private string _templateBody;
private string _templateURL;
private bool? _usePreviousTemplate;
///
/// 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 update 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 suggest 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 updating the stack. If your stack template contains one
/// or more macros, and you choose to update 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 update a stack from a stack template that contains macros and
/// nested stacks, you must update the stack directly from the template using this capability.
///
///
///
/// You should only update 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 UpdateStack
request. Specify this token
/// if you plan to retry requests so that CloudFormation knows that you're not attempting
/// to update a stack with the same name. You might retry UpdateStack
requests
/// to ensure that CloudFormation successfully received them.
///
///
///
/// All events triggered 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.
///
/// Preserve the state of previously provisioned resources when an operation fails.
///
///
///
/// 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 NotificationARNs.
///
/// Amazon Simple Notification Service topic Amazon Resource Names (ARNs) that CloudFormation
/// associates with the stack. Specify an empty list to remove all notification topics.
///
///
[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 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 update
/// stack action, such as AWS::EC2::Instance
, AWS::EC2::*
, or
/// Custom::MyCustomInstance
.
///
///
///
/// If the list of resource types doesn't include a resource that you're updating, the
/// stack update 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 update 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
/// is 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 or unique stack ID of the stack to update.
///
///
[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 a new stack policy body. You can specify either the StackPolicyBody
/// or the StackPolicyURL
parameter, but not both.
///
///
///
/// You might update the stack policy, for example, in order to protect a new resource
/// that you created during a stack update. If you don't specify a stack policy, the current
/// policy that is associated with the stack is unchanged.
///
///
[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 StackPolicyDuringUpdateBody.
///
/// Structure containing the temporary overriding stack policy body. You can specify either
/// the StackPolicyDuringUpdateBody
or the StackPolicyDuringUpdateURL
/// parameter, but not both.
///
///
///
/// If you want to update protected resources, specify a temporary overriding stack policy
/// during this update. If you don't specify a stack policy, the current policy that is
/// associated with the stack will be used.
///
///
[AWSProperty(Min=1, Max=16384)]
public string StackPolicyDuringUpdateBody
{
get { return this._stackPolicyDuringUpdateBody; }
set { this._stackPolicyDuringUpdateBody = value; }
}
// Check to see if StackPolicyDuringUpdateBody property is set
internal bool IsSetStackPolicyDuringUpdateBody()
{
return this._stackPolicyDuringUpdateBody != null;
}
///
/// Gets and sets the property StackPolicyDuringUpdateURL.
///
/// Location of a file containing the temporary overriding stack policy. The URL must
/// point to a policy (max size: 16KB) located in an S3 bucket in the same Region as the
/// stack. You can specify either the StackPolicyDuringUpdateBody
or the
/// StackPolicyDuringUpdateURL
parameter, but not both.
///
///
///
/// If you want to update protected resources, specify a temporary overriding stack policy
/// during this update. If you don't specify a stack policy, the current policy that is
/// associated with the stack will be used.
///
///
[AWSProperty(Min=1, Max=1350)]
public string StackPolicyDuringUpdateURL
{
get { return this._stackPolicyDuringUpdateURL; }
set { this._stackPolicyDuringUpdateURL = value; }
}
// Check to see if StackPolicyDuringUpdateURL property is set
internal bool IsSetStackPolicyDuringUpdateURL()
{
return this._stackPolicyDuringUpdateURL != null;
}
///
/// Gets and sets the property StackPolicyURL.
///
/// Location of a file containing the updated stack policy. The URL must point to a policy
/// (max size: 16KB) 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.
///
///
///
/// You might update the stack policy, for example, in order to protect a new resource
/// that you created during a stack update. If you don't specify a stack policy, the current
/// policy that is associated with the stack is unchanged.
///
///
[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 supported resources in the stack. You can specify a maximum number of 50 tags.
///
///
///
/// If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.
/// If you specify an empty value, CloudFormation removes all associated tags.
///
///
[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 only one of the following parameters: TemplateBody
,
/// TemplateURL
, or set the UsePreviousTemplate
to true
.
///
///
[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 that's
/// located in an Amazon S3 bucket or a Systems Manager document. For more information,
/// go to Template
/// Anatomy in the CloudFormation User Guide.
///
///
///
/// Conditional: You must specify only one of the following parameters: TemplateBody
,
/// TemplateURL
, or set the UsePreviousTemplate
to true
.
///
///
[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 UsePreviousTemplate.
///
/// Reuse the existing template that is associated with the stack that you are updating.
///
///
///
/// Conditional: You must specify only one of the following parameters: TemplateBody
,
/// TemplateURL
, or set the UsePreviousTemplate
to true
.
///
///
public bool UsePreviousTemplate
{
get { return this._usePreviousTemplate.GetValueOrDefault(); }
set { this._usePreviousTemplate = value; }
}
// Check to see if UsePreviousTemplate property is set
internal bool IsSetUsePreviousTemplate()
{
return this._usePreviousTemplate.HasValue;
}
}
}