Skip to content

InstanceGroupConfig

The InstanceGroupConfig resource allows you to configure and manage AWS EMR Instance Groups within your EMR clusters.

Minimal Example

Create an EMR InstanceGroupConfig with required properties and a common optional property for bid price.

ts
import AWS from "alchemy/aws/control";

const instanceGroupConfig = await AWS.EMR.InstanceGroupConfig("core-instance-group", {
  InstanceCount: 2,
  InstanceRole: "CORE",
  InstanceType: "m5.xlarge",
  JobFlowId: "j-XXXXXXXXXX",
  BidPrice: "0.10" // Optional: specifying bid price for spot instances
});

Advanced Configuration

Configure an InstanceGroupConfig with an AutoScalingPolicy and EBS configuration for enhanced performance.

ts
const advancedInstanceGroupConfig = await AWS.EMR.InstanceGroupConfig("master-instance-group", {
  InstanceCount: 1,
  InstanceRole: "MASTER",
  InstanceType: "m5.xlarge",
  JobFlowId: "j-XXXXXXXXXX",
  AutoScalingPolicy: {
    Constraints: {
      MinCapacity: 1,
      MaxCapacity: 10
    },
    Rules: [{
      Name: "scale-out-rule",
      Action: {
        SimpleScalingPolicyConfiguration: {
          AdjustmentType: "CHANGE_IN_CAPACITY",
          ScalingAdjustment: 1,
          CoolDown: 300
        }
      },
      Trigger: {
        CloudWatchAlarmDefinition: {
          ComparisonOperator: "GREATER_THAN_OR_EQUAL",
          MetricName: "InstanceGroupUtilization",
          Namespace: "AWS/ElasticMapReduce",
          Period: 300,
          Statistic: "AVERAGE",
          Threshold: 75,
          Unit: "PERCENT"
        }
      }
    }]
  },
  EbsConfiguration: {
    EbsBlockDeviceConfigs: [{
      VolumeSpecification: {
        SizeInGB: 100,
        VolumeType: "gp2"
      },
      VolumesPerInstance: 1
    }],
    EbsOptimized: true
  }
});

Custom AMI Configuration

Create an instance group that uses a custom AMI ID for specific use cases.

ts
const customAmiInstanceGroupConfig = await AWS.EMR.InstanceGroupConfig("custom-ami-instance-group", {
  InstanceCount: 3,
  InstanceRole: "CORE",
  InstanceType: "m5.xlarge",
  JobFlowId: "j-XXXXXXXXXX",
  CustomAmiId: "ami-0123456789abcdef0" // Using a custom AMI
});