/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include A description of a cluster (job flow).See Also:
AWS
* API Reference
The job flow identifier.
*/ inline const Aws::String& GetJobFlowId() const{ return m_jobFlowId; } /** *The job flow identifier.
*/ inline bool JobFlowIdHasBeenSet() const { return m_jobFlowIdHasBeenSet; } /** *The job flow identifier.
*/ inline void SetJobFlowId(const Aws::String& value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId = value; } /** *The job flow identifier.
*/ inline void SetJobFlowId(Aws::String&& value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId = std::move(value); } /** *The job flow identifier.
*/ inline void SetJobFlowId(const char* value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId.assign(value); } /** *The job flow identifier.
*/ inline JobFlowDetail& WithJobFlowId(const Aws::String& value) { SetJobFlowId(value); return *this;} /** *The job flow identifier.
*/ inline JobFlowDetail& WithJobFlowId(Aws::String&& value) { SetJobFlowId(std::move(value)); return *this;} /** *The job flow identifier.
*/ inline JobFlowDetail& WithJobFlowId(const char* value) { SetJobFlowId(value); return *this;} /** *The name of the job flow.
*/ inline const Aws::String& GetName() const{ return m_name; } /** *The name of the job flow.
*/ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; } /** *The name of the job flow.
*/ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; } /** *The name of the job flow.
*/ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); } /** *The name of the job flow.
*/ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); } /** *The name of the job flow.
*/ inline JobFlowDetail& WithName(const Aws::String& value) { SetName(value); return *this;} /** *The name of the job flow.
*/ inline JobFlowDetail& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;} /** *The name of the job flow.
*/ inline JobFlowDetail& WithName(const char* value) { SetName(value); return *this;} /** *The location in Amazon S3 where log files for the job are stored.
*/ inline const Aws::String& GetLogUri() const{ return m_logUri; } /** *The location in Amazon S3 where log files for the job are stored.
*/ inline bool LogUriHasBeenSet() const { return m_logUriHasBeenSet; } /** *The location in Amazon S3 where log files for the job are stored.
*/ inline void SetLogUri(const Aws::String& value) { m_logUriHasBeenSet = true; m_logUri = value; } /** *The location in Amazon S3 where log files for the job are stored.
*/ inline void SetLogUri(Aws::String&& value) { m_logUriHasBeenSet = true; m_logUri = std::move(value); } /** *The location in Amazon S3 where log files for the job are stored.
*/ inline void SetLogUri(const char* value) { m_logUriHasBeenSet = true; m_logUri.assign(value); } /** *The location in Amazon S3 where log files for the job are stored.
*/ inline JobFlowDetail& WithLogUri(const Aws::String& value) { SetLogUri(value); return *this;} /** *The location in Amazon S3 where log files for the job are stored.
*/ inline JobFlowDetail& WithLogUri(Aws::String&& value) { SetLogUri(std::move(value)); return *this;} /** *The location in Amazon S3 where log files for the job are stored.
*/ inline JobFlowDetail& WithLogUri(const char* value) { SetLogUri(value); return *this;} /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline const Aws::String& GetLogEncryptionKmsKeyId() const{ return m_logEncryptionKmsKeyId; } /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline bool LogEncryptionKmsKeyIdHasBeenSet() const { return m_logEncryptionKmsKeyIdHasBeenSet; } /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline void SetLogEncryptionKmsKeyId(const Aws::String& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = value; } /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline void SetLogEncryptionKmsKeyId(Aws::String&& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = std::move(value); } /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline void SetLogEncryptionKmsKeyId(const char* value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId.assign(value); } /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(const Aws::String& value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(Aws::String&& value) { SetLogEncryptionKmsKeyId(std::move(value)); return *this;} /** *The AWS KMS customer master key (CMK) used for encrypting log files. This * attribute is only available with EMR version 5.30.0 and later, excluding EMR * 6.0.0.
*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(const char* value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
* 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use
* CustomAmiID.
Describes the execution status of the job flow.
*/ inline const JobFlowExecutionStatusDetail& GetExecutionStatusDetail() const{ return m_executionStatusDetail; } /** *Describes the execution status of the job flow.
*/ inline bool ExecutionStatusDetailHasBeenSet() const { return m_executionStatusDetailHasBeenSet; } /** *Describes the execution status of the job flow.
*/ inline void SetExecutionStatusDetail(const JobFlowExecutionStatusDetail& value) { m_executionStatusDetailHasBeenSet = true; m_executionStatusDetail = value; } /** *Describes the execution status of the job flow.
*/ inline void SetExecutionStatusDetail(JobFlowExecutionStatusDetail&& value) { m_executionStatusDetailHasBeenSet = true; m_executionStatusDetail = std::move(value); } /** *Describes the execution status of the job flow.
*/ inline JobFlowDetail& WithExecutionStatusDetail(const JobFlowExecutionStatusDetail& value) { SetExecutionStatusDetail(value); return *this;} /** *Describes the execution status of the job flow.
*/ inline JobFlowDetail& WithExecutionStatusDetail(JobFlowExecutionStatusDetail&& value) { SetExecutionStatusDetail(std::move(value)); return *this;} /** *Describes the Amazon EC2 instances of the job flow.
*/ inline const JobFlowInstancesDetail& GetInstances() const{ return m_instances; } /** *Describes the Amazon EC2 instances of the job flow.
*/ inline bool InstancesHasBeenSet() const { return m_instancesHasBeenSet; } /** *Describes the Amazon EC2 instances of the job flow.
*/ inline void SetInstances(const JobFlowInstancesDetail& value) { m_instancesHasBeenSet = true; m_instances = value; } /** *Describes the Amazon EC2 instances of the job flow.
*/ inline void SetInstances(JobFlowInstancesDetail&& value) { m_instancesHasBeenSet = true; m_instances = std::move(value); } /** *Describes the Amazon EC2 instances of the job flow.
*/ inline JobFlowDetail& WithInstances(const JobFlowInstancesDetail& value) { SetInstances(value); return *this;} /** *Describes the Amazon EC2 instances of the job flow.
*/ inline JobFlowDetail& WithInstances(JobFlowInstancesDetail&& value) { SetInstances(std::move(value)); return *this;} /** *A list of steps run by the job flow.
*/ inline const Aws::VectorA list of steps run by the job flow.
*/ inline bool StepsHasBeenSet() const { return m_stepsHasBeenSet; } /** *A list of steps run by the job flow.
*/ inline void SetSteps(const Aws::VectorA list of steps run by the job flow.
*/ inline void SetSteps(Aws::VectorA list of steps run by the job flow.
*/ inline JobFlowDetail& WithSteps(const Aws::VectorA list of steps run by the job flow.
*/ inline JobFlowDetail& WithSteps(Aws::VectorA list of steps run by the job flow.
*/ inline JobFlowDetail& AddSteps(const StepDetail& value) { m_stepsHasBeenSet = true; m_steps.push_back(value); return *this; } /** *A list of steps run by the job flow.
*/ inline JobFlowDetail& AddSteps(StepDetail&& value) { m_stepsHasBeenSet = true; m_steps.push_back(std::move(value)); return *this; } /** *A list of the bootstrap actions run by the job flow.
*/ inline const Aws::VectorA list of the bootstrap actions run by the job flow.
*/ inline bool BootstrapActionsHasBeenSet() const { return m_bootstrapActionsHasBeenSet; } /** *A list of the bootstrap actions run by the job flow.
*/ inline void SetBootstrapActions(const Aws::VectorA list of the bootstrap actions run by the job flow.
*/ inline void SetBootstrapActions(Aws::VectorA list of the bootstrap actions run by the job flow.
*/ inline JobFlowDetail& WithBootstrapActions(const Aws::VectorA list of the bootstrap actions run by the job flow.
*/ inline JobFlowDetail& WithBootstrapActions(Aws::VectorA list of the bootstrap actions run by the job flow.
*/ inline JobFlowDetail& AddBootstrapActions(const BootstrapActionDetail& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(value); return *this; } /** *A list of the bootstrap actions run by the job flow.
*/ inline JobFlowDetail& AddBootstrapActions(BootstrapActionDetail&& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(std::move(value)); return *this; } /** *A list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline const Aws::VectorA list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline bool SupportedProductsHasBeenSet() const { return m_supportedProductsHasBeenSet; } /** *A list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline void SetSupportedProducts(const Aws::VectorA list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline void SetSupportedProducts(Aws::VectorA list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline JobFlowDetail& WithSupportedProducts(const Aws::VectorA list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline JobFlowDetail& WithSupportedProducts(Aws::VectorA list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline JobFlowDetail& AddSupportedProducts(const Aws::String& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *A list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline JobFlowDetail& AddSupportedProducts(Aws::String&& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(std::move(value)); return *this; } /** *A list of strings set by third party software when the job flow is launched. * If you are not using third party software to manage the job flow this value is * empty.
*/ inline JobFlowDetail& AddSupportedProducts(const char* value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *Indicates whether the cluster is visible to all IAM users of the AWS account
* associated with the cluster. The default value, true, indicates
* that all IAM users in the AWS account can perform cluster actions if they have
* the proper IAM policy permissions. If this value is false, only the
* IAM user that created the cluster can perform actions. This value can be changed
* on a running cluster by using the SetVisibleToAllUsers action. You can
* override the default value of true when you create a cluster by
* using the VisibleToAllUsers parameter of the
* RunJobFlow action.
Indicates whether the cluster is visible to all IAM users of the AWS account
* associated with the cluster. The default value, true, indicates
* that all IAM users in the AWS account can perform cluster actions if they have
* the proper IAM policy permissions. If this value is false, only the
* IAM user that created the cluster can perform actions. This value can be changed
* on a running cluster by using the SetVisibleToAllUsers action. You can
* override the default value of true when you create a cluster by
* using the VisibleToAllUsers parameter of the
* RunJobFlow action.
Indicates whether the cluster is visible to all IAM users of the AWS account
* associated with the cluster. The default value, true, indicates
* that all IAM users in the AWS account can perform cluster actions if they have
* the proper IAM policy permissions. If this value is false, only the
* IAM user that created the cluster can perform actions. This value can be changed
* on a running cluster by using the SetVisibleToAllUsers action. You can
* override the default value of true when you create a cluster by
* using the VisibleToAllUsers parameter of the
* RunJobFlow action.
Indicates whether the cluster is visible to all IAM users of the AWS account
* associated with the cluster. The default value, true, indicates
* that all IAM users in the AWS account can perform cluster actions if they have
* the proper IAM policy permissions. If this value is false, only the
* IAM user that created the cluster can perform actions. This value can be changed
* on a running cluster by using the SetVisibleToAllUsers action. You can
* override the default value of true when you create a cluster by
* using the VisibleToAllUsers parameter of the
* RunJobFlow action.
The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline const Aws::String& GetJobFlowRole() const{ return m_jobFlowRole; } /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline bool JobFlowRoleHasBeenSet() const { return m_jobFlowRoleHasBeenSet; } /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline void SetJobFlowRole(const Aws::String& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = value; } /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline void SetJobFlowRole(Aws::String&& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = std::move(value); } /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline void SetJobFlowRole(const char* value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole.assign(value); } /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline JobFlowDetail& WithJobFlowRole(const Aws::String& value) { SetJobFlowRole(value); return *this;} /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline JobFlowDetail& WithJobFlowRole(Aws::String&& value) { SetJobFlowRole(std::move(value)); return *this;} /** *The IAM role that was specified when the job flow was launched. The EC2 * instances of the job flow assume this role.
*/ inline JobFlowDetail& WithJobFlowRole(const char* value) { SetJobFlowRole(value); return *this;} /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline const Aws::String& GetServiceRole() const{ return m_serviceRole; } /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline bool ServiceRoleHasBeenSet() const { return m_serviceRoleHasBeenSet; } /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline void SetServiceRole(const Aws::String& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = value; } /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline void SetServiceRole(Aws::String&& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = std::move(value); } /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline void SetServiceRole(const char* value) { m_serviceRoleHasBeenSet = true; m_serviceRole.assign(value); } /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline JobFlowDetail& WithServiceRole(const Aws::String& value) { SetServiceRole(value); return *this;} /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline JobFlowDetail& WithServiceRole(Aws::String&& value) { SetServiceRole(std::move(value)); return *this;} /** *The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.
*/ inline JobFlowDetail& WithServiceRole(const char* value) { SetServiceRole(value); return *this;} /** *An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
An IAM role for automatic scaling policies. The default role is
* EMR_AutoScaling_DefaultRole. The IAM role provides a way for the
* automatic scaling feature to get the required permissions it needs to launch and
* terminate EC2 instances in an instance group.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.
The way that individual Amazon EC2 instances terminate when an automatic
* scale-in activity occurs or an instance group is resized.
* TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates
* nodes at the instance-hour boundary, regardless of when the request to terminate
* the instance was submitted. This option is only available with Amazon EMR 5.1.0
* and later and is the default for clusters created using that version.
* TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR blacklists
* and drains tasks from nodes before terminating the Amazon EC2 instances,
* regardless of the instance-hour boundary. With either behavior, Amazon EMR
* removes the least active nodes first and blocks instance termination if it could
* lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available
* only in Amazon EMR version 4.1.0 and later, and is the default for versions of
* Amazon EMR earlier than 5.1.0.