/*
* 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 ssm-2014-11-06.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.SimpleSystemsManagement.Model
{
///
/// Container for the parameters to the UpdateAssociation operation.
/// Updates an association. You can update the association name and version, the document
/// version, schedule, parameters, and Amazon Simple Storage Service (Amazon S3) output.
/// When you call UpdateAssociation
, the system removes all optional parameters
/// from the request and overwrites the association with null values for those parameters.
/// This is by design. You must specify all optional parameters in the call, even if you
/// are not changing the parameters. This includes the Name
parameter. Before
/// calling this API action, we recommend that you call the DescribeAssociation
/// API operation and make a note of all optional parameters required for your UpdateAssociation
/// call.
///
///
///
/// In order to call this API operation, a user, group, or role must be granted permission
/// to call the DescribeAssociation API operation. If you don't have permission
/// to call DescribeAssociation
, then you receive the following error: An
/// error occurred (AccessDeniedException) when calling the UpdateAssociation operation:
/// User: <user_arn> isn't authorized to perform: ssm:DescribeAssociation on resource:
/// <resource_arn>
///
///
///
/// When you update an association, the association immediately runs against the specified
/// targets. You can add the ApplyOnlyAtCronInterval
parameter to run the
/// association during the next schedule run.
///
///
///
public partial class UpdateAssociationRequest : AmazonSimpleSystemsManagementRequest
{
private AlarmConfiguration _alarmConfiguration;
private bool? _applyOnlyAtCronInterval;
private string _associationId;
private string _associationName;
private string _associationVersion;
private string _automationTargetParameterName;
private List _calendarNames = new List();
private AssociationComplianceSeverity _complianceSeverity;
private string _documentVersion;
private string _maxConcurrency;
private string _maxErrors;
private string _name;
private InstanceAssociationOutputLocation _outputLocation;
private Dictionary> _parameters = new Dictionary>();
private string _scheduleExpression;
private int? _scheduleOffset;
private AssociationSyncCompliance _syncCompliance;
private List _targetLocations = new List();
private List>> _targetMaps = new List>>();
private List _targets = new List();
///
/// Gets and sets the property AlarmConfiguration.
///
public AlarmConfiguration AlarmConfiguration
{
get { return this._alarmConfiguration; }
set { this._alarmConfiguration = value; }
}
// Check to see if AlarmConfiguration property is set
internal bool IsSetAlarmConfiguration()
{
return this._alarmConfiguration != null;
}
///
/// Gets and sets the property ApplyOnlyAtCronInterval.
///
/// By default, when you update an association, the system runs it immediately after it
/// is updated and then according to the schedule you specified. Specify this option if
/// you don't want an association to run immediately after you update it. This parameter
/// isn't supported for rate expressions.
///
///
///
/// If you chose this option when you created an association and later you edit that association
/// or you make changes to the SSM document on which that association is based (by using
/// the Documents page in the console), State Manager applies the association at the next
/// specified cron interval. For example, if you chose the Latest
version
/// of an SSM document when you created an association and you edit the association by
/// choosing a different document version on the Documents page, State Manager applies
/// the association at the next specified cron interval if you previously selected this
/// option. If this option wasn't selected, State Manager immediately runs the association.
///
///
///
/// You can reset this option. To do so, specify the no-apply-only-at-cron-interval
/// parameter when you update the association from the command line. This parameter forces
/// the association to run immediately after updating it and according to the interval
/// specified.
///
///
public bool ApplyOnlyAtCronInterval
{
get { return this._applyOnlyAtCronInterval.GetValueOrDefault(); }
set { this._applyOnlyAtCronInterval = value; }
}
// Check to see if ApplyOnlyAtCronInterval property is set
internal bool IsSetApplyOnlyAtCronInterval()
{
return this._applyOnlyAtCronInterval.HasValue;
}
///
/// Gets and sets the property AssociationId.
///
/// The ID of the association you want to update.
///
///
[AWSProperty(Required=true)]
public string AssociationId
{
get { return this._associationId; }
set { this._associationId = value; }
}
// Check to see if AssociationId property is set
internal bool IsSetAssociationId()
{
return this._associationId != null;
}
///
/// Gets and sets the property AssociationName.
///
/// The name of the association that you want to update.
///
///
public string AssociationName
{
get { return this._associationName; }
set { this._associationName = value; }
}
// Check to see if AssociationName property is set
internal bool IsSetAssociationName()
{
return this._associationName != null;
}
///
/// Gets and sets the property AssociationVersion.
///
/// This parameter is provided for concurrency control purposes. You must specify the
/// latest association version in the service. If you want to ensure that this request
/// succeeds, either specify $LATEST
, or omit this parameter.
///
///
public string AssociationVersion
{
get { return this._associationVersion; }
set { this._associationVersion = value; }
}
// Check to see if AssociationVersion property is set
internal bool IsSetAssociationVersion()
{
return this._associationVersion != null;
}
///
/// Gets and sets the property AutomationTargetParameterName.
///
/// Choose the parameter that will define how your automation will branch out. This target
/// is required for associations that use an Automation runbook and target resources by
/// using rate controls. Automation is a capability of Amazon Web Services Systems Manager.
///
///
[AWSProperty(Min=1, Max=50)]
public string AutomationTargetParameterName
{
get { return this._automationTargetParameterName; }
set { this._automationTargetParameterName = value; }
}
// Check to see if AutomationTargetParameterName property is set
internal bool IsSetAutomationTargetParameterName()
{
return this._automationTargetParameterName != null;
}
///
/// Gets and sets the property CalendarNames.
///
/// The names or Amazon Resource Names (ARNs) of the Change Calendar type documents you
/// want to gate your associations under. The associations only run when that change calendar
/// is open. For more information, see Amazon
/// Web Services Systems Manager Change Calendar.
///
///
public List CalendarNames
{
get { return this._calendarNames; }
set { this._calendarNames = value; }
}
// Check to see if CalendarNames property is set
internal bool IsSetCalendarNames()
{
return this._calendarNames != null && this._calendarNames.Count > 0;
}
///
/// Gets and sets the property ComplianceSeverity.
///
/// The severity level to assign to the association.
///
///
public AssociationComplianceSeverity ComplianceSeverity
{
get { return this._complianceSeverity; }
set { this._complianceSeverity = value; }
}
// Check to see if ComplianceSeverity property is set
internal bool IsSetComplianceSeverity()
{
return this._complianceSeverity != null;
}
///
/// Gets and sets the property DocumentVersion.
///
/// The document version you want update for the association.
///
///
///
/// State Manager doesn't support running associations that use a new version of a document
/// if that document is shared from another account. State Manager always runs the default
/// version of a document if shared from another account, even though the Systems Manager
/// console shows that a new version was processed. If you want to run an association
/// using a new version of a document shared form another account, you must set the document
/// version to default
.
///
///
///
public string DocumentVersion
{
get { return this._documentVersion; }
set { this._documentVersion = value; }
}
// Check to see if DocumentVersion property is set
internal bool IsSetDocumentVersion()
{
return this._documentVersion != null;
}
///
/// Gets and sets the property MaxConcurrency.
///
/// The maximum number of targets allowed to run the association at the same time. You
/// can specify a number, for example 10, or a percentage of the target set, for example
/// 10%. The default value is 100%, which means all targets run the association at the
/// same time.
///
///
///
/// If a new managed node starts and attempts to run an association while Systems Manager
/// is running MaxConcurrency
associations, the association is allowed to
/// run. During the next association interval, the new managed node will process its association
/// within the limit specified for MaxConcurrency
.
///
///
[AWSProperty(Min=1, Max=7)]
public string MaxConcurrency
{
get { return this._maxConcurrency; }
set { this._maxConcurrency = value; }
}
// Check to see if MaxConcurrency property is set
internal bool IsSetMaxConcurrency()
{
return this._maxConcurrency != null;
}
///
/// Gets and sets the property MaxErrors.
///
/// The number of errors that are allowed before the system stops sending requests to
/// run the association on additional targets. You can specify either an absolute number
/// of errors, for example 10, or a percentage of the target set, for example 10%. If
/// you specify 3, for example, the system stops sending requests when the fourth error
/// is received. If you specify 0, then the system stops sending requests after the first
/// error is returned. If you run an association on 50 managed nodes and set MaxError
/// to 10%, then the system stops sending the request when the sixth error is received.
///
///
///
/// Executions that are already running an association when MaxErrors
is
/// reached are allowed to complete, but some of these executions may fail as well. If
/// you need to ensure that there won't be more than max-errors failed executions, set
/// MaxConcurrency
to 1 so that executions proceed one at a time.
///
///
[AWSProperty(Min=1, Max=7)]
public string MaxErrors
{
get { return this._maxErrors; }
set { this._maxErrors = value; }
}
// Check to see if MaxErrors property is set
internal bool IsSetMaxErrors()
{
return this._maxErrors != null;
}
///
/// Gets and sets the property Name.
///
/// The name of the SSM Command document or Automation runbook that contains the configuration
/// information for the managed node.
///
///
///
/// You can specify Amazon Web Services-predefined documents, documents you created, or
/// a document that is shared with you from another account.
///
///
///
/// For Systems Manager document (SSM document) that are shared with you from other Amazon
/// Web Services accounts, you must specify the complete SSM document ARN, in the following
/// format:
///
///
///
/// arn:aws:ssm:region:account-id:document/document-name
///
///
///
///
/// For example:
///
///
///
/// arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document
///
///
///
/// For Amazon Web Services-predefined documents and SSM documents you created in your
/// account, you only need to specify the document name. For example, AWS-ApplyPatchBaseline
/// or My-Document
.
///
///
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property OutputLocation.
///
/// An S3 bucket where you want to store the results of this request.
///
///
public InstanceAssociationOutputLocation OutputLocation
{
get { return this._outputLocation; }
set { this._outputLocation = value; }
}
// Check to see if OutputLocation property is set
internal bool IsSetOutputLocation()
{
return this._outputLocation != null;
}
///
/// Gets and sets the property Parameters.
///
/// The parameters you want to update for the association. If you create a parameter using
/// Parameter Store, a capability of Amazon Web Services Systems Manager, you can reference
/// the parameter using {{ssm:parameter-name}}
.
///
///
[AWSProperty(Sensitive=true)]
public Dictionary> 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 ScheduleExpression.
///
/// The cron expression used to schedule the association that you want to update.
///
///
[AWSProperty(Min=1, Max=256)]
public string ScheduleExpression
{
get { return this._scheduleExpression; }
set { this._scheduleExpression = value; }
}
// Check to see if ScheduleExpression property is set
internal bool IsSetScheduleExpression()
{
return this._scheduleExpression != null;
}
///
/// Gets and sets the property ScheduleOffset.
///
/// Number of days to wait after the scheduled day to run an association. For example,
/// if you specified a cron schedule of cron(0 0 ? * THU#2 *)
, you could
/// specify an offset of 3 to run the association each Sunday after the second Thursday
/// of the month. For more information about cron schedules for associations, see Reference:
/// Cron and rate expressions for Systems Manager in the Amazon Web Services Systems
/// Manager User Guide.
///
///
///
/// To use offsets, you must specify the ApplyOnlyAtCronInterval
parameter.
/// This option tells the system not to run an association immediately after you create
/// it.
///
///
///
[AWSProperty(Min=1, Max=6)]
public int ScheduleOffset
{
get { return this._scheduleOffset.GetValueOrDefault(); }
set { this._scheduleOffset = value; }
}
// Check to see if ScheduleOffset property is set
internal bool IsSetScheduleOffset()
{
return this._scheduleOffset.HasValue;
}
///
/// Gets and sets the property SyncCompliance.
///
/// The mode for generating association compliance. You can specify AUTO
/// or MANUAL
. In AUTO
mode, the system uses the status of the
/// association execution to determine the compliance status. If the association execution
/// runs successfully, then the association is COMPLIANT
. If the association
/// execution doesn't run successfully, the association is NON-COMPLIANT
.
///
///
///
/// In MANUAL
mode, you must specify the AssociationId
as a
/// parameter for the PutComplianceItems API operation. In this case, compliance
/// data isn't managed by State Manager, a capability of Amazon Web Services Systems Manager.
/// It is managed by your direct call to the PutComplianceItems API operation.
///
///
///
/// By default, all associations use AUTO
mode.
///
///
public AssociationSyncCompliance SyncCompliance
{
get { return this._syncCompliance; }
set { this._syncCompliance = value; }
}
// Check to see if SyncCompliance property is set
internal bool IsSetSyncCompliance()
{
return this._syncCompliance != null;
}
///
/// Gets and sets the property TargetLocations.
///
/// A location is a combination of Amazon Web Services Regions and Amazon Web Services
/// accounts where you want to run the association. Use this action to update an association
/// in multiple Regions and multiple accounts.
///
///
[AWSProperty(Min=1, Max=100)]
public List TargetLocations
{
get { return this._targetLocations; }
set { this._targetLocations = value; }
}
// Check to see if TargetLocations property is set
internal bool IsSetTargetLocations()
{
return this._targetLocations != null && this._targetLocations.Count > 0;
}
///
/// Gets and sets the property TargetMaps.
///
/// A key-value mapping of document parameters to target resources. Both Targets and TargetMaps
/// can't be specified together.
///
///
[AWSProperty(Min=0, Max=300)]
public List>> TargetMaps
{
get { return this._targetMaps; }
set { this._targetMaps = value; }
}
// Check to see if TargetMaps property is set
internal bool IsSetTargetMaps()
{
return this._targetMaps != null && this._targetMaps.Count > 0;
}
///
/// Gets and sets the property Targets.
///
/// The targets of the association.
///
///
[AWSProperty(Min=0, Max=5)]
public List Targets
{
get { return this._targets; }
set { this._targets = value; }
}
// Check to see if Targets property is set
internal bool IsSetTargets()
{
return this._targets != null && this._targets.Count > 0;
}
}
}