setTerminationProtection method

Future<void> setTerminationProtection({
  1. required List<String> jobFlowIds,
  2. required bool terminationProtected,
})

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,
    },
  );
}