JobFlowInstancesConfigProperty Struct
JobFlowInstancesConfig is a property of the AWS::EMR::Cluster resource.
JobFlowInstancesConfig defines the instance groups or instance fleets that comprise the cluster. JobFlowInstancesConfig must contain either InstanceFleetConfig or InstanceGroupConfig . They cannot be used together.
You can now define task instance groups or task instance fleets using the TaskInstanceGroups and TaskInstanceFleets subproperties. Using these subproperties reduces delays in provisioning task nodes compared to specifying task nodes with the InstanceFleetConfig and InstanceGroupConfig resources.
Example
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_emr as emr } from 'aws-cdk-lib';
declare const configurationProperty_: emr.CfnCluster.ConfigurationProperty;
const jobFlowInstancesConfigProperty: emr.CfnCluster.JobFlowInstancesConfigProperty = {
additionalMasterSecurityGroups: ['additionalMasterSecurityGroups'],
additionalSlaveSecurityGroups: ['additionalSlaveSecurityGroups'],
coreInstanceFleet: {
instanceTypeConfigs: [{
instanceType: 'instanceType',
// the properties below are optional
bidPrice: 'bidPrice',
bidPriceAsPercentageOfOnDemandPrice: 123,
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
priority: 123,
weightedCapacity: 123,
}],
launchSpecifications: {
onDemandSpecification: {
allocationStrategy: 'allocationStrategy',
// the properties below are optional
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
},
spotSpecification: {
timeoutAction: 'timeoutAction',
timeoutDurationMinutes: 123,
// the properties below are optional
allocationStrategy: 'allocationStrategy',
blockDurationMinutes: 123,
},
},
name: 'name',
resizeSpecifications: {
onDemandResizeSpecification: {
allocationStrategy: 'allocationStrategy',
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
timeoutDurationMinutes: 123,
},
spotResizeSpecification: {
allocationStrategy: 'allocationStrategy',
timeoutDurationMinutes: 123,
},
},
targetOnDemandCapacity: 123,
targetSpotCapacity: 123,
},
coreInstanceGroup: {
instanceCount: 123,
instanceType: 'instanceType',
// the properties below are optional
autoScalingPolicy: {
constraints: {
maxCapacity: 123,
minCapacity: 123,
},
rules: [{
action: {
simpleScalingPolicyConfiguration: {
scalingAdjustment: 123,
// the properties below are optional
adjustmentType: 'adjustmentType',
coolDown: 123,
},
// the properties below are optional
market: 'market',
},
name: 'name',
trigger: {
cloudWatchAlarmDefinition: {
comparisonOperator: 'comparisonOperator',
metricName: 'metricName',
period: 123,
threshold: 123,
// the properties below are optional
dimensions: [{
key: 'key',
value: 'value',
}],
evaluationPeriods: 123,
namespace: 'namespace',
statistic: 'statistic',
unit: 'unit',
},
},
// the properties below are optional
description: 'description',
}],
},
bidPrice: 'bidPrice',
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
market: 'market',
name: 'name',
},
ec2KeyName: 'ec2KeyName',
ec2SubnetId: 'ec2SubnetId',
ec2SubnetIds: ['ec2SubnetIds'],
emrManagedMasterSecurityGroup: 'emrManagedMasterSecurityGroup',
emrManagedSlaveSecurityGroup: 'emrManagedSlaveSecurityGroup',
hadoopVersion: 'hadoopVersion',
keepJobFlowAliveWhenNoSteps: false,
masterInstanceFleet: {
instanceTypeConfigs: [{
instanceType: 'instanceType',
// the properties below are optional
bidPrice: 'bidPrice',
bidPriceAsPercentageOfOnDemandPrice: 123,
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
priority: 123,
weightedCapacity: 123,
}],
launchSpecifications: {
onDemandSpecification: {
allocationStrategy: 'allocationStrategy',
// the properties below are optional
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
},
spotSpecification: {
timeoutAction: 'timeoutAction',
timeoutDurationMinutes: 123,
// the properties below are optional
allocationStrategy: 'allocationStrategy',
blockDurationMinutes: 123,
},
},
name: 'name',
resizeSpecifications: {
onDemandResizeSpecification: {
allocationStrategy: 'allocationStrategy',
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
timeoutDurationMinutes: 123,
},
spotResizeSpecification: {
allocationStrategy: 'allocationStrategy',
timeoutDurationMinutes: 123,
},
},
targetOnDemandCapacity: 123,
targetSpotCapacity: 123,
},
masterInstanceGroup: {
instanceCount: 123,
instanceType: 'instanceType',
// the properties below are optional
autoScalingPolicy: {
constraints: {
maxCapacity: 123,
minCapacity: 123,
},
rules: [{
action: {
simpleScalingPolicyConfiguration: {
scalingAdjustment: 123,
// the properties below are optional
adjustmentType: 'adjustmentType',
coolDown: 123,
},
// the properties below are optional
market: 'market',
},
name: 'name',
trigger: {
cloudWatchAlarmDefinition: {
comparisonOperator: 'comparisonOperator',
metricName: 'metricName',
period: 123,
threshold: 123,
// the properties below are optional
dimensions: [{
key: 'key',
value: 'value',
}],
evaluationPeriods: 123,
namespace: 'namespace',
statistic: 'statistic',
unit: 'unit',
},
},
// the properties below are optional
description: 'description',
}],
},
bidPrice: 'bidPrice',
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
market: 'market',
name: 'name',
},
placement: {
availabilityZone: 'availabilityZone',
},
serviceAccessSecurityGroup: 'serviceAccessSecurityGroup',
taskInstanceFleets: [{
instanceTypeConfigs: [{
instanceType: 'instanceType',
// the properties below are optional
bidPrice: 'bidPrice',
bidPriceAsPercentageOfOnDemandPrice: 123,
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
priority: 123,
weightedCapacity: 123,
}],
launchSpecifications: {
onDemandSpecification: {
allocationStrategy: 'allocationStrategy',
// the properties below are optional
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
},
spotSpecification: {
timeoutAction: 'timeoutAction',
timeoutDurationMinutes: 123,
// the properties below are optional
allocationStrategy: 'allocationStrategy',
blockDurationMinutes: 123,
},
},
name: 'name',
resizeSpecifications: {
onDemandResizeSpecification: {
allocationStrategy: 'allocationStrategy',
capacityReservationOptions: {
capacityReservationPreference: 'capacityReservationPreference',
capacityReservationResourceGroupArn: 'capacityReservationResourceGroupArn',
usageStrategy: 'usageStrategy',
},
timeoutDurationMinutes: 123,
},
spotResizeSpecification: {
allocationStrategy: 'allocationStrategy',
timeoutDurationMinutes: 123,
},
},
targetOnDemandCapacity: 123,
targetSpotCapacity: 123,
}],
taskInstanceGroups: [{
instanceCount: 123,
instanceType: 'instanceType',
// the properties below are optional
autoScalingPolicy: {
constraints: {
maxCapacity: 123,
minCapacity: 123,
},
rules: [{
action: {
simpleScalingPolicyConfiguration: {
scalingAdjustment: 123,
// the properties below are optional
adjustmentType: 'adjustmentType',
coolDown: 123,
},
// the properties below are optional
market: 'market',
},
name: 'name',
trigger: {
cloudWatchAlarmDefinition: {
comparisonOperator: 'comparisonOperator',
metricName: 'metricName',
period: 123,
threshold: 123,
// the properties below are optional
dimensions: [{
key: 'key',
value: 'value',
}],
evaluationPeriods: 123,
namespace: 'namespace',
statistic: 'statistic',
unit: 'unit',
},
},
// the properties below are optional
description: 'description',
}],
},
bidPrice: 'bidPrice',
configurations: [{
classification: 'classification',
configurationProperties: {
configurationPropertiesKey: 'configurationProperties',
},
configurations: [configurationProperty_],
}],
customAmiId: 'customAmiId',
ebsConfiguration: {
ebsBlockDeviceConfigs: [{
volumeSpecification: {
sizeInGb: 123,
volumeType: 'volumeType',
// the properties below are optional
iops: 123,
throughput: 123,
},
// the properties below are optional
volumesPerInstance: 123,
}],
ebsOptimized: false,
},
market: 'market',
name: 'name',
}],
terminationProtected: false,
unhealthyNodeReplacement: false,
};
Properties
additionalMasterSecurityGroupsstring[]additional_master_security_groupstyping.List[str]additionalMasterSecurityGroupsList<String>AdditionalMasterSecurityGroupsstring[]AdditionalMasterSecurityGroups*[]*string#additionalSlaveSecurityGroupsstring[]additional_slave_security_groupstyping.List[str]additionalSlaveSecurityGroupsList<String>AdditionalSlaveSecurityGroupsstring[]AdditionalSlaveSecurityGroups*[]*string#coreInstanceFleetIResolvable | CfnCluster.InstanceFleetConfigPropertycore_instance_fleettyping.Union[IResolvable, InstanceFleetConfigProperty]coreInstanceFleetIResolvableCoreInstanceFleetIResolvableCoreInstanceFleetinterface{}#coreInstanceGroupIResolvable | CfnCluster.InstanceGroupConfigPropertycore_instance_grouptyping.Union[IResolvable, InstanceGroupConfigProperty]coreInstanceGroupIResolvableCoreInstanceGroupIResolvableCoreInstanceGroupinterface{}#notes
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.
ec2SubnetIdsstring[]ec2_subnet_idstyping.List[str]ec2SubnetIdsList<String>Ec2SubnetIdsstring[]Ec2SubnetIds*[]*string#notes
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.
emrManagedMasterSecurityGroupstringemr_managed_master_security_groupstremrManagedMasterSecurityGroupStringEmrManagedMasterSecurityGroupstringEmrManagedMasterSecurityGroup*string#If you specify EmrManagedMasterSecurityGroup , you must also specify EmrManagedSlaveSecurityGroup .
emrManagedSlaveSecurityGroupstringemr_managed_slave_security_groupstremrManagedSlaveSecurityGroupStringEmrManagedSlaveSecurityGroupstringEmrManagedSlaveSecurityGroup*string#If you specify EmrManagedSlaveSecurityGroup , you must also specify EmrManagedMasterSecurityGroup .
keepJobFlowAliveWhenNoStepsboolean | IResolvablekeep_job_flow_alive_when_no_stepstyping.Union[bool, IResolvable]keepJobFlowAliveWhenNoStepsBooleanKeepJobFlowAliveWhenNoStepsboolKeepJobFlowAliveWhenNoStepsinterface{}#Defaults to false . For more information about configuring cluster termination, see Control Cluster Termination in the EMR Management Guide .
masterInstanceFleetIResolvable | CfnCluster.InstanceFleetConfigPropertymaster_instance_fleettyping.Union[IResolvable, InstanceFleetConfigProperty]masterInstanceFleetIResolvableMasterInstanceFleetIResolvableMasterInstanceFleetinterface{}#masterInstanceGroupIResolvable | CfnCluster.InstanceGroupConfigPropertymaster_instance_grouptyping.Union[IResolvable, InstanceGroupConfigProperty]masterInstanceGroupIResolvableMasterInstanceGroupIResolvableMasterInstanceGroupinterface{}#placementIResolvable | CfnCluster.PlacementTypePropertyplacementtyping.Union[IResolvable, PlacementTypeProperty]placementIResolvablePlacementIResolvablePlacementinterface{}#serviceAccessSecurityGroupstringservice_access_security_groupstrserviceAccessSecurityGroupStringServiceAccessSecurityGroupstringServiceAccessSecurityGroup*string#taskInstanceFleetsIResolvable | IResolvable | CfnCluster.InstanceFleetConfigProperty[]task_instance_fleetstyping.Union[IResolvable, typing.List[typing.Union[IResolvable, InstanceFleetConfigProperty]]]taskInstanceFleetsIResolvableTaskInstanceFleetsIResolvableTaskInstanceFleetsinterface{}#notes
These task instance fleets are added to the cluster as part of the cluster launch. Each task instance fleet must have a unique name specified so that CloudFormation can differentiate between the task instance fleets.
You can currently specify only one task instance fleet for a cluster. After creating the cluster, you can only modify the mutable properties of
InstanceFleetConfig, which areTargetOnDemandCapacityandTargetSpotCapacity. Modifying any other property results in cluster replacement. > To allow a maximum of 30 Amazon EC2 instance types per fleet, includeTaskInstanceFleetswhen you create your cluster. If you create your cluster withoutTaskInstanceFleets, Amazon EMR uses its default allocation strategy, which allows for a maximum of five Amazon EC2 instance types.
taskInstanceGroupsIResolvable | IResolvable | CfnCluster.InstanceGroupConfigProperty[]task_instance_groupstyping.Union[IResolvable, typing.List[typing.Union[IResolvable, InstanceGroupConfigProperty]]]taskInstanceGroupsIResolvableTaskInstanceGroupsIResolvableTaskInstanceGroupsinterface{}#notes
These task instance groups are added to the cluster as part of the cluster launch. Each task instance group must have a unique name specified so that CloudFormation can differentiate between the task instance groups.
After creating the cluster, you can only modify the mutable properties of
InstanceGroupConfig, which areAutoScalingPolicyandInstanceCount. Modifying any other property results in cluster replacement.
terminationProtectedboolean | IResolvabletermination_protectedtyping.Union[bool, IResolvable]terminationProtectedBooleanTerminationProtectedboolTerminationProtectedinterface{}#unhealthyNodeReplacementboolean | IResolvableunhealthy_node_replacementtyping.Union[bool, IResolvable]unhealthyNodeReplacementBooleanUnhealthyNodeReplacementboolUnhealthyNodeReplacementinterface{}#