setTerminationProtection method
SetTerminationProtection locks a cluster (job flow) so the EC2 instances
in the cluster cannot be terminated by user intervention, an API call, or
in the event of a job-flow error. The cluster still terminates upon
successful completion of the job flow. Calling
SetTerminationProtection
on a cluster is similar to calling
the Amazon EC2 DisableAPITermination
API on all EC2 instances
in a cluster.
SetTerminationProtection
is used to prevent accidental
termination of a cluster and to ensure that in the event of an error, the
instances persist so that you can recover any data stored in their
ephemeral instance storage.
To terminate a cluster that has been locked by setting
SetTerminationProtection
to true
, you must first
unlock the job flow by a subsequent call to
SetTerminationProtection
in which you set the value to
false
.
For more information, seeManaging Cluster Termination in the Amazon EMR Management Guide.
May throw InternalServerError.
Parameter jobFlowIds
:
A list of strings that uniquely identify the clusters to protect. This
identifier is returned by RunJobFlow and can also be obtained from
DescribeJobFlows .
Parameter terminationProtected
:
A Boolean that indicates whether to protect the cluster and prevent the
Amazon EC2 instances in the cluster from shutting down due to API calls,
user intervention, or job-flow error.
Implementation
Future<void> setTerminationProtection({
required List<String> jobFlowIds,
required bool terminationProtected,
}) async {
ArgumentError.checkNotNull(jobFlowIds, 'jobFlowIds');
ArgumentError.checkNotNull(terminationProtected, 'terminationProtected');
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'ElasticMapReduce.SetTerminationProtection'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'JobFlowIds': jobFlowIds,
'TerminationProtected': terminationProtected,
},
);
}