

This is the new *CloudFormation Template Reference Guide*. Please update your bookmarks and links. For help getting started with CloudFormation, see the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# AWS::EMR::InstanceGroupConfig
<a name="aws-resource-emr-instancegroupconfig"></a>

Use `InstanceGroupConfig` to define instance groups for an EMR cluster. A cluster can not use both instance groups and instance fleets. For more information, see [Create a Cluster with Instance Fleets or Uniform Instance Groups](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-instance-group-configuration.html) in the *Amazon EMR Management Guide*.

**Important**  
You can currently only add task instance groups to a cluster with this resource. If you use this resource, CloudFormation waits for the cluster launch to complete before adding the task instance group to the cluster. In order to add task instance groups to the cluster as part of the cluster launch and minimize delays in provisioning task nodes, use the `TaskInstanceGroups` subproperty for the [AWS::EMR::Cluster JobFlowInstancesConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html) property instead. To use this subproperty, see [AWS::EMR::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html) for examples.

## Syntax
<a name="aws-resource-emr-instancegroupconfig-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-resource-emr-instancegroupconfig-syntax.json"></a>

```
{
  "Type" : "AWS::EMR::InstanceGroupConfig",
  "Properties" : {
      "[AutoScalingPolicy](#cfn-emr-instancegroupconfig-autoscalingpolicy)" : AutoScalingPolicy,
      "[BidPrice](#cfn-emr-instancegroupconfig-bidprice)" : String,
      "[Configurations](#cfn-emr-instancegroupconfig-configurations)" : [ Configuration, ... ],
      "[CustomAmiId](#cfn-emr-instancegroupconfig-customamiid)" : String,
      "[EbsConfiguration](#cfn-emr-instancegroupconfig-ebsconfiguration)" : EbsConfiguration,
      "[InstanceCount](#cfn-emr-instancegroupconfig-instancecount)" : Integer,
      "[InstanceRole](#cfn-emr-instancegroupconfig-instancerole)" : String,
      "[InstanceType](#cfn-emr-instancegroupconfig-instancetype)" : String,
      "[JobFlowId](#cfn-emr-instancegroupconfig-jobflowid)" : String,
      "[Market](#cfn-emr-instancegroupconfig-market)" : String,
      "[Name](#cfn-emr-instancegroupconfig-name)" : String
    }
}
```

### YAML
<a name="aws-resource-emr-instancegroupconfig-syntax.yaml"></a>

```
Type: AWS::EMR::InstanceGroupConfig
Properties:
  [AutoScalingPolicy](#cfn-emr-instancegroupconfig-autoscalingpolicy): 
    AutoScalingPolicy
  [BidPrice](#cfn-emr-instancegroupconfig-bidprice): String
  [Configurations](#cfn-emr-instancegroupconfig-configurations): 
    - Configuration
  [CustomAmiId](#cfn-emr-instancegroupconfig-customamiid): String
  [EbsConfiguration](#cfn-emr-instancegroupconfig-ebsconfiguration): 
    EbsConfiguration
  [InstanceCount](#cfn-emr-instancegroupconfig-instancecount): Integer
  [InstanceRole](#cfn-emr-instancegroupconfig-instancerole): String
  [InstanceType](#cfn-emr-instancegroupconfig-instancetype): String
  [JobFlowId](#cfn-emr-instancegroupconfig-jobflowid): String
  [Market](#cfn-emr-instancegroupconfig-market): String
  [Name](#cfn-emr-instancegroupconfig-name): String
```

## Properties
<a name="aws-resource-emr-instancegroupconfig-properties"></a>

`AutoScalingPolicy`  <a name="cfn-emr-instancegroupconfig-autoscalingpolicy"></a>
`AutoScalingPolicy` is a subproperty of `InstanceGroupConfig`. `AutoScalingPolicy` defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. For more information, see [Using Automatic Scaling in Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-automatic-scaling.html) in the *Amazon EMR Management Guide*.  
*Required*: No  
*Type*: [AutoScalingPolicy](aws-properties-emr-instancegroupconfig-autoscalingpolicy.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`BidPrice`  <a name="cfn-emr-instancegroupconfig-bidprice"></a>
If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify `OnDemandPrice` to set the amount equal to the On-Demand price, or specify an amount in USD.  
*Required*: No  
*Type*: String  
*Pattern*: `[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*`  
*Minimum*: `0`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Configurations`  <a name="cfn-emr-instancegroupconfig-configurations"></a>
Amazon EMR releases 4.x or later.
The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).  
*Required*: No  
*Type*: Array of [Configuration](aws-properties-emr-instancegroupconfig-configuration.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CustomAmiId`  <a name="cfn-emr-instancegroupconfig-customamiid"></a>
The custom AMI ID to use for the provisioned instance group.  
*Required*: No  
*Type*: String  
*Pattern*: `[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*`  
*Minimum*: `0`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`EbsConfiguration`  <a name="cfn-emr-instancegroupconfig-ebsconfiguration"></a>
`EbsConfiguration` determines the EBS volumes to attach to EMR cluster instances.  
*Required*: No  
*Type*: [EbsConfiguration](aws-properties-emr-instancegroupconfig-ebsconfiguration.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`InstanceCount`  <a name="cfn-emr-instancegroupconfig-instancecount"></a>
Target number of instances for the instance group.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`InstanceRole`  <a name="cfn-emr-instancegroupconfig-instancerole"></a>
The role of the instance group in the cluster.  
*Allowed Values*: TASK  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`InstanceType`  <a name="cfn-emr-instancegroupconfig-instancetype"></a>
The Amazon EC2 instance type for all instances in the instance group.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*`  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`JobFlowId`  <a name="cfn-emr-instancegroupconfig-jobflowid"></a>
The ID of an Amazon EMR cluster that you want to associate this instance group with.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Market`  <a name="cfn-emr-instancegroupconfig-market"></a>
Market type of the Amazon EC2 instances used to create a cluster node.  
*Required*: No  
*Type*: String  
*Allowed values*: `ON_DEMAND | SPOT`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Name`  <a name="cfn-emr-instancegroupconfig-name"></a>
Friendly name given to the instance group.  
*Required*: No  
*Type*: String  
*Pattern*: `[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*`  
*Minimum*: `0`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-emr-instancegroupconfig-return-values"></a>

### Ref
<a name="aws-resource-emr-instancegroupconfig-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns returns the ID of the instance group.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

### Fn::GetAtt
<a name="aws-resource-emr-instancegroupconfig-return-values-fn--getatt"></a>

## Examples
<a name="aws-resource-emr-instancegroupconfig--examples"></a>

Example instance group configuration specifications.

**Topics**
+ [Add a task instance group](#aws-resource-emr-instancegroupconfig--examples--Add_a_task_instance_group)
+ [Specify an Automatic Scaling Policy](#aws-resource-emr-instancegroupconfig--examples--Specify_an_Automatic_Scaling_Policy)

### Add a task instance group
<a name="aws-resource-emr-instancegroupconfig--examples--Add_a_task_instance_group"></a>

The following example adds a task instance group to a cluster named `TestCluster`.

#### JSON
<a name="aws-resource-emr-instancegroupconfig--examples--Add_a_task_instance_group--json"></a>

```
"TestInstanceGroupConfig": {
    "Type": "AWS: : EMR: : InstanceGroupConfig",
    "Properties": {
        "InstanceCount": 2,
        "InstanceType": "m3.xlarge",
        "InstanceRole": "TASK",
        "Market": "ON_DEMAND",
        "Name": "cfnTask2",
        "JobFlowId": {
            "Ref": "cluster"
        }
    }
}
```

#### YAML
<a name="aws-resource-emr-instancegroupconfig--examples--Add_a_task_instance_group--yaml"></a>

```
TestInstanceGroupConfig: 
  Properties: 
    InstanceCount: 2
    InstanceRole: TASK
    InstanceType: m3.xlarge
    JobFlowId: 
      Ref: cluster
    Market: ON_DEMAND
    Name: cfnTask2
  Type: "AWS::EMR::InstanceGroupConfig"
```

### Specify an Automatic Scaling Policy
<a name="aws-resource-emr-instancegroupconfig--examples--Specify_an_Automatic_Scaling_Policy"></a>

The following example defines an `AutoScalingPolicy` for an `InstanceGroupConfig` resource.

#### JSON
<a name="aws-resource-emr-instancegroupconfig--examples--Specify_an_Automatic_Scaling_Policy--json"></a>

```
"MyInstanceGroupConfig": {
  "Type": "AWS::EMR::InstanceGroupConfig",
  "Properties": {
    "InstanceCount": 1,
    "InstanceType": {
      "Ref": "InstanceType"
    },
    "InstanceRole": "TASK",
    "Market": "ON_DEMAND",
    "Name": "cfnTask",
    "JobFlowId": {
      "Ref": "MyCluster"
    },
    "AutoScalingPolicy": {
      "Constraints": {
        "MinCapacity": {
          "Ref": "MinCapacity"
        },
        "MaxCapacity": {
          "Ref": "MaxCapacity"
        }
      },
      "Rules": [
        {
          "Name": "Scale-out",
          "Description": "Scale-out policy",
          "Action": {
            "SimpleScalingPolicyConfiguration": {
              "AdjustmentType": "CHANGE_IN_CAPACITY",
              "ScalingAdjustment": 1,
              "CoolDown": 300
            }
          },
          "Trigger": {
            "CloudWatchAlarmDefinition": {
              "Dimensions": [
                {
                  "Key": "JobFlowId",
                  "Value": "${emr.clusterId}"
                }
              ],
              "EvaluationPeriods": 1,
              "Namespace": "AWS/ElasticMapReduce",
              "Period": 300,
              "ComparisonOperator": "LESS_THAN",
              "Statistic": "AVERAGE",
              "Threshold": 15,
              "Unit": "PERCENT",
              "MetricName": "YARNMemoryAvailablePercentage"
            }
          }
        },
        {
          "Name": "Scale-in",
          "Description": "Scale-in policy",
          "Action": {
            "SimpleScalingPolicyConfiguration": {
              "AdjustmentType": "CHANGE_IN_CAPACITY",
              "ScalingAdjustment": -1,
              "CoolDown": 300
            }
          },
          "Trigger": {
            "CloudWatchAlarmDefinition": {
              "Dimensions": [
                {
                  "Key": "JobFlowId",
                  "Value": "${emr.clusterId}"
                }
              ],
              "EvaluationPeriods": 1,
              "Namespace": "AWS/ElasticMapReduce",
              "Period": 300,
              "ComparisonOperator": "GREATER_THAN",
              "Statistic": "AVERAGE",
              "Threshold": 75,
              "Unit": "PERCENT",
              "MetricName": "YARNMemoryAvailablePercentage"
            }
          }
        }
      ]
    }
  }
}
```

#### YAML
<a name="aws-resource-emr-instancegroupconfig--examples--Specify_an_Automatic_Scaling_Policy--yaml"></a>

```
MyInstanceGroupConfig:
  Type: 'AWS::EMR::InstanceGroupConfig'
  Properties:
    InstanceCount: 1
    InstanceType: !Ref InstanceType
    InstanceRole: TASK
    Market: ON_DEMAND
    Name: cfnTask
    JobFlowId: !Ref MyCluster
    AutoScalingPolicy:
      Constraints:
        MinCapacity: !Ref MinCapacity
        MaxCapacity: !Ref MaxCapacity
      Rules:
        - Name: Scale-out
          Description: Scale-out policy
          Action:
            SimpleScalingPolicyConfiguration:
              AdjustmentType: CHANGE_IN_CAPACITY
              ScalingAdjustment: 1
              CoolDown: 300
          Trigger:
            CloudWatchAlarmDefinition:
              Dimensions:
                - Key: JobFlowId
                  Value: '${emr.clusterId}'
              EvaluationPeriods: 1
              Namespace: AWS/ElasticMapReduce
              Period: 300
              ComparisonOperator: LESS_THAN
              Statistic: AVERAGE
              Threshold: 15
              Unit: PERCENT
              MetricName: YARNMemoryAvailablePercentage
        - Name: Scale-in
          Description: Scale-in policy
          Action:
            SimpleScalingPolicyConfiguration:
              AdjustmentType: CHANGE_IN_CAPACITY
              ScalingAdjustment: -1
              CoolDown: 300
          Trigger:
            CloudWatchAlarmDefinition:
              Dimensions:
                - Key: JobFlowId
                  Value: '${emr.clusterId}'
              EvaluationPeriods: 1
              Namespace: AWS/ElasticMapReduce
              Period: 300
              ComparisonOperator: GREATER_THAN
              Statistic: AVERAGE
              Threshold: 75
              Unit: PERCENT
              MetricName: YARNMemoryAvailablePercentage
```

# AWS::EMR::InstanceGroupConfig AutoScalingPolicy
<a name="aws-properties-emr-instancegroupconfig-autoscalingpolicy"></a>

`AutoScalingPolicy` defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. For more information, see [Using Automatic Scaling in Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-automatic-scaling.html) in the *Amazon EMR Management Guide*.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-autoscalingpolicy-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-autoscalingpolicy-syntax.json"></a>

```
{
  "[Constraints](#cfn-emr-instancegroupconfig-autoscalingpolicy-constraints)" : ScalingConstraints,
  "[Rules](#cfn-emr-instancegroupconfig-autoscalingpolicy-rules)" : [ ScalingRule, ... ]
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-autoscalingpolicy-syntax.yaml"></a>

```
  [Constraints](#cfn-emr-instancegroupconfig-autoscalingpolicy-constraints): 
    ScalingConstraints
  [Rules](#cfn-emr-instancegroupconfig-autoscalingpolicy-rules): 
    - ScalingRule
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-autoscalingpolicy-properties"></a>

`Constraints`  <a name="cfn-emr-instancegroupconfig-autoscalingpolicy-constraints"></a>
The upper and lower Amazon EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.  
*Required*: Yes  
*Type*: [ScalingConstraints](aws-properties-emr-instancegroupconfig-scalingconstraints.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Rules`  <a name="cfn-emr-instancegroupconfig-autoscalingpolicy-rules"></a>
The scale-in and scale-out rules that comprise the automatic scaling policy.  
*Required*: Yes  
*Type*: Array of [ScalingRule](aws-properties-emr-instancegroupconfig-scalingrule.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig CloudWatchAlarmDefinition
<a name="aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition"></a>

`CloudWatchAlarmDefinition` is a subproperty of the `ScalingTrigger `property, which determines when to trigger an automatic scaling activity. Scaling activity begins when you satisfy the defined alarm conditions.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition-syntax.json"></a>

```
{
  "[ComparisonOperator](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-comparisonoperator)" : String,
  "[Dimensions](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-dimensions)" : [ MetricDimension, ... ],
  "[EvaluationPeriods](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-evaluationperiods)" : Integer,
  "[MetricName](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-metricname)" : String,
  "[Namespace](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-namespace)" : String,
  "[Period](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-period)" : Integer,
  "[Statistic](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-statistic)" : String,
  "[Threshold](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-threshold)" : Number,
  "[Unit](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-unit)" : String
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition-syntax.yaml"></a>

```
  [ComparisonOperator](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-comparisonoperator): String
  [Dimensions](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-dimensions): 
    - MetricDimension
  [EvaluationPeriods](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-evaluationperiods): Integer
  [MetricName](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-metricname): String
  [Namespace](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-namespace): String
  [Period](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-period): Integer
  [Statistic](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-statistic): String
  [Threshold](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-threshold): Number
  [Unit](#cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-unit): String
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition-properties"></a>

`ComparisonOperator`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-comparisonoperator"></a>
Determines how the metric specified by `MetricName` is compared to the value specified by `Threshold`.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `GREATER_THAN_OR_EQUAL | GREATER_THAN | LESS_THAN | LESS_THAN_OR_EQUAL`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Dimensions`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-dimensions"></a>
A CloudWatch metric dimension.  
*Required*: No  
*Type*: Array of [MetricDimension](aws-properties-emr-instancegroupconfig-metricdimension.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`EvaluationPeriods`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-evaluationperiods"></a>
The number of periods, in five-minute increments, during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is `1`.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MetricName`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-metricname"></a>
The name of the CloudWatch metric that is watched to determine an alarm condition.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Namespace`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-namespace"></a>
The namespace for the CloudWatch metric. The default is `AWS/ElasticMapReduce`.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Period`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-period"></a>
The period, in seconds, over which the statistic is applied. CloudWatch metrics for Amazon EMR are emitted every five minutes (300 seconds), so if you specify a CloudWatch metric, specify `300`.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Statistic`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-statistic"></a>
The statistic to apply to the metric associated with the alarm. The default is `AVERAGE`.  
*Required*: No  
*Type*: String  
*Allowed values*: `SAMPLE_COUNT | AVERAGE | SUM | MINIMUM | MAXIMUM`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Threshold`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-threshold"></a>
The value against which the specified statistic is compared.  
*Required*: Yes  
*Type*: Number  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Unit`  <a name="cfn-emr-instancegroupconfig-cloudwatchalarmdefinition-unit"></a>
The unit of measure associated with the CloudWatch metric being watched. The value specified for `Unit` must correspond to the units specified in the CloudWatch metric.  
*Required*: No  
*Type*: String  
*Allowed values*: `NONE | SECONDS | MICRO_SECONDS | MILLI_SECONDS | BYTES | KILO_BYTES | MEGA_BYTES | GIGA_BYTES | TERA_BYTES | BITS | KILO_BITS | MEGA_BITS | GIGA_BITS | TERA_BITS | PERCENT | COUNT | BYTES_PER_SECOND | KILO_BYTES_PER_SECOND | MEGA_BYTES_PER_SECOND | GIGA_BYTES_PER_SECOND | TERA_BYTES_PER_SECOND | BITS_PER_SECOND | KILO_BITS_PER_SECOND | MEGA_BITS_PER_SECOND | GIGA_BITS_PER_SECOND | TERA_BITS_PER_SECOND | COUNT_PER_SECOND`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig Configuration
<a name="aws-properties-emr-instancegroupconfig-configuration"></a>

`Configurations` is a property of the `AWS::EMR::Cluster` resource that specifies the configuration of applications on an Amazon EMR cluster.

Configurations are optional. You can use them to have EMR customize applications and software bundled with Amazon EMR when a cluster is created. A configuration consists of a classification, properties, and optional nested configurations. A classification refers to an application-specific configuration file. Properties are the settings you want to change in that file. For more information, see [Configuring Applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).

**Note**  
Applies only to Amazon EMR releases 4.0 and later.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-configuration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-configuration-syntax.json"></a>

```
{
  "[Classification](#cfn-emr-instancegroupconfig-configuration-classification)" : String,
  "[ConfigurationProperties](#cfn-emr-instancegroupconfig-configuration-configurationproperties)" : {Key: Value, ...},
  "[Configurations](#cfn-emr-instancegroupconfig-configuration-configurations)" : [ Configuration, ... ]
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-configuration-syntax.yaml"></a>

```
  [Classification](#cfn-emr-instancegroupconfig-configuration-classification): String
  [ConfigurationProperties](#cfn-emr-instancegroupconfig-configuration-configurationproperties): 
    Key: Value
  [Configurations](#cfn-emr-instancegroupconfig-configuration-configurations): 
    - Configuration
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-configuration-properties"></a>

`Classification`  <a name="cfn-emr-instancegroupconfig-configuration-classification"></a>
The classification within a configuration.  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ConfigurationProperties`  <a name="cfn-emr-instancegroupconfig-configuration-configurationproperties"></a>
Within a configuration classification, a set of properties that represent the settings that you want to change in the configuration file. Duplicates not allowed.  
*Required*: No  
*Type*: Object of String  
*Pattern*: `[a-zA-Z0-9]+`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Configurations`  <a name="cfn-emr-instancegroupconfig-configuration-configurations"></a>
A list of additional configurations to apply within a configuration object.  
*Required*: No  
*Type*: Array of [Configuration](#aws-properties-emr-instancegroupconfig-configuration)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::EMR::InstanceGroupConfig EbsBlockDeviceConfig
<a name="aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig"></a>

Configuration of requested EBS block device associated with the instance group with count of volumes that are associated to every instance.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig-syntax.json"></a>

```
{
  "[VolumeSpecification](#cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumespecification)" : VolumeSpecification,
  "[VolumesPerInstance](#cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumesperinstance)" : Integer
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig-syntax.yaml"></a>

```
  [VolumeSpecification](#cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumespecification): 
    VolumeSpecification
  [VolumesPerInstance](#cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumesperinstance): Integer
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig-properties"></a>

`VolumeSpecification`  <a name="cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumespecification"></a>
EBS volume specifications such as volume type, IOPS, size (GiB) and throughput (MiB/s) that are requested for the EBS volume attached to an Amazon EC2 instance in the cluster.  
*Required*: Yes  
*Type*: [VolumeSpecification](aws-properties-emr-instancegroupconfig-volumespecification.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`VolumesPerInstance`  <a name="cfn-emr-instancegroupconfig-ebsblockdeviceconfig-volumesperinstance"></a>
Number of EBS volumes with a specific volume configuration that are associated with every instance in the instance group  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::EMR::InstanceGroupConfig EbsConfiguration
<a name="aws-properties-emr-instancegroupconfig-ebsconfiguration"></a>

The Amazon EBS configuration of a cluster instance.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-ebsconfiguration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-ebsconfiguration-syntax.json"></a>

```
{
  "[EbsBlockDeviceConfigs](#cfn-emr-instancegroupconfig-ebsconfiguration-ebsblockdeviceconfigs)" : [ EbsBlockDeviceConfig, ... ],
  "[EbsOptimized](#cfn-emr-instancegroupconfig-ebsconfiguration-ebsoptimized)" : Boolean
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-ebsconfiguration-syntax.yaml"></a>

```
  [EbsBlockDeviceConfigs](#cfn-emr-instancegroupconfig-ebsconfiguration-ebsblockdeviceconfigs): 
    - EbsBlockDeviceConfig
  [EbsOptimized](#cfn-emr-instancegroupconfig-ebsconfiguration-ebsoptimized): Boolean
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-ebsconfiguration-properties"></a>

`EbsBlockDeviceConfigs`  <a name="cfn-emr-instancegroupconfig-ebsconfiguration-ebsblockdeviceconfigs"></a>
An array of Amazon EBS volume specifications attached to a cluster instance.  
*Required*: No  
*Type*: Array of [EbsBlockDeviceConfig](aws-properties-emr-instancegroupconfig-ebsblockdeviceconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`EbsOptimized`  <a name="cfn-emr-instancegroupconfig-ebsconfiguration-ebsoptimized"></a>
Indicates whether an Amazon EBS volume is EBS-optimized. The default is false. You should explicitly set this value to true to enable the Amazon EBS-optimized setting for an EC2 instance.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::EMR::InstanceGroupConfig MetricDimension
<a name="aws-properties-emr-instancegroupconfig-metricdimension"></a>

`MetricDimension` is a subproperty of the `CloudWatchAlarmDefinition` property type. `MetricDimension` specifies a CloudWatch dimension, which is specified with a `Key``Value` pair. The key is known as a `Name` in CloudWatch. By default, Amazon EMR uses one dimension whose `Key` is `JobFlowID` and `Value` is a variable representing the cluster ID, which is `${emr.clusterId}`. This enables the automatic scaling rule for EMR to bootstrap when the cluster ID becomes available during cluster creation.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-metricdimension-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-metricdimension-syntax.json"></a>

```
{
  "[Key](#cfn-emr-instancegroupconfig-metricdimension-key)" : String,
  "[Value](#cfn-emr-instancegroupconfig-metricdimension-value)" : String
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-metricdimension-syntax.yaml"></a>

```
  [Key](#cfn-emr-instancegroupconfig-metricdimension-key): String
  [Value](#cfn-emr-instancegroupconfig-metricdimension-value): String
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-metricdimension-properties"></a>

`Key`  <a name="cfn-emr-instancegroupconfig-metricdimension-key"></a>
The dimension name.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-emr-instancegroupconfig-metricdimension-value"></a>
The dimension value.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig ScalingAction
<a name="aws-properties-emr-instancegroupconfig-scalingaction"></a>

`ScalingAction` is a subproperty of the `ScalingRule` property type. `ScalingAction` determines the type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-scalingaction-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-scalingaction-syntax.json"></a>

```
{
  "[Market](#cfn-emr-instancegroupconfig-scalingaction-market)" : String,
  "[SimpleScalingPolicyConfiguration](#cfn-emr-instancegroupconfig-scalingaction-simplescalingpolicyconfiguration)" : SimpleScalingPolicyConfiguration
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-scalingaction-syntax.yaml"></a>

```
  [Market](#cfn-emr-instancegroupconfig-scalingaction-market): String
  [SimpleScalingPolicyConfiguration](#cfn-emr-instancegroupconfig-scalingaction-simplescalingpolicyconfiguration): 
    SimpleScalingPolicyConfiguration
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-scalingaction-properties"></a>

`Market`  <a name="cfn-emr-instancegroupconfig-scalingaction-market"></a>
Not available for instance groups. Instance groups use the market type specified for the group.  
*Required*: No  
*Type*: String  
*Allowed values*: `ON_DEMAND | SPOT`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SimpleScalingPolicyConfiguration`  <a name="cfn-emr-instancegroupconfig-scalingaction-simplescalingpolicyconfiguration"></a>
The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.  
*Required*: Yes  
*Type*: [SimpleScalingPolicyConfiguration](aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig ScalingConstraints
<a name="aws-properties-emr-instancegroupconfig-scalingconstraints"></a>

`ScalingConstraints` is a subproperty of the `AutoScalingPolicy` property type. `ScalingConstraints` defines the upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activities triggered by automatic scaling rules will not cause an instance group to grow above or shrink below these limits.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-scalingconstraints-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-scalingconstraints-syntax.json"></a>

```
{
  "[MaxCapacity](#cfn-emr-instancegroupconfig-scalingconstraints-maxcapacity)" : Integer,
  "[MinCapacity](#cfn-emr-instancegroupconfig-scalingconstraints-mincapacity)" : Integer
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-scalingconstraints-syntax.yaml"></a>

```
  [MaxCapacity](#cfn-emr-instancegroupconfig-scalingconstraints-maxcapacity): Integer
  [MinCapacity](#cfn-emr-instancegroupconfig-scalingconstraints-mincapacity): Integer
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-scalingconstraints-properties"></a>

`MaxCapacity`  <a name="cfn-emr-instancegroupconfig-scalingconstraints-maxcapacity"></a>
The upper boundary of Amazon EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MinCapacity`  <a name="cfn-emr-instancegroupconfig-scalingconstraints-mincapacity"></a>
The lower boundary of Amazon EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig ScalingRule
<a name="aws-properties-emr-instancegroupconfig-scalingrule"></a>

`ScalingRule` is a subproperty of the `AutoScalingPolicy` property type. `ScalingRule` defines the scale-in or scale-out rules for scaling activity, including the CloudWatch metric alarm that triggers activity, how EC2 instances are added or removed, and the periodicity of adjustments. The automatic scaling policy for an instance group can comprise one or more automatic scaling rules.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-scalingrule-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-scalingrule-syntax.json"></a>

```
{
  "[Action](#cfn-emr-instancegroupconfig-scalingrule-action)" : ScalingAction,
  "[Description](#cfn-emr-instancegroupconfig-scalingrule-description)" : String,
  "[Name](#cfn-emr-instancegroupconfig-scalingrule-name)" : String,
  "[Trigger](#cfn-emr-instancegroupconfig-scalingrule-trigger)" : ScalingTrigger
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-scalingrule-syntax.yaml"></a>

```
  [Action](#cfn-emr-instancegroupconfig-scalingrule-action): 
    ScalingAction
  [Description](#cfn-emr-instancegroupconfig-scalingrule-description): String
  [Name](#cfn-emr-instancegroupconfig-scalingrule-name): String
  [Trigger](#cfn-emr-instancegroupconfig-scalingrule-trigger): 
    ScalingTrigger
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-scalingrule-properties"></a>

`Action`  <a name="cfn-emr-instancegroupconfig-scalingrule-action"></a>
The conditions that trigger an automatic scaling activity.  
*Required*: Yes  
*Type*: [ScalingAction](aws-properties-emr-instancegroupconfig-scalingaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-emr-instancegroupconfig-scalingrule-description"></a>
A friendly, more verbose description of the automatic scaling rule.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Name`  <a name="cfn-emr-instancegroupconfig-scalingrule-name"></a>
The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Trigger`  <a name="cfn-emr-instancegroupconfig-scalingrule-trigger"></a>
The CloudWatch alarm definition that determines when automatic scaling activity is triggered.  
*Required*: Yes  
*Type*: [ScalingTrigger](aws-properties-emr-instancegroupconfig-scalingtrigger.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig ScalingTrigger
<a name="aws-properties-emr-instancegroupconfig-scalingtrigger"></a>

`ScalingTrigger` is a subproperty of the `ScalingRule` property type. `ScalingTrigger` determines the conditions that trigger an automatic scaling activity.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-scalingtrigger-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-scalingtrigger-syntax.json"></a>

```
{
  "[CloudWatchAlarmDefinition](#cfn-emr-instancegroupconfig-scalingtrigger-cloudwatchalarmdefinition)" : CloudWatchAlarmDefinition
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-scalingtrigger-syntax.yaml"></a>

```
  [CloudWatchAlarmDefinition](#cfn-emr-instancegroupconfig-scalingtrigger-cloudwatchalarmdefinition): 
    CloudWatchAlarmDefinition
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-scalingtrigger-properties"></a>

`CloudWatchAlarmDefinition`  <a name="cfn-emr-instancegroupconfig-scalingtrigger-cloudwatchalarmdefinition"></a>
The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins.  
*Required*: Yes  
*Type*: [CloudWatchAlarmDefinition](aws-properties-emr-instancegroupconfig-cloudwatchalarmdefinition.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig SimpleScalingPolicyConfiguration
<a name="aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration"></a>

`SimpleScalingPolicyConfiguration` is a subproperty of the `ScalingAction` property type. `SimpleScalingPolicyConfiguration` determines how an automatic scaling action adds or removes instances, the cooldown period, and the number of EC2 instances that are added each time the CloudWatch metric alarm condition is satisfied.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration-syntax.json"></a>

```
{
  "[AdjustmentType](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-adjustmenttype)" : String,
  "[CoolDown](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-cooldown)" : Integer,
  "[ScalingAdjustment](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-scalingadjustment)" : Integer
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration-syntax.yaml"></a>

```
  [AdjustmentType](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-adjustmenttype): String
  [CoolDown](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-cooldown): Integer
  [ScalingAdjustment](#cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-scalingadjustment): Integer
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-simplescalingpolicyconfiguration-properties"></a>

`AdjustmentType`  <a name="cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-adjustmenttype"></a>
The way in which Amazon EC2 instances are added (if `ScalingAdjustment` is a positive number) or terminated (if `ScalingAdjustment` is a negative number) each time the scaling activity is triggered. `CHANGE_IN_CAPACITY` is the default. `CHANGE_IN_CAPACITY` indicates that the Amazon EC2 instance count increments or decrements by `ScalingAdjustment`, which should be expressed as an integer. `PERCENT_CHANGE_IN_CAPACITY` indicates the instance count increments or decrements by the percentage specified by `ScalingAdjustment`, which should be expressed as an integer. For example, 20 indicates an increase in 20% increments of cluster capacity. `EXACT_CAPACITY` indicates the scaling activity results in an instance group with the number of Amazon EC2 instances specified by `ScalingAdjustment`, which should be expressed as a positive integer.  
*Required*: No  
*Type*: String  
*Allowed values*: `CHANGE_IN_CAPACITY | PERCENT_CHANGE_IN_CAPACITY | EXACT_CAPACITY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CoolDown`  <a name="cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-cooldown"></a>
The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ScalingAdjustment`  <a name="cfn-emr-instancegroupconfig-simplescalingpolicyconfiguration-scalingadjustment"></a>
The amount by which to scale in or scale out, based on the specified `AdjustmentType`. A positive value adds to the instance group's Amazon EC2 instance count while a negative number removes instances. If `AdjustmentType` is set to `EXACT_CAPACITY`, the number should only be a positive integer. If `AdjustmentType` is set to `PERCENT_CHANGE_IN_CAPACITY`, the value should express the percentage as an integer. For example, -20 indicates a decrease in 20% increments of cluster capacity.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::EMR::InstanceGroupConfig VolumeSpecification
<a name="aws-properties-emr-instancegroupconfig-volumespecification"></a>

`VolumeSpecification` is a subproperty of the `EbsBlockDeviceConfig` property type. `VolumeSecification` determines the volume type, IOPS, and size (GiB) for EBS volumes attached to EC2 instances.

## Syntax
<a name="aws-properties-emr-instancegroupconfig-volumespecification-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-emr-instancegroupconfig-volumespecification-syntax.json"></a>

```
{
  "[Iops](#cfn-emr-instancegroupconfig-volumespecification-iops)" : Integer,
  "[SizeInGB](#cfn-emr-instancegroupconfig-volumespecification-sizeingb)" : Integer,
  "[Throughput](#cfn-emr-instancegroupconfig-volumespecification-throughput)" : Integer,
  "[VolumeType](#cfn-emr-instancegroupconfig-volumespecification-volumetype)" : String
}
```

### YAML
<a name="aws-properties-emr-instancegroupconfig-volumespecification-syntax.yaml"></a>

```
  [Iops](#cfn-emr-instancegroupconfig-volumespecification-iops): Integer
  [SizeInGB](#cfn-emr-instancegroupconfig-volumespecification-sizeingb): Integer
  [Throughput](#cfn-emr-instancegroupconfig-volumespecification-throughput): Integer
  [VolumeType](#cfn-emr-instancegroupconfig-volumespecification-volumetype): String
```

## Properties
<a name="aws-properties-emr-instancegroupconfig-volumespecification-properties"></a>

`Iops`  <a name="cfn-emr-instancegroupconfig-volumespecification-iops"></a>
The number of I/O operations per second (IOPS) that the volume supports.  
*Required*: No  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SizeInGB`  <a name="cfn-emr-instancegroupconfig-volumespecification-sizeingb"></a>
The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Throughput`  <a name="cfn-emr-instancegroupconfig-volumespecification-throughput"></a>
The throughput, in mebibyte per second (MiB/s). This optional parameter can be a number from 125 - 1000 and is valid only for gp3 volumes.  
*Required*: No  
*Type*: Integer  
*Minimum*: `0`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`VolumeType`  <a name="cfn-emr-instancegroupconfig-volumespecification-volumetype"></a>
The volume type. Volume types supported are gp3, gp2, io1, st1, sc1, and standard.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)