updateAssociation method
- required String associationId,
- bool? applyOnlyAtCronInterval,
- String? associationName,
- String? associationVersion,
- String? automationTargetParameterName,
- AssociationComplianceSeverity? complianceSeverity,
- String? documentVersion,
- String? maxConcurrency,
- String? maxErrors,
- String? name,
- InstanceAssociationOutputLocation? outputLocation,
- Map<
String, List< ? parameters,String> > - String? scheduleExpression,
- AssociationSyncCompliance? syncCompliance,
- List<
TargetLocation> ? targetLocations, - List<
Target> ? targets,
Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output.
In order to call this API action, your IAM user account, group, or role
must be configured with permission to call the DescribeAssociation
API action. 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> is not authorized to perform:
ssm:DescribeAssociation on resource: <resource_arn>
May throw InternalServerError. May throw InvalidSchedule. May throw InvalidParameters. May throw InvalidOutputLocation. May throw InvalidDocumentVersion. May throw AssociationDoesNotExist. May throw InvalidUpdate. May throw TooManyUpdates. May throw InvalidDocument. May throw InvalidTarget. May throw InvalidAssociationVersion. May throw AssociationVersionLimitExceeded.
Parameter associationId
:
The ID of the association you want to update.
Parameter 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 is not supported for rate expressions.
Also, if you specified this option when you created the association, you
can reset it. 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.
Parameter associationName
:
The name of the association that you want to update.
Parameter 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.
Parameter automationTargetParameterName
:
Specify the target for the association. This target is required for
associations that use an Automation document and target resources by using
rate controls.
Parameter complianceSeverity
:
The severity level to assign to the association.
Parameter documentVersion
:
The document version you want update for the association.
Parameter 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 instance 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 instance will process its association within the limit specified for MaxConcurrency.
Parameter 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 instances 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.
Parameter name
:
The name of the SSM document that contains the configuration information
for the instance. You can specify Command or Automation documents.
You can specify AWS-predefined documents, documents you created, or a document that is shared with you from another account.
For SSM documents that are shared with you from other AWS 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 AWS-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
.
Parameter outputLocation
:
An S3 bucket where you want to store the results of this request.
Parameter parameters
:
The parameters you want to update for the association. If you create a
parameter using Parameter Store, you can reference the parameter using
{{ssm:parameter-name}}
Parameter scheduleExpression
:
The cron expression used to schedule the association that you want to
update.
Parameter 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 action. In this case, compliance data is not
managed by State Manager. It is managed by your direct call to the
PutComplianceItems API action.
By default, all associations use AUTO
mode.
Parameter targetLocations
:
A location is a combination of AWS Regions and AWS accounts where you want
to run the association. Use this action to update an association in
multiple Regions and multiple accounts.
Parameter targets
:
The targets of the association.
Implementation
Future<UpdateAssociationResult> updateAssociation({
required String associationId,
bool? applyOnlyAtCronInterval,
String? associationName,
String? associationVersion,
String? automationTargetParameterName,
AssociationComplianceSeverity? complianceSeverity,
String? documentVersion,
String? maxConcurrency,
String? maxErrors,
String? name,
InstanceAssociationOutputLocation? outputLocation,
Map<String, List<String>>? parameters,
String? scheduleExpression,
AssociationSyncCompliance? syncCompliance,
List<TargetLocation>? targetLocations,
List<Target>? targets,
}) async {
ArgumentError.checkNotNull(associationId, 'associationId');
_s.validateStringLength(
'automationTargetParameterName',
automationTargetParameterName,
1,
50,
);
_s.validateStringLength(
'maxConcurrency',
maxConcurrency,
1,
7,
);
_s.validateStringLength(
'maxErrors',
maxErrors,
1,
7,
);
_s.validateStringLength(
'scheduleExpression',
scheduleExpression,
1,
256,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AmazonSSM.UpdateAssociation'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'AssociationId': associationId,
if (applyOnlyAtCronInterval != null)
'ApplyOnlyAtCronInterval': applyOnlyAtCronInterval,
if (associationName != null) 'AssociationName': associationName,
if (associationVersion != null)
'AssociationVersion': associationVersion,
if (automationTargetParameterName != null)
'AutomationTargetParameterName': automationTargetParameterName,
if (complianceSeverity != null)
'ComplianceSeverity': complianceSeverity.toValue(),
if (documentVersion != null) 'DocumentVersion': documentVersion,
if (maxConcurrency != null) 'MaxConcurrency': maxConcurrency,
if (maxErrors != null) 'MaxErrors': maxErrors,
if (name != null) 'Name': name,
if (outputLocation != null) 'OutputLocation': outputLocation,
if (parameters != null) 'Parameters': parameters,
if (scheduleExpression != null)
'ScheduleExpression': scheduleExpression,
if (syncCompliance != null) 'SyncCompliance': syncCompliance.toValue(),
if (targetLocations != null) 'TargetLocations': targetLocations,
if (targets != null) 'Targets': targets,
},
);
return UpdateAssociationResult.fromJson(jsonResponse.body);
}