/*
* 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 UpdateStackSet operation.
/// Updates the stack set, and associated stack instances in the specified accounts and
/// Amazon Web Services Regions.
///
///
///
/// Even if the stack set operation created by updating the stack set fails (completely
/// or partially, below or above a specified failure tolerance), the stack set is updated
/// with your changes. Subsequent CreateStackInstances calls on the specified stack
/// set use the updated stack set.
///
///
public partial class UpdateStackSetRequest : AmazonCloudFormationRequest
{
private List _accounts = new List();
private string _administrationRoleARN;
private AutoDeployment _autoDeployment;
private CallAs _callAs;
private List _capabilities = new List();
private DeploymentTargets _deploymentTargets;
private string _description;
private string _executionRoleName;
private ManagedExecution _managedExecution;
private string _operationId;
private StackSetOperationPreferences _operationPreferences;
private List _parameters = new List();
private PermissionModels _permissionModel;
private List _regions = new List();
private string _stackSetName;
private List _tags = new List();
private string _templateBody;
private string _templateURL;
private bool? _usePreviousTemplate;
///
/// Gets and sets the property Accounts.
///
/// [Self-managed permissions] The accounts in which to update associated stack instances.
/// If you specify accounts, you must also specify the Amazon Web Services Regions in
/// which to update stack set instances.
///
///
///
/// To update all the stack instances associated with this stack set, don't specify
/// the Accounts
or Regions
properties.
///
///
///
/// If the stack set update includes changes to the template (that is, if the TemplateBody
/// or TemplateURL
properties are specified), or the Parameters
/// property, CloudFormation marks all stack instances with a status of OUTDATED
/// prior to updating the stack instances in the specified accounts and Amazon Web Services
/// Regions. If the stack set update does not include changes to the template or parameters,
/// CloudFormation updates the stack instances in the specified accounts and Amazon Web
/// Services Regions, while leaving all other stack instances with their existing stack
/// instance status.
///
///
public List Accounts
{
get { return this._accounts; }
set { this._accounts = value; }
}
// Check to see if Accounts property is set
internal bool IsSetAccounts()
{
return this._accounts != null && this._accounts.Count > 0;
}
///
/// Gets and sets the property AdministrationRoleARN.
///
/// The Amazon Resource Name (ARN) of the IAM role to use to update this stack set.
///
///
///
/// Specify an IAM role only if you are using customized administrator roles to control
/// which users or groups can manage specific stack sets within the same administrator
/// account. For more information, see Granting
/// Permissions for Stack Set Operations in the CloudFormation User Guide.
///
///
///
/// If you specified a customized administrator role when you created the stack set, you
/// must specify a customized administrator role, even if it is the same customized administrator
/// role used with this stack set previously.
///
///
[AWSProperty(Min=20, Max=2048)]
public string AdministrationRoleARN
{
get { return this._administrationRoleARN; }
set { this._administrationRoleARN = value; }
}
// Check to see if AdministrationRoleARN property is set
internal bool IsSetAdministrationRoleARN()
{
return this._administrationRoleARN != null;
}
///
/// Gets and sets the property AutoDeployment.
///
/// [Service-managed permissions] Describes whether StackSets automatically deploys to
/// Organizations accounts that are added to a target organization or organizational unit
/// (OU).
///
///
///
/// If you specify AutoDeployment
, don't specify DeploymentTargets
/// or Regions
.
///
///
public AutoDeployment AutoDeployment
{
get { return this._autoDeployment; }
set { this._autoDeployment = value; }
}
// Check to see if AutoDeployment property is set
internal bool IsSetAutoDeployment()
{
return this._autoDeployment != null;
}
///
/// Gets and sets the property CallAs.
///
/// [Service-managed permissions] Specifies whether you are acting as an account administrator
/// in the organization's management account or as a delegated administrator in a member
/// account.
///
///
///
/// By default, SELF
is specified. Use SELF
for stack sets with
/// self-managed permissions.
///
/// -
///
/// If you are signed in to the management account, specify
SELF
.
///
/// -
///
/// If you are signed in to a delegated administrator account, specify
DELEGATED_ADMIN
.
///
///
///
/// Your Amazon Web Services account must be registered as a delegated administrator in
/// the management account. For more information, see Register
/// a delegated administrator in the CloudFormation User Guide.
///
///
///
public CallAs CallAs
{
get { return this._callAs; }
set { this._callAs = value; }
}
// Check to see if CallAs property is set
internal bool IsSetCallAs()
{
return this._callAs != null;
}
///
/// 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 set and its associated
/// stack instances.
///
/// -
///
///
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 sets, 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 templates reference macros. If your stack set template references one or more
/// macros, you must update the stack set directly from the processed template, without
/// first reviewing the resulting changes in a change set. To update the stack set directly,
/// you must acknowledge this capability. For more information, see Using
/// CloudFormation Macros to Perform Custom Processing on Templates.
///
///
///
/// Stack sets with service-managed permissions do not currently support the use of macros
/// in templates. (This includes the AWS::Include
/// and AWS::Serverless
/// transforms, which are macros hosted by CloudFormation.) Even if you specify this capability
/// for a stack set with service-managed permissions, if you reference a macro in your
/// template the stack set operation will fail.
///
///
///
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 DeploymentTargets.
///
/// [Service-managed permissions] The Organizations accounts in which to update associated
/// stack instances.
///
///
///
/// To update all the stack instances associated with this stack set, do not specify DeploymentTargets
/// or Regions
.
///
///
///
/// If the stack set update includes changes to the template (that is, if TemplateBody
/// or TemplateURL
is specified), or the Parameters
, CloudFormation
/// marks all stack instances with a status of OUTDATED
prior to updating
/// the stack instances in the specified accounts and Amazon Web Services Regions. If
/// the stack set update doesn't include changes to the template or parameters, CloudFormation
/// updates the stack instances in the specified accounts and Regions, while leaving all
/// other stack instances with their existing stack instance status.
///
///
public DeploymentTargets DeploymentTargets
{
get { return this._deploymentTargets; }
set { this._deploymentTargets = value; }
}
// Check to see if DeploymentTargets property is set
internal bool IsSetDeploymentTargets()
{
return this._deploymentTargets != null;
}
///
/// Gets and sets the property Description.
///
/// A brief description of updates that you are making.
///
///
[AWSProperty(Min=1, Max=1024)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property ExecutionRoleName.
///
/// The name of the IAM execution role to use to update the stack set. If you do not specify
/// an execution role, CloudFormation uses the AWSCloudFormationStackSetExecutionRole
/// role for the stack set operation.
///
///
///
/// Specify an IAM role only if you are using customized execution roles to control which
/// stack resources users and groups can include in their stack sets.
///
///
///
/// If you specify a customized execution role, CloudFormation uses that role to update
/// the stack. If you do not specify a customized execution role, CloudFormation performs
/// the update using the role previously associated with the stack set, so long as you
/// have permissions to perform operations on the stack set.
///
///
[AWSProperty(Min=1, Max=64)]
public string ExecutionRoleName
{
get { return this._executionRoleName; }
set { this._executionRoleName = value; }
}
// Check to see if ExecutionRoleName property is set
internal bool IsSetExecutionRoleName()
{
return this._executionRoleName != null;
}
///
/// Gets and sets the property ManagedExecution.
///
/// Describes whether StackSets performs non-conflicting operations concurrently and queues
/// conflicting operations.
///
///
public ManagedExecution ManagedExecution
{
get { return this._managedExecution; }
set { this._managedExecution = value; }
}
// Check to see if ManagedExecution property is set
internal bool IsSetManagedExecution()
{
return this._managedExecution != null;
}
///
/// Gets and sets the property OperationId.
///
/// The unique ID for this stack set operation.
///
///
///
/// The operation ID also functions as an idempotency token, to ensure that CloudFormation
/// performs the stack set operation only once, even if you retry the request multiple
/// times. You might retry stack set operation requests to ensure that CloudFormation
/// successfully received them.
///
///
///
/// If you don't specify an operation ID, CloudFormation generates one automatically.
///
///
///
/// Repeating this stack set operation with a new operation ID retries all stack instances
/// whose status is OUTDATED
.
///
///
[AWSProperty(Min=1, Max=128)]
public string OperationId
{
get { return this._operationId; }
set { this._operationId = value; }
}
// Check to see if OperationId property is set
internal bool IsSetOperationId()
{
return this._operationId != null;
}
///
/// Gets and sets the property OperationPreferences.
///
/// Preferences for how CloudFormation performs this stack set operation.
///
///
public StackSetOperationPreferences OperationPreferences
{
get { return this._operationPreferences; }
set { this._operationPreferences = value; }
}
// Check to see if OperationPreferences property is set
internal bool IsSetOperationPreferences()
{
return this._operationPreferences != null;
}
///
/// Gets and sets the property Parameters.
///
/// A list of input parameters for the stack set template.
///
///
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 PermissionModel.
///
/// Describes how the IAM roles required for stack set operations are created. You cannot
/// modify PermissionModel
if there are stack instances associated with your
/// stack set.
///
///
///
public PermissionModels PermissionModel
{
get { return this._permissionModel; }
set { this._permissionModel = value; }
}
// Check to see if PermissionModel property is set
internal bool IsSetPermissionModel()
{
return this._permissionModel != null;
}
///
/// Gets and sets the property Regions.
///
/// The Amazon Web Services Regions in which to update associated stack instances. If
/// you specify Regions, you must also specify accounts in which to update stack set instances.
///
///
///
/// To update all the stack instances associated with this stack set, do not specify
/// the Accounts
or Regions
properties.
///
///
///
/// If the stack set update includes changes to the template (that is, if the TemplateBody
/// or TemplateURL
properties are specified), or the Parameters
/// property, CloudFormation marks all stack instances with a status of OUTDATED
/// prior to updating the stack instances in the specified accounts and Regions. If the
/// stack set update does not include changes to the template or parameters, CloudFormation
/// updates the stack instances in the specified accounts and Regions, while leaving all
/// other stack instances with their existing stack instance status.
///
///
public List Regions
{
get { return this._regions; }
set { this._regions = value; }
}
// Check to see if Regions property is set
internal bool IsSetRegions()
{
return this._regions != null && this._regions.Count > 0;
}
///
/// Gets and sets the property StackSetName.
///
/// The name or unique ID of the stack set that you want to update.
///
///
[AWSProperty(Required=true)]
public string StackSetName
{
get { return this._stackSetName; }
set { this._stackSetName = value; }
}
// Check to see if StackSetName property is set
internal bool IsSetStackSetName()
{
return this._stackSetName != null;
}
///
/// Gets and sets the property Tags.
///
/// The key-value pairs to associate with this stack set and the stacks created from it.
/// CloudFormation also propagates these tags to supported resources that are created
/// in the stacks. You can specify a maximum number of 50 tags.
///
///
///
/// If you specify tags for this parameter, those tags replace any list of tags that are
/// currently associated with this stack set. This means:
///
/// -
///
/// If you don't specify this parameter, CloudFormation doesn't modify the stack's tags.
///
///
-
///
/// If you specify any tags using this parameter, you must specify all the
/// tags that you want associated with this stack set, even tags you've specified before
/// (for example, when creating the stack set or during a previous update of the stack
/// set.). Any tags that you don't include in the updated list of tags are removed from
/// the stack set, and therefore from the stacks and resources as well.
///
///
-
///
/// If you specify an empty value, CloudFormation removes all currently associated tags.
///
///
///
/// If you specify new tags as part of an UpdateStackSet
action, CloudFormation
/// checks to see if you have the required IAM permission to tag resources. If you omit
/// tags that are currently associated with the stack set from the list of tags you specify,
/// CloudFormation assumes that you want to remove those tags from the stack set, and
/// checks to see if you have permission to untag resources. If you don't have the necessary
/// permission(s), the entire UpdateStackSet
action fails with an access
/// denied
error, and the stack set is not updated.
///
///
[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.
///
/// The structure that contains the template body, with a minimum length of 1 byte and
/// a maximum length of 51,200 bytes. For more information, see Template
/// Anatomy in the CloudFormation User Guide.
///
///
///
/// Conditional: You must specify only one of the following parameters: TemplateBody
/// or TemplateURL
—or set 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.
///
/// The location of the file that contains the template body. The URL must point to a
/// template (maximum size: 460,800 bytes) that is located in an Amazon S3 bucket or a
/// Systems Manager document. For more information, see Template
/// Anatomy in the CloudFormation User Guide.
///
///
///
/// Conditional: You must specify only one of the following parameters: TemplateBody
/// or TemplateURL
—or set 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.
///
/// Use the existing template that's associated with the stack set that you're updating.
///
///
///
/// Conditional: You must specify only one of the following parameters: TemplateBody
/// or TemplateURL
—or set 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;
}
}
}