/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace EMR { namespace Model { /** *

A description of the Amazon EC2 instance on which the cluster (job flow) * runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or * InstanceFleets. They cannot be used together. You may also have * MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must be * present), but we don't recommend this configuration.

See Also:

* AWS * API Reference

*/ class JobFlowInstancesConfig { public: AWS_EMR_API JobFlowInstancesConfig(); AWS_EMR_API JobFlowInstancesConfig(Aws::Utils::Json::JsonView jsonValue); AWS_EMR_API JobFlowInstancesConfig& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_EMR_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The Amazon EC2 instance type of the master node.

*/ inline const Aws::String& GetMasterInstanceType() const{ return m_masterInstanceType; } /** *

The Amazon EC2 instance type of the master node.

*/ inline bool MasterInstanceTypeHasBeenSet() const { return m_masterInstanceTypeHasBeenSet; } /** *

The Amazon EC2 instance type of the master node.

*/ inline void SetMasterInstanceType(const Aws::String& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = value; } /** *

The Amazon EC2 instance type of the master node.

*/ inline void SetMasterInstanceType(Aws::String&& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = std::move(value); } /** *

The Amazon EC2 instance type of the master node.

*/ inline void SetMasterInstanceType(const char* value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType.assign(value); } /** *

The Amazon EC2 instance type of the master node.

*/ inline JobFlowInstancesConfig& WithMasterInstanceType(const Aws::String& value) { SetMasterInstanceType(value); return *this;} /** *

The Amazon EC2 instance type of the master node.

*/ inline JobFlowInstancesConfig& WithMasterInstanceType(Aws::String&& value) { SetMasterInstanceType(std::move(value)); return *this;} /** *

The Amazon EC2 instance type of the master node.

*/ inline JobFlowInstancesConfig& WithMasterInstanceType(const char* value) { SetMasterInstanceType(value); return *this;} /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline const Aws::String& GetSlaveInstanceType() const{ return m_slaveInstanceType; } /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline bool SlaveInstanceTypeHasBeenSet() const { return m_slaveInstanceTypeHasBeenSet; } /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline void SetSlaveInstanceType(const Aws::String& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = value; } /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline void SetSlaveInstanceType(Aws::String&& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = std::move(value); } /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline void SetSlaveInstanceType(const char* value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType.assign(value); } /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline JobFlowInstancesConfig& WithSlaveInstanceType(const Aws::String& value) { SetSlaveInstanceType(value); return *this;} /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline JobFlowInstancesConfig& WithSlaveInstanceType(Aws::String&& value) { SetSlaveInstanceType(std::move(value)); return *this;} /** *

The Amazon EC2 instance type of the core and task nodes.

*/ inline JobFlowInstancesConfig& WithSlaveInstanceType(const char* value) { SetSlaveInstanceType(value); return *this;} /** *

The number of Amazon EC2 instances in the cluster.

*/ inline int GetInstanceCount() const{ return m_instanceCount; } /** *

The number of Amazon EC2 instances in the cluster.

*/ inline bool InstanceCountHasBeenSet() const { return m_instanceCountHasBeenSet; } /** *

The number of Amazon EC2 instances in the cluster.

*/ inline void SetInstanceCount(int value) { m_instanceCountHasBeenSet = true; m_instanceCount = value; } /** *

The number of Amazon EC2 instances in the cluster.

*/ inline JobFlowInstancesConfig& WithInstanceCount(int value) { SetInstanceCount(value); return *this;} /** *

Configuration for the instance groups in a cluster.

*/ inline const Aws::Vector& GetInstanceGroups() const{ return m_instanceGroups; } /** *

Configuration for the instance groups in a cluster.

*/ inline bool InstanceGroupsHasBeenSet() const { return m_instanceGroupsHasBeenSet; } /** *

Configuration for the instance groups in a cluster.

*/ inline void SetInstanceGroups(const Aws::Vector& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = value; } /** *

Configuration for the instance groups in a cluster.

*/ inline void SetInstanceGroups(Aws::Vector&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = std::move(value); } /** *

Configuration for the instance groups in a cluster.

*/ inline JobFlowInstancesConfig& WithInstanceGroups(const Aws::Vector& value) { SetInstanceGroups(value); return *this;} /** *

Configuration for the instance groups in a cluster.

*/ inline JobFlowInstancesConfig& WithInstanceGroups(Aws::Vector&& value) { SetInstanceGroups(std::move(value)); return *this;} /** *

Configuration for the instance groups in a cluster.

*/ inline JobFlowInstancesConfig& AddInstanceGroups(const InstanceGroupConfig& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(value); return *this; } /** *

Configuration for the instance groups in a cluster.

*/ inline JobFlowInstancesConfig& AddInstanceGroups(InstanceGroupConfig&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(std::move(value)); return *this; } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline const Aws::Vector& GetInstanceFleets() const{ return m_instanceFleets; } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline bool InstanceFleetsHasBeenSet() const { return m_instanceFleetsHasBeenSet; } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline void SetInstanceFleets(const Aws::Vector& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets = value; } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline void SetInstanceFleets(Aws::Vector&& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets = std::move(value); } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline JobFlowInstancesConfig& WithInstanceFleets(const Aws::Vector& value) { SetInstanceFleets(value); return *this;} /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline JobFlowInstancesConfig& WithInstanceFleets(Aws::Vector&& value) { SetInstanceFleets(std::move(value)); return *this;} /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline JobFlowInstancesConfig& AddInstanceFleets(const InstanceFleetConfig& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets.push_back(value); return *this; } /** *

The instance fleet configuration is available only in Amazon EMR * releases 4.8.0 and later, excluding 5.0.x versions.

Describes the * Amazon EC2 instances and instance configurations for clusters that use the * instance fleet configuration.

*/ inline JobFlowInstancesConfig& AddInstanceFleets(InstanceFleetConfig&& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets.push_back(std::move(value)); return *this; } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline const Aws::String& GetEc2KeyName() const{ return m_ec2KeyName; } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline bool Ec2KeyNameHasBeenSet() const { return m_ec2KeyNameHasBeenSet; } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline void SetEc2KeyName(const Aws::String& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = value; } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline void SetEc2KeyName(Aws::String&& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = std::move(value); } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline void SetEc2KeyName(const char* value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName.assign(value); } /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline JobFlowInstancesConfig& WithEc2KeyName(const Aws::String& value) { SetEc2KeyName(value); return *this;} /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline JobFlowInstancesConfig& WithEc2KeyName(Aws::String&& value) { SetEc2KeyName(std::move(value)); return *this;} /** *

The name of the Amazon EC2 key pair that can be used to connect to the master * node using SSH as the user called "hadoop."

*/ inline JobFlowInstancesConfig& WithEc2KeyName(const char* value) { SetEc2KeyName(value); return *this;} /** *

The Availability Zone in which the cluster runs.

*/ inline const PlacementType& GetPlacement() const{ return m_placement; } /** *

The Availability Zone in which the cluster runs.

*/ inline bool PlacementHasBeenSet() const { return m_placementHasBeenSet; } /** *

The Availability Zone in which the cluster runs.

*/ inline void SetPlacement(const PlacementType& value) { m_placementHasBeenSet = true; m_placement = value; } /** *

The Availability Zone in which the cluster runs.

*/ inline void SetPlacement(PlacementType&& value) { m_placementHasBeenSet = true; m_placement = std::move(value); } /** *

The Availability Zone in which the cluster runs.

*/ inline JobFlowInstancesConfig& WithPlacement(const PlacementType& value) { SetPlacement(value); return *this;} /** *

The Availability Zone in which the cluster runs.

*/ inline JobFlowInstancesConfig& WithPlacement(PlacementType&& value) { SetPlacement(std::move(value)); return *this;} /** *

Specifies whether the cluster should remain available after completing all * steps. Defaults to true. For more information about configuring * cluster termination, see Control * Cluster Termination in the EMR Management Guide.

*/ inline bool GetKeepJobFlowAliveWhenNoSteps() const{ return m_keepJobFlowAliveWhenNoSteps; } /** *

Specifies whether the cluster should remain available after completing all * steps. Defaults to true. For more information about configuring * cluster termination, see Control * Cluster Termination in the EMR Management Guide.

*/ inline bool KeepJobFlowAliveWhenNoStepsHasBeenSet() const { return m_keepJobFlowAliveWhenNoStepsHasBeenSet; } /** *

Specifies whether the cluster should remain available after completing all * steps. Defaults to true. For more information about configuring * cluster termination, see Control * Cluster Termination in the EMR Management Guide.

*/ inline void SetKeepJobFlowAliveWhenNoSteps(bool value) { m_keepJobFlowAliveWhenNoStepsHasBeenSet = true; m_keepJobFlowAliveWhenNoSteps = value; } /** *

Specifies whether the cluster should remain available after completing all * steps. Defaults to true. For more information about configuring * cluster termination, see Control * Cluster Termination in the EMR Management Guide.

*/ inline JobFlowInstancesConfig& WithKeepJobFlowAliveWhenNoSteps(bool value) { SetKeepJobFlowAliveWhenNoSteps(value); return *this;} /** *

Specifies whether to lock the cluster to prevent the Amazon EC2 instances * from being terminated by API call, user intervention, or in the event of a * job-flow error.

*/ inline bool GetTerminationProtected() const{ return m_terminationProtected; } /** *

Specifies whether to lock the cluster to prevent the Amazon EC2 instances * from being terminated by API call, user intervention, or in the event of a * job-flow error.

*/ inline bool TerminationProtectedHasBeenSet() const { return m_terminationProtectedHasBeenSet; } /** *

Specifies whether to lock the cluster to prevent the Amazon EC2 instances * from being terminated by API call, user intervention, or in the event of a * job-flow error.

*/ inline void SetTerminationProtected(bool value) { m_terminationProtectedHasBeenSet = true; m_terminationProtected = value; } /** *

Specifies whether to lock the cluster to prevent the Amazon EC2 instances * from being terminated by API call, user intervention, or in the event of a * job-flow error.

*/ inline JobFlowInstancesConfig& WithTerminationProtected(bool value) { SetTerminationProtected(value); return *this;} /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline const Aws::String& GetHadoopVersion() const{ return m_hadoopVersion; } /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline bool HadoopVersionHasBeenSet() const { return m_hadoopVersionHasBeenSet; } /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline void SetHadoopVersion(const Aws::String& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = value; } /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline void SetHadoopVersion(Aws::String&& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = std::move(value); } /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline void SetHadoopVersion(const char* value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion.assign(value); } /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline JobFlowInstancesConfig& WithHadoopVersion(const Aws::String& value) { SetHadoopVersion(value); return *this;} /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline JobFlowInstancesConfig& WithHadoopVersion(Aws::String&& value) { SetHadoopVersion(std::move(value)); return *this;} /** *

Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the * AmiVersion parameter is set in the RunJobFlow call, in which case * the default version of Hadoop for that AMI version is used.

*/ inline JobFlowInstancesConfig& WithHadoopVersion(const char* value) { SetHadoopVersion(value); return *this;} /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline const Aws::String& GetEc2SubnetId() const{ return m_ec2SubnetId; } /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline bool Ec2SubnetIdHasBeenSet() const { return m_ec2SubnetIdHasBeenSet; } /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline void SetEc2SubnetId(const Aws::String& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = value; } /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline void SetEc2SubnetId(Aws::String&& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = std::move(value); } /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline void SetEc2SubnetId(const char* value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId.assign(value); } /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline JobFlowInstancesConfig& WithEc2SubnetId(const Aws::String& value) { SetEc2SubnetId(value); return *this;} /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline JobFlowInstancesConfig& WithEc2SubnetId(Aws::String&& value) { SetEc2SubnetId(std::move(value)); return *this;} /** *

Applies to clusters that use the uniform instance group configuration. To * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this * parameter to the identifier of the Amazon VPC subnet where you want the cluster * to launch. If you do not specify this value and your account supports * EC2-Classic, the cluster launches in EC2-Classic.

*/ inline JobFlowInstancesConfig& WithEc2SubnetId(const char* value) { SetEc2SubnetId(value); return *this;} /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline const Aws::Vector& GetEc2SubnetIds() const{ return m_ec2SubnetIds; } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline bool Ec2SubnetIdsHasBeenSet() const { return m_ec2SubnetIdsHasBeenSet; } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline void SetEc2SubnetIds(const Aws::Vector& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds = value; } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline void SetEc2SubnetIds(Aws::Vector&& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds = std::move(value); } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline JobFlowInstancesConfig& WithEc2SubnetIds(const Aws::Vector& value) { SetEc2SubnetIds(value); return *this;} /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline JobFlowInstancesConfig& WithEc2SubnetIds(Aws::Vector&& value) { SetEc2SubnetIds(std::move(value)); return *this;} /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline JobFlowInstancesConfig& AddEc2SubnetIds(const Aws::String& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(value); return *this; } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline JobFlowInstancesConfig& AddEc2SubnetIds(Aws::String&& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(std::move(value)); return *this; } /** *

Applies to clusters that use the instance fleet configuration. When multiple * Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches * instances in the optimal subnet.

The instance fleet configuration * is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x * versions.

*/ inline JobFlowInstancesConfig& AddEc2SubnetIds(const char* value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(value); return *this; } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline const Aws::String& GetEmrManagedMasterSecurityGroup() const{ return m_emrManagedMasterSecurityGroup; } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline bool EmrManagedMasterSecurityGroupHasBeenSet() const { return m_emrManagedMasterSecurityGroupHasBeenSet; } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline void SetEmrManagedMasterSecurityGroup(const Aws::String& value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup = value; } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline void SetEmrManagedMasterSecurityGroup(Aws::String&& value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup = std::move(value); } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline void SetEmrManagedMasterSecurityGroup(const char* value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup.assign(value); } /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(const Aws::String& value) { SetEmrManagedMasterSecurityGroup(value); return *this;} /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(Aws::String&& value) { SetEmrManagedMasterSecurityGroup(std::move(value)); return *this;} /** *

The identifier of the Amazon EC2 security group for the master node. If you * specify EmrManagedMasterSecurityGroup, you must also specify * EmrManagedSlaveSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(const char* value) { SetEmrManagedMasterSecurityGroup(value); return *this;} /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline const Aws::String& GetEmrManagedSlaveSecurityGroup() const{ return m_emrManagedSlaveSecurityGroup; } /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline bool EmrManagedSlaveSecurityGroupHasBeenSet() const { return m_emrManagedSlaveSecurityGroupHasBeenSet; } /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline void SetEmrManagedSlaveSecurityGroup(const Aws::String& value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup = value; } /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline void SetEmrManagedSlaveSecurityGroup(Aws::String&& value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup = std::move(value); } /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline void SetEmrManagedSlaveSecurityGroup(const char* value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup.assign(value); } /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(const Aws::String& value) { SetEmrManagedSlaveSecurityGroup(value); return *this;} /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(Aws::String&& value) { SetEmrManagedSlaveSecurityGroup(std::move(value)); return *this;} /** *

The identifier of the Amazon EC2 security group for the core and task nodes. * If you specify EmrManagedSlaveSecurityGroup, you must also specify * EmrManagedMasterSecurityGroup.

*/ inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(const char* value) { SetEmrManagedSlaveSecurityGroup(value); return *this;} /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline const Aws::String& GetServiceAccessSecurityGroup() const{ return m_serviceAccessSecurityGroup; } /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline bool ServiceAccessSecurityGroupHasBeenSet() const { return m_serviceAccessSecurityGroupHasBeenSet; } /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline void SetServiceAccessSecurityGroup(const Aws::String& value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup = value; } /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline void SetServiceAccessSecurityGroup(Aws::String&& value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup = std::move(value); } /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline void SetServiceAccessSecurityGroup(const char* value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup.assign(value); } /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(const Aws::String& value) { SetServiceAccessSecurityGroup(value); return *this;} /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(Aws::String&& value) { SetServiceAccessSecurityGroup(std::move(value)); return *this;} /** *

The identifier of the Amazon EC2 security group for the Amazon EMR service to * access clusters in VPC private subnets.

*/ inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(const char* value) { SetServiceAccessSecurityGroup(value); return *this;} /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline const Aws::Vector& GetAdditionalMasterSecurityGroups() const{ return m_additionalMasterSecurityGroups; } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline bool AdditionalMasterSecurityGroupsHasBeenSet() const { return m_additionalMasterSecurityGroupsHasBeenSet; } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline void SetAdditionalMasterSecurityGroups(const Aws::Vector& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups = value; } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline void SetAdditionalMasterSecurityGroups(Aws::Vector&& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups = std::move(value); } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline JobFlowInstancesConfig& WithAdditionalMasterSecurityGroups(const Aws::Vector& value) { SetAdditionalMasterSecurityGroups(value); return *this;} /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline JobFlowInstancesConfig& WithAdditionalMasterSecurityGroups(Aws::Vector&& value) { SetAdditionalMasterSecurityGroups(std::move(value)); return *this;} /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(const Aws::String& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(value); return *this; } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(Aws::String&& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(std::move(value)); return *this; } /** *

A list of additional Amazon EC2 security group IDs for the master node.

*/ inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(const char* value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(value); return *this; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline const Aws::Vector& GetAdditionalSlaveSecurityGroups() const{ return m_additionalSlaveSecurityGroups; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline bool AdditionalSlaveSecurityGroupsHasBeenSet() const { return m_additionalSlaveSecurityGroupsHasBeenSet; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline void SetAdditionalSlaveSecurityGroups(const Aws::Vector& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups = value; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline void SetAdditionalSlaveSecurityGroups(Aws::Vector&& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups = std::move(value); } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline JobFlowInstancesConfig& WithAdditionalSlaveSecurityGroups(const Aws::Vector& value) { SetAdditionalSlaveSecurityGroups(value); return *this;} /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline JobFlowInstancesConfig& WithAdditionalSlaveSecurityGroups(Aws::Vector&& value) { SetAdditionalSlaveSecurityGroups(std::move(value)); return *this;} /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(const Aws::String& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(value); return *this; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(Aws::String&& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(std::move(value)); return *this; } /** *

A list of additional Amazon EC2 security group IDs for the core and task * nodes.

*/ inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(const char* value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(value); return *this; } private: Aws::String m_masterInstanceType; bool m_masterInstanceTypeHasBeenSet = false; Aws::String m_slaveInstanceType; bool m_slaveInstanceTypeHasBeenSet = false; int m_instanceCount; bool m_instanceCountHasBeenSet = false; Aws::Vector m_instanceGroups; bool m_instanceGroupsHasBeenSet = false; Aws::Vector m_instanceFleets; bool m_instanceFleetsHasBeenSet = false; Aws::String m_ec2KeyName; bool m_ec2KeyNameHasBeenSet = false; PlacementType m_placement; bool m_placementHasBeenSet = false; bool m_keepJobFlowAliveWhenNoSteps; bool m_keepJobFlowAliveWhenNoStepsHasBeenSet = false; bool m_terminationProtected; bool m_terminationProtectedHasBeenSet = false; Aws::String m_hadoopVersion; bool m_hadoopVersionHasBeenSet = false; Aws::String m_ec2SubnetId; bool m_ec2SubnetIdHasBeenSet = false; Aws::Vector m_ec2SubnetIds; bool m_ec2SubnetIdsHasBeenSet = false; Aws::String m_emrManagedMasterSecurityGroup; bool m_emrManagedMasterSecurityGroupHasBeenSet = false; Aws::String m_emrManagedSlaveSecurityGroup; bool m_emrManagedSlaveSecurityGroupHasBeenSet = false; Aws::String m_serviceAccessSecurityGroup; bool m_serviceAccessSecurityGroupHasBeenSet = false; Aws::Vector m_additionalMasterSecurityGroups; bool m_additionalMasterSecurityGroupsHasBeenSet = false; Aws::Vector m_additionalSlaveSecurityGroups; bool m_additionalSlaveSecurityGroupsHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws