1. Packages
  2. AWS
  3. API Docs
  4. emr
  5. Cluster
AWS v6.55.0 published on Monday, Oct 7, 2024 by Pulumi

aws.emr.Cluster

Explore with Pulumi AI

aws logo
AWS v6.55.0 published on Monday, Oct 7, 2024 by Pulumi

    Provides an Elastic MapReduce Cluster, a web service that makes it easy to process large amounts of data efficiently. See Amazon Elastic MapReduce Documentation for more information.

    To configure Instance Groups for task nodes, see the aws.emr.InstanceGroup resource.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const cluster = new aws.emr.Cluster("cluster", {
        name: "emr-test-arn",
        releaseLabel: "emr-4.6.0",
        applications: ["Spark"],
        additionalInfo: `{
      "instanceAwsClientConfiguration": {
        "proxyPort": 8099,
        "proxyHost": "myproxy.example.com"
      }
    }
    `,
        terminationProtection: false,
        keepJobFlowAliveWhenNoSteps: true,
        ec2Attributes: {
            subnetId: main.id,
            emrManagedMasterSecurityGroup: sg.id,
            emrManagedSlaveSecurityGroup: sg.id,
            instanceProfile: emrProfile.arn,
        },
        masterInstanceGroup: {
            instanceType: "m4.large",
        },
        coreInstanceGroup: {
            instanceType: "c4.large",
            instanceCount: 1,
            ebsConfigs: [{
                size: 40,
                type: "gp2",
                volumesPerInstance: 1,
            }],
            bidPrice: "0.30",
            autoscalingPolicy: `{
    "Constraints": {
      "MinCapacity": 1,
      "MaxCapacity": 2
    },
    "Rules": [
      {
        "Name": "ScaleOutMemoryPercentage",
        "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15",
        "Action": {
          "SimpleScalingPolicyConfiguration": {
            "AdjustmentType": "CHANGE_IN_CAPACITY",
            "ScalingAdjustment": 1,
            "CoolDown": 300
          }
        },
        "Trigger": {
          "CloudWatchAlarmDefinition": {
            "ComparisonOperator": "LESS_THAN",
            "EvaluationPeriods": 1,
            "MetricName": "YARNMemoryAvailablePercentage",
            "Namespace": "AWS/ElasticMapReduce",
            "Period": 300,
            "Statistic": "AVERAGE",
            "Threshold": 15.0,
            "Unit": "PERCENT"
          }
        }
      }
    ]
    }
    `,
        },
        ebsRootVolumeSize: 100,
        tags: {
            role: "rolename",
            env: "env",
        },
        bootstrapActions: [{
            path: "s3://elasticmapreduce/bootstrap-actions/run-if",
            name: "runif",
            args: [
                "instance.isMaster=true",
                "echo running on master node",
            ],
        }],
        configurationsJson: `  [
        {
          "Classification": "hadoop-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        },
        {
          "Classification": "spark-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        }
      ]
    `,
        serviceRole: iamEmrServiceRole.arn,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster",
        name="emr-test-arn",
        release_label="emr-4.6.0",
        applications=["Spark"],
        additional_info="""{
      "instanceAwsClientConfiguration": {
        "proxyPort": 8099,
        "proxyHost": "myproxy.example.com"
      }
    }
    """,
        termination_protection=False,
        keep_job_flow_alive_when_no_steps=True,
        ec2_attributes={
            "subnet_id": main["id"],
            "emr_managed_master_security_group": sg["id"],
            "emr_managed_slave_security_group": sg["id"],
            "instance_profile": emr_profile["arn"],
        },
        master_instance_group={
            "instance_type": "m4.large",
        },
        core_instance_group={
            "instance_type": "c4.large",
            "instance_count": 1,
            "ebs_configs": [{
                "size": 40,
                "type": "gp2",
                "volumes_per_instance": 1,
            }],
            "bid_price": "0.30",
            "autoscaling_policy": """{
    "Constraints": {
      "MinCapacity": 1,
      "MaxCapacity": 2
    },
    "Rules": [
      {
        "Name": "ScaleOutMemoryPercentage",
        "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15",
        "Action": {
          "SimpleScalingPolicyConfiguration": {
            "AdjustmentType": "CHANGE_IN_CAPACITY",
            "ScalingAdjustment": 1,
            "CoolDown": 300
          }
        },
        "Trigger": {
          "CloudWatchAlarmDefinition": {
            "ComparisonOperator": "LESS_THAN",
            "EvaluationPeriods": 1,
            "MetricName": "YARNMemoryAvailablePercentage",
            "Namespace": "AWS/ElasticMapReduce",
            "Period": 300,
            "Statistic": "AVERAGE",
            "Threshold": 15.0,
            "Unit": "PERCENT"
          }
        }
      }
    ]
    }
    """,
        },
        ebs_root_volume_size=100,
        tags={
            "role": "rolename",
            "env": "env",
        },
        bootstrap_actions=[{
            "path": "s3://elasticmapreduce/bootstrap-actions/run-if",
            "name": "runif",
            "args": [
                "instance.isMaster=true",
                "echo running on master node",
            ],
        }],
        configurations_json="""  [
        {
          "Classification": "hadoop-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        },
        {
          "Classification": "spark-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        }
      ]
    """,
        service_role=iam_emr_service_role["arn"])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			Name:         pulumi.String("emr-test-arn"),
    			ReleaseLabel: pulumi.String("emr-4.6.0"),
    			Applications: pulumi.StringArray{
    				pulumi.String("Spark"),
    			},
    			AdditionalInfo: pulumi.String(`{
      "instanceAwsClientConfiguration": {
        "proxyPort": 8099,
        "proxyHost": "myproxy.example.com"
      }
    }
    `),
    			TerminationProtection:       pulumi.Bool(false),
    			KeepJobFlowAliveWhenNoSteps: pulumi.Bool(true),
    			Ec2Attributes: &emr.ClusterEc2AttributesArgs{
    				SubnetId:                      pulumi.Any(main.Id),
    				EmrManagedMasterSecurityGroup: pulumi.Any(sg.Id),
    				EmrManagedSlaveSecurityGroup:  pulumi.Any(sg.Id),
    				InstanceProfile:               pulumi.Any(emrProfile.Arn),
    			},
    			MasterInstanceGroup: &emr.ClusterMasterInstanceGroupArgs{
    				InstanceType: pulumi.String("m4.large"),
    			},
    			CoreInstanceGroup: &emr.ClusterCoreInstanceGroupArgs{
    				InstanceType:  pulumi.String("c4.large"),
    				InstanceCount: pulumi.Int(1),
    				EbsConfigs: emr.ClusterCoreInstanceGroupEbsConfigArray{
    					&emr.ClusterCoreInstanceGroupEbsConfigArgs{
    						Size:               pulumi.Int(40),
    						Type:               pulumi.String("gp2"),
    						VolumesPerInstance: pulumi.Int(1),
    					},
    				},
    				BidPrice: pulumi.String("0.30"),
    				AutoscalingPolicy: pulumi.String(`{
    "Constraints": {
      "MinCapacity": 1,
      "MaxCapacity": 2
    },
    "Rules": [
      {
        "Name": "ScaleOutMemoryPercentage",
        "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15",
        "Action": {
          "SimpleScalingPolicyConfiguration": {
            "AdjustmentType": "CHANGE_IN_CAPACITY",
            "ScalingAdjustment": 1,
            "CoolDown": 300
          }
        },
        "Trigger": {
          "CloudWatchAlarmDefinition": {
            "ComparisonOperator": "LESS_THAN",
            "EvaluationPeriods": 1,
            "MetricName": "YARNMemoryAvailablePercentage",
            "Namespace": "AWS/ElasticMapReduce",
            "Period": 300,
            "Statistic": "AVERAGE",
            "Threshold": 15.0,
            "Unit": "PERCENT"
          }
        }
      }
    ]
    }
    `),
    			},
    			EbsRootVolumeSize: pulumi.Int(100),
    			Tags: pulumi.StringMap{
    				"role": pulumi.String("rolename"),
    				"env":  pulumi.String("env"),
    			},
    			BootstrapActions: emr.ClusterBootstrapActionArray{
    				&emr.ClusterBootstrapActionArgs{
    					Path: pulumi.String("s3://elasticmapreduce/bootstrap-actions/run-if"),
    					Name: pulumi.String("runif"),
    					Args: pulumi.StringArray{
    						pulumi.String("instance.isMaster=true"),
    						pulumi.String("echo running on master node"),
    					},
    				},
    			},
    			ConfigurationsJson: pulumi.String(`  [
        {
          "Classification": "hadoop-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        },
        {
          "Classification": "spark-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        }
      ]
    `),
    			ServiceRole: pulumi.Any(iamEmrServiceRole.Arn),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            Name = "emr-test-arn",
            ReleaseLabel = "emr-4.6.0",
            Applications = new[]
            {
                "Spark",
            },
            AdditionalInfo = @"{
      ""instanceAwsClientConfiguration"": {
        ""proxyPort"": 8099,
        ""proxyHost"": ""myproxy.example.com""
      }
    }
    ",
            TerminationProtection = false,
            KeepJobFlowAliveWhenNoSteps = true,
            Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs
            {
                SubnetId = main.Id,
                EmrManagedMasterSecurityGroup = sg.Id,
                EmrManagedSlaveSecurityGroup = sg.Id,
                InstanceProfile = emrProfile.Arn,
            },
            MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs
            {
                InstanceType = "m4.large",
            },
            CoreInstanceGroup = new Aws.Emr.Inputs.ClusterCoreInstanceGroupArgs
            {
                InstanceType = "c4.large",
                InstanceCount = 1,
                EbsConfigs = new[]
                {
                    new Aws.Emr.Inputs.ClusterCoreInstanceGroupEbsConfigArgs
                    {
                        Size = 40,
                        Type = "gp2",
                        VolumesPerInstance = 1,
                    },
                },
                BidPrice = "0.30",
                AutoscalingPolicy = @"{
    ""Constraints"": {
      ""MinCapacity"": 1,
      ""MaxCapacity"": 2
    },
    ""Rules"": [
      {
        ""Name"": ""ScaleOutMemoryPercentage"",
        ""Description"": ""Scale out if YARNMemoryAvailablePercentage is less than 15"",
        ""Action"": {
          ""SimpleScalingPolicyConfiguration"": {
            ""AdjustmentType"": ""CHANGE_IN_CAPACITY"",
            ""ScalingAdjustment"": 1,
            ""CoolDown"": 300
          }
        },
        ""Trigger"": {
          ""CloudWatchAlarmDefinition"": {
            ""ComparisonOperator"": ""LESS_THAN"",
            ""EvaluationPeriods"": 1,
            ""MetricName"": ""YARNMemoryAvailablePercentage"",
            ""Namespace"": ""AWS/ElasticMapReduce"",
            ""Period"": 300,
            ""Statistic"": ""AVERAGE"",
            ""Threshold"": 15.0,
            ""Unit"": ""PERCENT""
          }
        }
      }
    ]
    }
    ",
            },
            EbsRootVolumeSize = 100,
            Tags = 
            {
                { "role", "rolename" },
                { "env", "env" },
            },
            BootstrapActions = new[]
            {
                new Aws.Emr.Inputs.ClusterBootstrapActionArgs
                {
                    Path = "s3://elasticmapreduce/bootstrap-actions/run-if",
                    Name = "runif",
                    Args = new[]
                    {
                        "instance.isMaster=true",
                        "echo running on master node",
                    },
                },
            },
            ConfigurationsJson = @"  [
        {
          ""Classification"": ""hadoop-env"",
          ""Configurations"": [
            {
              ""Classification"": ""export"",
              ""Properties"": {
                ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
              }
            }
          ],
          ""Properties"": {}
        },
        {
          ""Classification"": ""spark-env"",
          ""Configurations"": [
            {
              ""Classification"": ""export"",
              ""Properties"": {
                ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
              }
            }
          ],
          ""Properties"": {}
        }
      ]
    ",
            ServiceRole = iamEmrServiceRole.Arn,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;
    import com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;
    import com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;
    import com.pulumi.aws.emr.inputs.ClusterBootstrapActionArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .name("emr-test-arn")
                .releaseLabel("emr-4.6.0")
                .applications("Spark")
                .additionalInfo("""
    {
      "instanceAwsClientConfiguration": {
        "proxyPort": 8099,
        "proxyHost": "myproxy.example.com"
      }
    }
                """)
                .terminationProtection(false)
                .keepJobFlowAliveWhenNoSteps(true)
                .ec2Attributes(ClusterEc2AttributesArgs.builder()
                    .subnetId(main.id())
                    .emrManagedMasterSecurityGroup(sg.id())
                    .emrManagedSlaveSecurityGroup(sg.id())
                    .instanceProfile(emrProfile.arn())
                    .build())
                .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()
                    .instanceType("m4.large")
                    .build())
                .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()
                    .instanceType("c4.large")
                    .instanceCount(1)
                    .ebsConfigs(ClusterCoreInstanceGroupEbsConfigArgs.builder()
                        .size("40")
                        .type("gp2")
                        .volumesPerInstance(1)
                        .build())
                    .bidPrice("0.30")
                    .autoscalingPolicy("""
    {
    "Constraints": {
      "MinCapacity": 1,
      "MaxCapacity": 2
    },
    "Rules": [
      {
        "Name": "ScaleOutMemoryPercentage",
        "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15",
        "Action": {
          "SimpleScalingPolicyConfiguration": {
            "AdjustmentType": "CHANGE_IN_CAPACITY",
            "ScalingAdjustment": 1,
            "CoolDown": 300
          }
        },
        "Trigger": {
          "CloudWatchAlarmDefinition": {
            "ComparisonOperator": "LESS_THAN",
            "EvaluationPeriods": 1,
            "MetricName": "YARNMemoryAvailablePercentage",
            "Namespace": "AWS/ElasticMapReduce",
            "Period": 300,
            "Statistic": "AVERAGE",
            "Threshold": 15.0,
            "Unit": "PERCENT"
          }
        }
      }
    ]
    }
                    """)
                    .build())
                .ebsRootVolumeSize(100)
                .tags(Map.ofEntries(
                    Map.entry("role", "rolename"),
                    Map.entry("env", "env")
                ))
                .bootstrapActions(ClusterBootstrapActionArgs.builder()
                    .path("s3://elasticmapreduce/bootstrap-actions/run-if")
                    .name("runif")
                    .args(                
                        "instance.isMaster=true",
                        "echo running on master node")
                    .build())
                .configurationsJson("""
      [
        {
          "Classification": "hadoop-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        },
        {
          "Classification": "spark-env",
          "Configurations": [
            {
              "Classification": "export",
              "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
              }
            }
          ],
          "Properties": {}
        }
      ]
                """)
                .serviceRole(iamEmrServiceRole.arn())
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          name: emr-test-arn
          releaseLabel: emr-4.6.0
          applications:
            - Spark
          additionalInfo: |
            {
              "instanceAwsClientConfiguration": {
                "proxyPort": 8099,
                "proxyHost": "myproxy.example.com"
              }
            }        
          terminationProtection: false
          keepJobFlowAliveWhenNoSteps: true
          ec2Attributes:
            subnetId: ${main.id}
            emrManagedMasterSecurityGroup: ${sg.id}
            emrManagedSlaveSecurityGroup: ${sg.id}
            instanceProfile: ${emrProfile.arn}
          masterInstanceGroup:
            instanceType: m4.large
          coreInstanceGroup:
            instanceType: c4.large
            instanceCount: 1
            ebsConfigs:
              - size: '40'
                type: gp2
                volumesPerInstance: 1
            bidPrice: '0.30'
            autoscalingPolicy: |
              {
              "Constraints": {
                "MinCapacity": 1,
                "MaxCapacity": 2
              },
              "Rules": [
                {
                  "Name": "ScaleOutMemoryPercentage",
                  "Description": "Scale out if YARNMemoryAvailablePercentage is less than 15",
                  "Action": {
                    "SimpleScalingPolicyConfiguration": {
                      "AdjustmentType": "CHANGE_IN_CAPACITY",
                      "ScalingAdjustment": 1,
                      "CoolDown": 300
                    }
                  },
                  "Trigger": {
                    "CloudWatchAlarmDefinition": {
                      "ComparisonOperator": "LESS_THAN",
                      "EvaluationPeriods": 1,
                      "MetricName": "YARNMemoryAvailablePercentage",
                      "Namespace": "AWS/ElasticMapReduce",
                      "Period": 300,
                      "Statistic": "AVERAGE",
                      "Threshold": 15.0,
                      "Unit": "PERCENT"
                    }
                  }
                }
              ]
              }          
          ebsRootVolumeSize: 100
          tags:
            role: rolename
            env: env
          bootstrapActions:
            - path: s3://elasticmapreduce/bootstrap-actions/run-if
              name: runif
              args:
                - instance.isMaster=true
                - echo running on master node
          configurationsJson: |2
              [
                {
                  "Classification": "hadoop-env",
                  "Configurations": [
                    {
                      "Classification": "export",
                      "Properties": {
                        "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
                      }
                    }
                  ],
                  "Properties": {}
                },
                {
                  "Classification": "spark-env",
                  "Configurations": [
                    {
                      "Classification": "export",
                      "Properties": {
                        "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
                      }
                    }
                  ],
                  "Properties": {}
                }
              ]
          serviceRole: ${iamEmrServiceRole.arn}
    

    The aws.emr.Cluster resource typically requires two IAM roles, one for the EMR Cluster to use as a service role, and another is assigned to every EC2 instance in a cluster and each application process that runs on a cluster assumes this role for permissions to interact with other AWS services. An additional role, the Auto Scaling role, is required if your cluster uses automatic scaling in Amazon EMR.

    The default AWS managed EMR service role is called EMR_DefaultRole with Amazon managed policy AmazonEMRServicePolicy_v2 attached. The name of default instance profile role is EMR_EC2_DefaultRole with default managed policy AmazonElasticMapReduceforEC2Role attached, but it is on the path to deprecation and will not be replaced with another default managed policy. You’ll need to create and specify an instance profile to replace the deprecated role and default policy. See the Configure IAM service roles for Amazon EMR guide for more information on these IAM roles. There is also a fully-bootable example Pulumi configuration at the bottom of this page.

    Instance Fleet

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.emr.Cluster("example", {
        masterInstanceFleet: {
            instanceTypeConfigs: [{
                instanceType: "m4.xlarge",
            }],
            targetOnDemandCapacity: 1,
        },
        coreInstanceFleet: {
            instanceTypeConfigs: [
                {
                    bidPriceAsPercentageOfOnDemandPrice: 80,
                    ebsConfigs: [{
                        size: 100,
                        type: "gp2",
                        volumesPerInstance: 1,
                    }],
                    instanceType: "m3.xlarge",
                    weightedCapacity: 1,
                },
                {
                    bidPriceAsPercentageOfOnDemandPrice: 100,
                    ebsConfigs: [{
                        size: 100,
                        type: "gp2",
                        volumesPerInstance: 1,
                    }],
                    instanceType: "m4.xlarge",
                    weightedCapacity: 1,
                },
                {
                    bidPriceAsPercentageOfOnDemandPrice: 100,
                    ebsConfigs: [{
                        size: 100,
                        type: "gp2",
                        volumesPerInstance: 1,
                    }],
                    instanceType: "m4.2xlarge",
                    weightedCapacity: 2,
                },
            ],
            launchSpecifications: {
                spotSpecifications: [{
                    allocationStrategy: "capacity-optimized",
                    blockDurationMinutes: 0,
                    timeoutAction: "SWITCH_TO_ON_DEMAND",
                    timeoutDurationMinutes: 10,
                }],
            },
            name: "core fleet",
            targetOnDemandCapacity: 2,
            targetSpotCapacity: 2,
        },
    });
    const task = new aws.emr.InstanceFleet("task", {
        clusterId: example.id,
        instanceTypeConfigs: [
            {
                bidPriceAsPercentageOfOnDemandPrice: 100,
                ebsConfigs: [{
                    size: 100,
                    type: "gp2",
                    volumesPerInstance: 1,
                }],
                instanceType: "m4.xlarge",
                weightedCapacity: 1,
            },
            {
                bidPriceAsPercentageOfOnDemandPrice: 100,
                ebsConfigs: [{
                    size: 100,
                    type: "gp2",
                    volumesPerInstance: 1,
                }],
                instanceType: "m4.2xlarge",
                weightedCapacity: 2,
            },
        ],
        launchSpecifications: {
            spotSpecifications: [{
                allocationStrategy: "capacity-optimized",
                blockDurationMinutes: 0,
                timeoutAction: "TERMINATE_CLUSTER",
                timeoutDurationMinutes: 10,
            }],
        },
        name: "task fleet",
        targetOnDemandCapacity: 1,
        targetSpotCapacity: 1,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.emr.Cluster("example",
        master_instance_fleet={
            "instance_type_configs": [{
                "instance_type": "m4.xlarge",
            }],
            "target_on_demand_capacity": 1,
        },
        core_instance_fleet={
            "instance_type_configs": [
                {
                    "bid_price_as_percentage_of_on_demand_price": 80,
                    "ebs_configs": [{
                        "size": 100,
                        "type": "gp2",
                        "volumes_per_instance": 1,
                    }],
                    "instance_type": "m3.xlarge",
                    "weighted_capacity": 1,
                },
                {
                    "bid_price_as_percentage_of_on_demand_price": 100,
                    "ebs_configs": [{
                        "size": 100,
                        "type": "gp2",
                        "volumes_per_instance": 1,
                    }],
                    "instance_type": "m4.xlarge",
                    "weighted_capacity": 1,
                },
                {
                    "bid_price_as_percentage_of_on_demand_price": 100,
                    "ebs_configs": [{
                        "size": 100,
                        "type": "gp2",
                        "volumes_per_instance": 1,
                    }],
                    "instance_type": "m4.2xlarge",
                    "weighted_capacity": 2,
                },
            ],
            "launch_specifications": {
                "spot_specifications": [{
                    "allocation_strategy": "capacity-optimized",
                    "block_duration_minutes": 0,
                    "timeout_action": "SWITCH_TO_ON_DEMAND",
                    "timeout_duration_minutes": 10,
                }],
            },
            "name": "core fleet",
            "target_on_demand_capacity": 2,
            "target_spot_capacity": 2,
        })
    task = aws.emr.InstanceFleet("task",
        cluster_id=example.id,
        instance_type_configs=[
            {
                "bid_price_as_percentage_of_on_demand_price": 100,
                "ebs_configs": [{
                    "size": 100,
                    "type": "gp2",
                    "volumes_per_instance": 1,
                }],
                "instance_type": "m4.xlarge",
                "weighted_capacity": 1,
            },
            {
                "bid_price_as_percentage_of_on_demand_price": 100,
                "ebs_configs": [{
                    "size": 100,
                    "type": "gp2",
                    "volumes_per_instance": 1,
                }],
                "instance_type": "m4.2xlarge",
                "weighted_capacity": 2,
            },
        ],
        launch_specifications={
            "spot_specifications": [{
                "allocation_strategy": "capacity-optimized",
                "block_duration_minutes": 0,
                "timeout_action": "TERMINATE_CLUSTER",
                "timeout_duration_minutes": 10,
            }],
        },
        name="task fleet",
        target_on_demand_capacity=1,
        target_spot_capacity=1)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := emr.NewCluster(ctx, "example", &emr.ClusterArgs{
    			MasterInstanceFleet: &emr.ClusterMasterInstanceFleetArgs{
    				InstanceTypeConfigs: emr.ClusterMasterInstanceFleetInstanceTypeConfigArray{
    					&emr.ClusterMasterInstanceFleetInstanceTypeConfigArgs{
    						InstanceType: pulumi.String("m4.xlarge"),
    					},
    				},
    				TargetOnDemandCapacity: pulumi.Int(1),
    			},
    			CoreInstanceFleet: &emr.ClusterCoreInstanceFleetArgs{
    				InstanceTypeConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigArray{
    					&emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{
    						BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(80),
    						EbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{
    							&emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{
    								Size:               pulumi.Int(100),
    								Type:               pulumi.String("gp2"),
    								VolumesPerInstance: pulumi.Int(1),
    							},
    						},
    						InstanceType:     pulumi.String("m3.xlarge"),
    						WeightedCapacity: pulumi.Int(1),
    					},
    					&emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{
    						BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    						EbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{
    							&emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{
    								Size:               pulumi.Int(100),
    								Type:               pulumi.String("gp2"),
    								VolumesPerInstance: pulumi.Int(1),
    							},
    						},
    						InstanceType:     pulumi.String("m4.xlarge"),
    						WeightedCapacity: pulumi.Int(1),
    					},
    					&emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{
    						BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    						EbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{
    							&emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{
    								Size:               pulumi.Int(100),
    								Type:               pulumi.String("gp2"),
    								VolumesPerInstance: pulumi.Int(1),
    							},
    						},
    						InstanceType:     pulumi.String("m4.2xlarge"),
    						WeightedCapacity: pulumi.Int(2),
    					},
    				},
    				LaunchSpecifications: &emr.ClusterCoreInstanceFleetLaunchSpecificationsArgs{
    					SpotSpecifications: emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArray{
    						&emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs{
    							AllocationStrategy:     pulumi.String("capacity-optimized"),
    							BlockDurationMinutes:   pulumi.Int(0),
    							TimeoutAction:          pulumi.String("SWITCH_TO_ON_DEMAND"),
    							TimeoutDurationMinutes: pulumi.Int(10),
    						},
    					},
    				},
    				Name:                   pulumi.String("core fleet"),
    				TargetOnDemandCapacity: pulumi.Int(2),
    				TargetSpotCapacity:     pulumi.Int(2),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = emr.NewInstanceFleet(ctx, "task", &emr.InstanceFleetArgs{
    			ClusterId: example.ID(),
    			InstanceTypeConfigs: emr.InstanceFleetInstanceTypeConfigArray{
    				&emr.InstanceFleetInstanceTypeConfigArgs{
    					BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    					EbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{
    						&emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{
    							Size:               pulumi.Int(100),
    							Type:               pulumi.String("gp2"),
    							VolumesPerInstance: pulumi.Int(1),
    						},
    					},
    					InstanceType:     pulumi.String("m4.xlarge"),
    					WeightedCapacity: pulumi.Int(1),
    				},
    				&emr.InstanceFleetInstanceTypeConfigArgs{
    					BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    					EbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{
    						&emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{
    							Size:               pulumi.Int(100),
    							Type:               pulumi.String("gp2"),
    							VolumesPerInstance: pulumi.Int(1),
    						},
    					},
    					InstanceType:     pulumi.String("m4.2xlarge"),
    					WeightedCapacity: pulumi.Int(2),
    				},
    			},
    			LaunchSpecifications: &emr.InstanceFleetLaunchSpecificationsArgs{
    				SpotSpecifications: emr.InstanceFleetLaunchSpecificationsSpotSpecificationArray{
    					&emr.InstanceFleetLaunchSpecificationsSpotSpecificationArgs{
    						AllocationStrategy:     pulumi.String("capacity-optimized"),
    						BlockDurationMinutes:   pulumi.Int(0),
    						TimeoutAction:          pulumi.String("TERMINATE_CLUSTER"),
    						TimeoutDurationMinutes: pulumi.Int(10),
    					},
    				},
    			},
    			Name:                   pulumi.String("task fleet"),
    			TargetOnDemandCapacity: pulumi.Int(1),
    			TargetSpotCapacity:     pulumi.Int(1),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.Emr.Cluster("example", new()
        {
            MasterInstanceFleet = new Aws.Emr.Inputs.ClusterMasterInstanceFleetArgs
            {
                InstanceTypeConfigs = new[]
                {
                    new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigArgs
                    {
                        InstanceType = "m4.xlarge",
                    },
                },
                TargetOnDemandCapacity = 1,
            },
            CoreInstanceFleet = new Aws.Emr.Inputs.ClusterCoreInstanceFleetArgs
            {
                InstanceTypeConfigs = new[]
                {
                    new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs
                    {
                        BidPriceAsPercentageOfOnDemandPrice = 80,
                        EbsConfigs = new[]
                        {
                            new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs
                            {
                                Size = 100,
                                Type = "gp2",
                                VolumesPerInstance = 1,
                            },
                        },
                        InstanceType = "m3.xlarge",
                        WeightedCapacity = 1,
                    },
                    new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs
                    {
                        BidPriceAsPercentageOfOnDemandPrice = 100,
                        EbsConfigs = new[]
                        {
                            new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs
                            {
                                Size = 100,
                                Type = "gp2",
                                VolumesPerInstance = 1,
                            },
                        },
                        InstanceType = "m4.xlarge",
                        WeightedCapacity = 1,
                    },
                    new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs
                    {
                        BidPriceAsPercentageOfOnDemandPrice = 100,
                        EbsConfigs = new[]
                        {
                            new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs
                            {
                                Size = 100,
                                Type = "gp2",
                                VolumesPerInstance = 1,
                            },
                        },
                        InstanceType = "m4.2xlarge",
                        WeightedCapacity = 2,
                    },
                },
                LaunchSpecifications = new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs
                {
                    SpotSpecifications = new[]
                    {
                        new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs
                        {
                            AllocationStrategy = "capacity-optimized",
                            BlockDurationMinutes = 0,
                            TimeoutAction = "SWITCH_TO_ON_DEMAND",
                            TimeoutDurationMinutes = 10,
                        },
                    },
                },
                Name = "core fleet",
                TargetOnDemandCapacity = 2,
                TargetSpotCapacity = 2,
            },
        });
    
        var task = new Aws.Emr.InstanceFleet("task", new()
        {
            ClusterId = example.Id,
            InstanceTypeConfigs = new[]
            {
                new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs
                {
                    BidPriceAsPercentageOfOnDemandPrice = 100,
                    EbsConfigs = new[]
                    {
                        new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs
                        {
                            Size = 100,
                            Type = "gp2",
                            VolumesPerInstance = 1,
                        },
                    },
                    InstanceType = "m4.xlarge",
                    WeightedCapacity = 1,
                },
                new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigArgs
                {
                    BidPriceAsPercentageOfOnDemandPrice = 100,
                    EbsConfigs = new[]
                    {
                        new Aws.Emr.Inputs.InstanceFleetInstanceTypeConfigEbsConfigArgs
                        {
                            Size = 100,
                            Type = "gp2",
                            VolumesPerInstance = 1,
                        },
                    },
                    InstanceType = "m4.2xlarge",
                    WeightedCapacity = 2,
                },
            },
            LaunchSpecifications = new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsArgs
            {
                SpotSpecifications = new[]
                {
                    new Aws.Emr.Inputs.InstanceFleetLaunchSpecificationsSpotSpecificationArgs
                    {
                        AllocationStrategy = "capacity-optimized",
                        BlockDurationMinutes = 0,
                        TimeoutAction = "TERMINATE_CLUSTER",
                        TimeoutDurationMinutes = 10,
                    },
                },
            },
            Name = "task fleet",
            TargetOnDemandCapacity = 1,
            TargetSpotCapacity = 1,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import com.pulumi.aws.emr.inputs.ClusterMasterInstanceFleetArgs;
    import com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetArgs;
    import com.pulumi.aws.emr.inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs;
    import com.pulumi.aws.emr.InstanceFleet;
    import com.pulumi.aws.emr.InstanceFleetArgs;
    import com.pulumi.aws.emr.inputs.InstanceFleetInstanceTypeConfigArgs;
    import com.pulumi.aws.emr.inputs.InstanceFleetLaunchSpecificationsArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Cluster("example", ClusterArgs.builder()
                .masterInstanceFleet(ClusterMasterInstanceFleetArgs.builder()
                    .instanceTypeConfigs(ClusterMasterInstanceFleetInstanceTypeConfigArgs.builder()
                        .instanceType("m4.xlarge")
                        .build())
                    .targetOnDemandCapacity(1)
                    .build())
                .coreInstanceFleet(ClusterCoreInstanceFleetArgs.builder()
                    .instanceTypeConfigs(                
                        ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()
                            .bidPriceAsPercentageOfOnDemandPrice(80)
                            .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                                .size(100)
                                .type("gp2")
                                .volumesPerInstance(1)
                                .build())
                            .instanceType("m3.xlarge")
                            .weightedCapacity(1)
                            .build(),
                        ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()
                            .bidPriceAsPercentageOfOnDemandPrice(100)
                            .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                                .size(100)
                                .type("gp2")
                                .volumesPerInstance(1)
                                .build())
                            .instanceType("m4.xlarge")
                            .weightedCapacity(1)
                            .build(),
                        ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()
                            .bidPriceAsPercentageOfOnDemandPrice(100)
                            .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                                .size(100)
                                .type("gp2")
                                .volumesPerInstance(1)
                                .build())
                            .instanceType("m4.2xlarge")
                            .weightedCapacity(2)
                            .build())
                    .launchSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsArgs.builder()
                        .spotSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()
                            .allocationStrategy("capacity-optimized")
                            .blockDurationMinutes(0)
                            .timeoutAction("SWITCH_TO_ON_DEMAND")
                            .timeoutDurationMinutes(10)
                            .build())
                        .build())
                    .name("core fleet")
                    .targetOnDemandCapacity(2)
                    .targetSpotCapacity(2)
                    .build())
                .build());
    
            var task = new InstanceFleet("task", InstanceFleetArgs.builder()
                .clusterId(example.id())
                .instanceTypeConfigs(            
                    InstanceFleetInstanceTypeConfigArgs.builder()
                        .bidPriceAsPercentageOfOnDemandPrice(100)
                        .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                            .size(100)
                            .type("gp2")
                            .volumesPerInstance(1)
                            .build())
                        .instanceType("m4.xlarge")
                        .weightedCapacity(1)
                        .build(),
                    InstanceFleetInstanceTypeConfigArgs.builder()
                        .bidPriceAsPercentageOfOnDemandPrice(100)
                        .ebsConfigs(InstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                            .size(100)
                            .type("gp2")
                            .volumesPerInstance(1)
                            .build())
                        .instanceType("m4.2xlarge")
                        .weightedCapacity(2)
                        .build())
                .launchSpecifications(InstanceFleetLaunchSpecificationsArgs.builder()
                    .spotSpecifications(InstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()
                        .allocationStrategy("capacity-optimized")
                        .blockDurationMinutes(0)
                        .timeoutAction("TERMINATE_CLUSTER")
                        .timeoutDurationMinutes(10)
                        .build())
                    .build())
                .name("task fleet")
                .targetOnDemandCapacity(1)
                .targetSpotCapacity(1)
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:emr:Cluster
        properties:
          masterInstanceFleet:
            instanceTypeConfigs:
              - instanceType: m4.xlarge
            targetOnDemandCapacity: 1
          coreInstanceFleet:
            instanceTypeConfigs:
              - bidPriceAsPercentageOfOnDemandPrice: 80
                ebsConfigs:
                  - size: 100
                    type: gp2
                    volumesPerInstance: 1
                instanceType: m3.xlarge
                weightedCapacity: 1
              - bidPriceAsPercentageOfOnDemandPrice: 100
                ebsConfigs:
                  - size: 100
                    type: gp2
                    volumesPerInstance: 1
                instanceType: m4.xlarge
                weightedCapacity: 1
              - bidPriceAsPercentageOfOnDemandPrice: 100
                ebsConfigs:
                  - size: 100
                    type: gp2
                    volumesPerInstance: 1
                instanceType: m4.2xlarge
                weightedCapacity: 2
            launchSpecifications:
              spotSpecifications:
                - allocationStrategy: capacity-optimized
                  blockDurationMinutes: 0
                  timeoutAction: SWITCH_TO_ON_DEMAND
                  timeoutDurationMinutes: 10
            name: core fleet
            targetOnDemandCapacity: 2
            targetSpotCapacity: 2
      task:
        type: aws:emr:InstanceFleet
        properties:
          clusterId: ${example.id}
          instanceTypeConfigs:
            - bidPriceAsPercentageOfOnDemandPrice: 100
              ebsConfigs:
                - size: 100
                  type: gp2
                  volumesPerInstance: 1
              instanceType: m4.xlarge
              weightedCapacity: 1
            - bidPriceAsPercentageOfOnDemandPrice: 100
              ebsConfigs:
                - size: 100
                  type: gp2
                  volumesPerInstance: 1
              instanceType: m4.2xlarge
              weightedCapacity: 2
          launchSpecifications:
            spotSpecifications:
              - allocationStrategy: capacity-optimized
                blockDurationMinutes: 0
                timeoutAction: TERMINATE_CLUSTER
                timeoutDurationMinutes: 10
          name: task fleet
          targetOnDemandCapacity: 1
          targetSpotCapacity: 1
    

    Enable Debug Logging

    Debug logging in EMR is implemented as a step. It is highly recommended that you utilize the resource options configuration with ignoreChanges if other steps are being managed outside of this provider.

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.emr.Cluster("example", {steps: [{
        actionOnFailure: "TERMINATE_CLUSTER",
        name: "Setup Hadoop Debugging",
        hadoopJarStep: {
            jar: "command-runner.jar",
            args: ["state-pusher-script"],
        },
    }]});
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.emr.Cluster("example", steps=[{
        "action_on_failure": "TERMINATE_CLUSTER",
        "name": "Setup Hadoop Debugging",
        "hadoop_jar_step": {
            "jar": "command-runner.jar",
            "args": ["state-pusher-script"],
        },
    }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "example", &emr.ClusterArgs{
    			Steps: emr.ClusterStepArray{
    				&emr.ClusterStepArgs{
    					ActionOnFailure: pulumi.String("TERMINATE_CLUSTER"),
    					Name:            pulumi.String("Setup Hadoop Debugging"),
    					HadoopJarStep: &emr.ClusterStepHadoopJarStepArgs{
    						Jar: pulumi.String("command-runner.jar"),
    						Args: pulumi.StringArray{
    							pulumi.String("state-pusher-script"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.Emr.Cluster("example", new()
        {
            Steps = new[]
            {
                new Aws.Emr.Inputs.ClusterStepArgs
                {
                    ActionOnFailure = "TERMINATE_CLUSTER",
                    Name = "Setup Hadoop Debugging",
                    HadoopJarStep = new Aws.Emr.Inputs.ClusterStepHadoopJarStepArgs
                    {
                        Jar = "command-runner.jar",
                        Args = new[]
                        {
                            "state-pusher-script",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import com.pulumi.aws.emr.inputs.ClusterStepArgs;
    import com.pulumi.aws.emr.inputs.ClusterStepHadoopJarStepArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Cluster("example", ClusterArgs.builder()
                .steps(ClusterStepArgs.builder()
                    .actionOnFailure("TERMINATE_CLUSTER")
                    .name("Setup Hadoop Debugging")
                    .hadoopJarStep(ClusterStepHadoopJarStepArgs.builder()
                        .jar("command-runner.jar")
                        .args("state-pusher-script")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:emr:Cluster
        properties:
          steps:
            - actionOnFailure: TERMINATE_CLUSTER
              name: Setup Hadoop Debugging
              hadoopJarStep:
                jar: command-runner.jar
                args:
                  - state-pusher-script
    

    Multiple Node Master Instance Group

    Available in EMR version 5.23.0 and later, an EMR Cluster can be launched with three master nodes for high availability. Additional information about this functionality and its requirements can be found in the EMR Management Guide.

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    // This configuration is for illustrative purposes and highlights
    // only relevant configurations for working with this functionality.
    // Map public IP on launch must be enabled for public (Internet accessible) subnets
    const example = new aws.ec2.Subnet("example", {mapPublicIpOnLaunch: true});
    const exampleCluster = new aws.emr.Cluster("example", {
        releaseLabel: "emr-5.24.1",
        terminationProtection: true,
        ec2Attributes: {
            subnetId: example.id,
        },
        masterInstanceGroup: {
            instanceCount: 3,
        },
        coreInstanceGroup: {},
    });
    
    import pulumi
    import pulumi_aws as aws
    
    # This configuration is for illustrative purposes and highlights
    # only relevant configurations for working with this functionality.
    # Map public IP on launch must be enabled for public (Internet accessible) subnets
    example = aws.ec2.Subnet("example", map_public_ip_on_launch=True)
    example_cluster = aws.emr.Cluster("example",
        release_label="emr-5.24.1",
        termination_protection=True,
        ec2_attributes={
            "subnet_id": example.id,
        },
        master_instance_group={
            "instance_count": 3,
        },
        core_instance_group={})
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// This configuration is for illustrative purposes and highlights
    		// only relevant configurations for working with this functionality.
    		// Map public IP on launch must be enabled for public (Internet accessible) subnets
    		example, err := ec2.NewSubnet(ctx, "example", &ec2.SubnetArgs{
    			MapPublicIpOnLaunch: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = emr.NewCluster(ctx, "example", &emr.ClusterArgs{
    			ReleaseLabel:          pulumi.String("emr-5.24.1"),
    			TerminationProtection: pulumi.Bool(true),
    			Ec2Attributes: &emr.ClusterEc2AttributesArgs{
    				SubnetId: example.ID(),
    			},
    			MasterInstanceGroup: &emr.ClusterMasterInstanceGroupArgs{
    				InstanceCount: pulumi.Int(3),
    			},
    			CoreInstanceGroup: nil,
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        // This configuration is for illustrative purposes and highlights
        // only relevant configurations for working with this functionality.
        // Map public IP on launch must be enabled for public (Internet accessible) subnets
        var example = new Aws.Ec2.Subnet("example", new()
        {
            MapPublicIpOnLaunch = true,
        });
    
        var exampleCluster = new Aws.Emr.Cluster("example", new()
        {
            ReleaseLabel = "emr-5.24.1",
            TerminationProtection = true,
            Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs
            {
                SubnetId = example.Id,
            },
            MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs
            {
                InstanceCount = 3,
            },
            CoreInstanceGroup = null,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.ec2.Subnet;
    import com.pulumi.aws.ec2.SubnetArgs;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import com.pulumi.aws.emr.inputs.ClusterEc2AttributesArgs;
    import com.pulumi.aws.emr.inputs.ClusterMasterInstanceGroupArgs;
    import com.pulumi.aws.emr.inputs.ClusterCoreInstanceGroupArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            // This configuration is for illustrative purposes and highlights
            // only relevant configurations for working with this functionality.
            // Map public IP on launch must be enabled for public (Internet accessible) subnets
            var example = new Subnet("example", SubnetArgs.builder()
                .mapPublicIpOnLaunch(true)
                .build());
    
            var exampleCluster = new Cluster("exampleCluster", ClusterArgs.builder()
                .releaseLabel("emr-5.24.1")
                .terminationProtection(true)
                .ec2Attributes(ClusterEc2AttributesArgs.builder()
                    .subnetId(example.id())
                    .build())
                .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()
                    .instanceCount(3)
                    .build())
                .coreInstanceGroup()
                .build());
    
        }
    }
    
    resources:
      # This configuration is for illustrative purposes and highlights
      # only relevant configurations for working with this functionality.
    
      # Map public IP on launch must be enabled for public (Internet accessible) subnets
      example:
        type: aws:ec2:Subnet
        properties:
          mapPublicIpOnLaunch: true
      exampleCluster:
        type: aws:emr:Cluster
        name: example
        properties:
          releaseLabel: emr-5.24.1
          terminationProtection: true
          ec2Attributes:
            subnetId: ${example.id}
          masterInstanceGroup:
            instanceCount: 3
          coreInstanceGroup: {}
    

    Create Cluster Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Cluster(name: string, args: ClusterArgs, opts?: CustomResourceOptions);
    @overload
    def Cluster(resource_name: str,
                args: ClusterArgs,
                opts: Optional[ResourceOptions] = None)
    
    @overload
    def Cluster(resource_name: str,
                opts: Optional[ResourceOptions] = None,
                release_label: Optional[str] = None,
                service_role: Optional[str] = None,
                core_instance_fleet: Optional[ClusterCoreInstanceFleetArgs] = None,
                configurations_json: Optional[str] = None,
                log_uri: Optional[str] = None,
                configurations: Optional[str] = None,
                master_instance_fleet: Optional[ClusterMasterInstanceFleetArgs] = None,
                additional_info: Optional[str] = None,
                core_instance_group: Optional[ClusterCoreInstanceGroupArgs] = None,
                custom_ami_id: Optional[str] = None,
                ebs_root_volume_size: Optional[int] = None,
                ec2_attributes: Optional[ClusterEc2AttributesArgs] = None,
                keep_job_flow_alive_when_no_steps: Optional[bool] = None,
                master_instance_group: Optional[ClusterMasterInstanceGroupArgs] = None,
                list_steps_states: Optional[Sequence[str]] = None,
                log_encryption_kms_key_id: Optional[str] = None,
                bootstrap_actions: Optional[Sequence[ClusterBootstrapActionArgs]] = None,
                autoscaling_role: Optional[str] = None,
                kerberos_attributes: Optional[ClusterKerberosAttributesArgs] = None,
                name: Optional[str] = None,
                placement_group_configs: Optional[Sequence[ClusterPlacementGroupConfigArgs]] = None,
                auto_termination_policy: Optional[ClusterAutoTerminationPolicyArgs] = None,
                scale_down_behavior: Optional[str] = None,
                security_configuration: Optional[str] = None,
                applications: Optional[Sequence[str]] = None,
                step_concurrency_level: Optional[int] = None,
                steps: Optional[Sequence[ClusterStepArgs]] = None,
                tags: Optional[Mapping[str, str]] = None,
                termination_protection: Optional[bool] = None,
                unhealthy_node_replacement: Optional[bool] = None,
                visible_to_all_users: Optional[bool] = None)
    func NewCluster(ctx *Context, name string, args ClusterArgs, opts ...ResourceOption) (*Cluster, error)
    public Cluster(string name, ClusterArgs args, CustomResourceOptions? opts = null)
    public Cluster(String name, ClusterArgs args)
    public Cluster(String name, ClusterArgs args, CustomResourceOptions options)
    
    type: aws:emr:Cluster
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ClusterArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var exampleclusterResourceResourceFromEmrcluster = new Aws.Emr.Cluster("exampleclusterResourceResourceFromEmrcluster", new()
    {
        ReleaseLabel = "string",
        ServiceRole = "string",
        CoreInstanceFleet = new Aws.Emr.Inputs.ClusterCoreInstanceFleetArgs
        {
            Id = "string",
            InstanceTypeConfigs = new[]
            {
                new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigArgs
                {
                    InstanceType = "string",
                    BidPrice = "string",
                    BidPriceAsPercentageOfOnDemandPrice = 0,
                    Configurations = new[]
                    {
                        new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigConfigurationArgs
                        {
                            Classification = "string",
                            Properties = 
                            {
                                { "string", "string" },
                            },
                        },
                    },
                    EbsConfigs = new[]
                    {
                        new Aws.Emr.Inputs.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs
                        {
                            Size = 0,
                            Type = "string",
                            Iops = 0,
                            VolumesPerInstance = 0,
                        },
                    },
                    WeightedCapacity = 0,
                },
            },
            LaunchSpecifications = new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsArgs
            {
                OnDemandSpecifications = new[]
                {
                    new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs
                    {
                        AllocationStrategy = "string",
                    },
                },
                SpotSpecifications = new[]
                {
                    new Aws.Emr.Inputs.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs
                    {
                        AllocationStrategy = "string",
                        TimeoutAction = "string",
                        TimeoutDurationMinutes = 0,
                        BlockDurationMinutes = 0,
                    },
                },
            },
            Name = "string",
            ProvisionedOnDemandCapacity = 0,
            ProvisionedSpotCapacity = 0,
            TargetOnDemandCapacity = 0,
            TargetSpotCapacity = 0,
        },
        ConfigurationsJson = "string",
        LogUri = "string",
        Configurations = "string",
        MasterInstanceFleet = new Aws.Emr.Inputs.ClusterMasterInstanceFleetArgs
        {
            Id = "string",
            InstanceTypeConfigs = new[]
            {
                new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigArgs
                {
                    InstanceType = "string",
                    BidPrice = "string",
                    BidPriceAsPercentageOfOnDemandPrice = 0,
                    Configurations = new[]
                    {
                        new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigConfigurationArgs
                        {
                            Classification = "string",
                            Properties = 
                            {
                                { "string", "string" },
                            },
                        },
                    },
                    EbsConfigs = new[]
                    {
                        new Aws.Emr.Inputs.ClusterMasterInstanceFleetInstanceTypeConfigEbsConfigArgs
                        {
                            Size = 0,
                            Type = "string",
                            Iops = 0,
                            VolumesPerInstance = 0,
                        },
                    },
                    WeightedCapacity = 0,
                },
            },
            LaunchSpecifications = new Aws.Emr.Inputs.ClusterMasterInstanceFleetLaunchSpecificationsArgs
            {
                OnDemandSpecifications = new[]
                {
                    new Aws.Emr.Inputs.ClusterMasterInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs
                    {
                        AllocationStrategy = "string",
                    },
                },
                SpotSpecifications = new[]
                {
                    new Aws.Emr.Inputs.ClusterMasterInstanceFleetLaunchSpecificationsSpotSpecificationArgs
                    {
                        AllocationStrategy = "string",
                        TimeoutAction = "string",
                        TimeoutDurationMinutes = 0,
                        BlockDurationMinutes = 0,
                    },
                },
            },
            Name = "string",
            ProvisionedOnDemandCapacity = 0,
            ProvisionedSpotCapacity = 0,
            TargetOnDemandCapacity = 0,
            TargetSpotCapacity = 0,
        },
        AdditionalInfo = "string",
        CoreInstanceGroup = new Aws.Emr.Inputs.ClusterCoreInstanceGroupArgs
        {
            InstanceType = "string",
            AutoscalingPolicy = "string",
            BidPrice = "string",
            EbsConfigs = new[]
            {
                new Aws.Emr.Inputs.ClusterCoreInstanceGroupEbsConfigArgs
                {
                    Size = 0,
                    Type = "string",
                    Iops = 0,
                    Throughput = 0,
                    VolumesPerInstance = 0,
                },
            },
            Id = "string",
            InstanceCount = 0,
            Name = "string",
        },
        CustomAmiId = "string",
        EbsRootVolumeSize = 0,
        Ec2Attributes = new Aws.Emr.Inputs.ClusterEc2AttributesArgs
        {
            InstanceProfile = "string",
            AdditionalMasterSecurityGroups = "string",
            AdditionalSlaveSecurityGroups = "string",
            EmrManagedMasterSecurityGroup = "string",
            EmrManagedSlaveSecurityGroup = "string",
            KeyName = "string",
            ServiceAccessSecurityGroup = "string",
            SubnetId = "string",
            SubnetIds = new[]
            {
                "string",
            },
        },
        KeepJobFlowAliveWhenNoSteps = false,
        MasterInstanceGroup = new Aws.Emr.Inputs.ClusterMasterInstanceGroupArgs
        {
            InstanceType = "string",
            BidPrice = "string",
            EbsConfigs = new[]
            {
                new Aws.Emr.Inputs.ClusterMasterInstanceGroupEbsConfigArgs
                {
                    Size = 0,
                    Type = "string",
                    Iops = 0,
                    Throughput = 0,
                    VolumesPerInstance = 0,
                },
            },
            Id = "string",
            InstanceCount = 0,
            Name = "string",
        },
        ListStepsStates = new[]
        {
            "string",
        },
        LogEncryptionKmsKeyId = "string",
        BootstrapActions = new[]
        {
            new Aws.Emr.Inputs.ClusterBootstrapActionArgs
            {
                Name = "string",
                Path = "string",
                Args = new[]
                {
                    "string",
                },
            },
        },
        AutoscalingRole = "string",
        KerberosAttributes = new Aws.Emr.Inputs.ClusterKerberosAttributesArgs
        {
            KdcAdminPassword = "string",
            Realm = "string",
            AdDomainJoinPassword = "string",
            AdDomainJoinUser = "string",
            CrossRealmTrustPrincipalPassword = "string",
        },
        Name = "string",
        PlacementGroupConfigs = new[]
        {
            new Aws.Emr.Inputs.ClusterPlacementGroupConfigArgs
            {
                InstanceRole = "string",
                PlacementStrategy = "string",
            },
        },
        AutoTerminationPolicy = new Aws.Emr.Inputs.ClusterAutoTerminationPolicyArgs
        {
            IdleTimeout = 0,
        },
        ScaleDownBehavior = "string",
        SecurityConfiguration = "string",
        Applications = new[]
        {
            "string",
        },
        StepConcurrencyLevel = 0,
        Steps = new[]
        {
            new Aws.Emr.Inputs.ClusterStepArgs
            {
                ActionOnFailure = "string",
                HadoopJarStep = new Aws.Emr.Inputs.ClusterStepHadoopJarStepArgs
                {
                    Jar = "string",
                    Args = new[]
                    {
                        "string",
                    },
                    MainClass = "string",
                    Properties = 
                    {
                        { "string", "string" },
                    },
                },
                Name = "string",
            },
        },
        Tags = 
        {
            { "string", "string" },
        },
        TerminationProtection = false,
        UnhealthyNodeReplacement = false,
        VisibleToAllUsers = false,
    });
    
    example, err := emr.NewCluster(ctx, "exampleclusterResourceResourceFromEmrcluster", &emr.ClusterArgs{
    	ReleaseLabel: pulumi.String("string"),
    	ServiceRole:  pulumi.String("string"),
    	CoreInstanceFleet: &emr.ClusterCoreInstanceFleetArgs{
    		Id: pulumi.String("string"),
    		InstanceTypeConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigArray{
    			&emr.ClusterCoreInstanceFleetInstanceTypeConfigArgs{
    				InstanceType:                        pulumi.String("string"),
    				BidPrice:                            pulumi.String("string"),
    				BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(0),
    				Configurations: emr.ClusterCoreInstanceFleetInstanceTypeConfigConfigurationArray{
    					&emr.ClusterCoreInstanceFleetInstanceTypeConfigConfigurationArgs{
    						Classification: pulumi.String("string"),
    						Properties: pulumi.StringMap{
    							"string": pulumi.String("string"),
    						},
    					},
    				},
    				EbsConfigs: emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArray{
    					&emr.ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs{
    						Size:               pulumi.Int(0),
    						Type:               pulumi.String("string"),
    						Iops:               pulumi.Int(0),
    						VolumesPerInstance: pulumi.Int(0),
    					},
    				},
    				WeightedCapacity: pulumi.Int(0),
    			},
    		},
    		LaunchSpecifications: &emr.ClusterCoreInstanceFleetLaunchSpecificationsArgs{
    			OnDemandSpecifications: emr.ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecificationArray{
    				&emr.ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs{
    					AllocationStrategy: pulumi.String("string"),
    				},
    			},
    			SpotSpecifications: emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArray{
    				&emr.ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs{
    					AllocationStrategy:     pulumi.String("string"),
    					TimeoutAction:          pulumi.String("string"),
    					TimeoutDurationMinutes: pulumi.Int(0),
    					BlockDurationMinutes:   pulumi.Int(0),
    				},
    			},
    		},
    		Name:                        pulumi.String("string"),
    		ProvisionedOnDemandCapacity: pulumi.Int(0),
    		ProvisionedSpotCapacity:     pulumi.Int(0),
    		TargetOnDemandCapacity:      pulumi.Int(0),
    		TargetSpotCapacity:          pulumi.Int(0),
    	},
    	ConfigurationsJson: pulumi.String("string"),
    	LogUri:             pulumi.String("string"),
    	Configurations:     pulumi.String("string"),
    	MasterInstanceFleet: &emr.ClusterMasterInstanceFleetArgs{
    		Id: pulumi.String("string"),
    		InstanceTypeConfigs: emr.ClusterMasterInstanceFleetInstanceTypeConfigArray{
    			&emr.ClusterMasterInstanceFleetInstanceTypeConfigArgs{
    				InstanceType:                        pulumi.String("string"),
    				BidPrice:                            pulumi.String("string"),
    				BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(0),
    				Configurations: emr.ClusterMasterInstanceFleetInstanceTypeConfigConfigurationArray{
    					&emr.ClusterMasterInstanceFleetInstanceTypeConfigConfigurationArgs{
    						Classification: pulumi.String("string"),
    						Properties: pulumi.StringMap{
    							"string": pulumi.String("string"),
    						},
    					},
    				},
    				EbsConfigs: emr.ClusterMasterInstanceFleetInstanceTypeConfigEbsConfigArray{
    					&emr.ClusterMasterInstanceFleetInstanceTypeConfigEbsConfigArgs{
    						Size:               pulumi.Int(0),
    						Type:               pulumi.String("string"),
    						Iops:               pulumi.Int(0),
    						VolumesPerInstance: pulumi.Int(0),
    					},
    				},
    				WeightedCapacity: pulumi.Int(0),
    			},
    		},
    		LaunchSpecifications: &emr.ClusterMasterInstanceFleetLaunchSpecificationsArgs{
    			OnDemandSpecifications: emr.ClusterMasterInstanceFleetLaunchSpecificationsOnDemandSpecificationArray{
    				&emr.ClusterMasterInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs{
    					AllocationStrategy: pulumi.String("string"),
    				},
    			},
    			SpotSpecifications: emr.ClusterMasterInstanceFleetLaunchSpecificationsSpotSpecificationArray{
    				&emr.ClusterMasterInstanceFleetLaunchSpecificationsSpotSpecificationArgs{
    					AllocationStrategy:     pulumi.String("string"),
    					TimeoutAction:          pulumi.String("string"),
    					TimeoutDurationMinutes: pulumi.Int(0),
    					BlockDurationMinutes:   pulumi.Int(0),
    				},
    			},
    		},
    		Name:                        pulumi.String("string"),
    		ProvisionedOnDemandCapacity: pulumi.Int(0),
    		ProvisionedSpotCapacity:     pulumi.Int(0),
    		TargetOnDemandCapacity:      pulumi.Int(0),
    		TargetSpotCapacity:          pulumi.Int(0),
    	},
    	AdditionalInfo: pulumi.String("string"),
    	CoreInstanceGroup: &emr.ClusterCoreInstanceGroupArgs{
    		InstanceType:      pulumi.String("string"),
    		AutoscalingPolicy: pulumi.String("string"),
    		BidPrice:          pulumi.String("string"),
    		EbsConfigs: emr.ClusterCoreInstanceGroupEbsConfigArray{
    			&emr.ClusterCoreInstanceGroupEbsConfigArgs{
    				Size:               pulumi.Int(0),
    				Type:               pulumi.String("string"),
    				Iops:               pulumi.Int(0),
    				Throughput:         pulumi.Int(0),
    				VolumesPerInstance: pulumi.Int(0),
    			},
    		},
    		Id:            pulumi.String("string"),
    		InstanceCount: pulumi.Int(0),
    		Name:          pulumi.String("string"),
    	},
    	CustomAmiId:       pulumi.String("string"),
    	EbsRootVolumeSize: pulumi.Int(0),
    	Ec2Attributes: &emr.ClusterEc2AttributesArgs{
    		InstanceProfile:                pulumi.String("string"),
    		AdditionalMasterSecurityGroups: pulumi.String("string"),
    		AdditionalSlaveSecurityGroups:  pulumi.String("string"),
    		EmrManagedMasterSecurityGroup:  pulumi.String("string"),
    		EmrManagedSlaveSecurityGroup:   pulumi.String("string"),
    		KeyName:                        pulumi.String("string"),
    		ServiceAccessSecurityGroup:     pulumi.String("string"),
    		SubnetId:                       pulumi.String("string"),
    		SubnetIds: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    	},
    	KeepJobFlowAliveWhenNoSteps: pulumi.Bool(false),
    	MasterInstanceGroup: &emr.ClusterMasterInstanceGroupArgs{
    		InstanceType: pulumi.String("string"),
    		BidPrice:     pulumi.String("string"),
    		EbsConfigs: emr.ClusterMasterInstanceGroupEbsConfigArray{
    			&emr.ClusterMasterInstanceGroupEbsConfigArgs{
    				Size:               pulumi.Int(0),
    				Type:               pulumi.String("string"),
    				Iops:               pulumi.Int(0),
    				Throughput:         pulumi.Int(0),
    				VolumesPerInstance: pulumi.Int(0),
    			},
    		},
    		Id:            pulumi.String("string"),
    		InstanceCount: pulumi.Int(0),
    		Name:          pulumi.String("string"),
    	},
    	ListStepsStates: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	LogEncryptionKmsKeyId: pulumi.String("string"),
    	BootstrapActions: emr.ClusterBootstrapActionArray{
    		&emr.ClusterBootstrapActionArgs{
    			Name: pulumi.String("string"),
    			Path: pulumi.String("string"),
    			Args: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    	},
    	AutoscalingRole: pulumi.String("string"),
    	KerberosAttributes: &emr.ClusterKerberosAttributesArgs{
    		KdcAdminPassword:                 pulumi.String("string"),
    		Realm:                            pulumi.String("string"),
    		AdDomainJoinPassword:             pulumi.String("string"),
    		AdDomainJoinUser:                 pulumi.String("string"),
    		CrossRealmTrustPrincipalPassword: pulumi.String("string"),
    	},
    	Name: pulumi.String("string"),
    	PlacementGroupConfigs: emr.ClusterPlacementGroupConfigArray{
    		&emr.ClusterPlacementGroupConfigArgs{
    			InstanceRole:      pulumi.String("string"),
    			PlacementStrategy: pulumi.String("string"),
    		},
    	},
    	AutoTerminationPolicy: &emr.ClusterAutoTerminationPolicyArgs{
    		IdleTimeout: pulumi.Int(0),
    	},
    	ScaleDownBehavior:     pulumi.String("string"),
    	SecurityConfiguration: pulumi.String("string"),
    	Applications: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	StepConcurrencyLevel: pulumi.Int(0),
    	Steps: emr.ClusterStepArray{
    		&emr.ClusterStepArgs{
    			ActionOnFailure: pulumi.String("string"),
    			HadoopJarStep: &emr.ClusterStepHadoopJarStepArgs{
    				Jar: pulumi.String("string"),
    				Args: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    				MainClass: pulumi.String("string"),
    				Properties: pulumi.StringMap{
    					"string": pulumi.String("string"),
    				},
    			},
    			Name: pulumi.String("string"),
    		},
    	},
    	Tags: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	TerminationProtection:    pulumi.Bool(false),
    	UnhealthyNodeReplacement: pulumi.Bool(false),
    	VisibleToAllUsers:        pulumi.Bool(false),
    })
    
    var exampleclusterResourceResourceFromEmrcluster = new Cluster("exampleclusterResourceResourceFromEmrcluster", ClusterArgs.builder()
        .releaseLabel("string")
        .serviceRole("string")
        .coreInstanceFleet(ClusterCoreInstanceFleetArgs.builder()
            .id("string")
            .instanceTypeConfigs(ClusterCoreInstanceFleetInstanceTypeConfigArgs.builder()
                .instanceType("string")
                .bidPrice("string")
                .bidPriceAsPercentageOfOnDemandPrice(0)
                .configurations(ClusterCoreInstanceFleetInstanceTypeConfigConfigurationArgs.builder()
                    .classification("string")
                    .properties(Map.of("string", "string"))
                    .build())
                .ebsConfigs(ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                    .size(0)
                    .type("string")
                    .iops(0)
                    .volumesPerInstance(0)
                    .build())
                .weightedCapacity(0)
                .build())
            .launchSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsArgs.builder()
                .onDemandSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs.builder()
                    .allocationStrategy("string")
                    .build())
                .spotSpecifications(ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()
                    .allocationStrategy("string")
                    .timeoutAction("string")
                    .timeoutDurationMinutes(0)
                    .blockDurationMinutes(0)
                    .build())
                .build())
            .name("string")
            .provisionedOnDemandCapacity(0)
            .provisionedSpotCapacity(0)
            .targetOnDemandCapacity(0)
            .targetSpotCapacity(0)
            .build())
        .configurationsJson("string")
        .logUri("string")
        .configurations("string")
        .masterInstanceFleet(ClusterMasterInstanceFleetArgs.builder()
            .id("string")
            .instanceTypeConfigs(ClusterMasterInstanceFleetInstanceTypeConfigArgs.builder()
                .instanceType("string")
                .bidPrice("string")
                .bidPriceAsPercentageOfOnDemandPrice(0)
                .configurations(ClusterMasterInstanceFleetInstanceTypeConfigConfigurationArgs.builder()
                    .classification("string")
                    .properties(Map.of("string", "string"))
                    .build())
                .ebsConfigs(ClusterMasterInstanceFleetInstanceTypeConfigEbsConfigArgs.builder()
                    .size(0)
                    .type("string")
                    .iops(0)
                    .volumesPerInstance(0)
                    .build())
                .weightedCapacity(0)
                .build())
            .launchSpecifications(ClusterMasterInstanceFleetLaunchSpecificationsArgs.builder()
                .onDemandSpecifications(ClusterMasterInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs.builder()
                    .allocationStrategy("string")
                    .build())
                .spotSpecifications(ClusterMasterInstanceFleetLaunchSpecificationsSpotSpecificationArgs.builder()
                    .allocationStrategy("string")
                    .timeoutAction("string")
                    .timeoutDurationMinutes(0)
                    .blockDurationMinutes(0)
                    .build())
                .build())
            .name("string")
            .provisionedOnDemandCapacity(0)
            .provisionedSpotCapacity(0)
            .targetOnDemandCapacity(0)
            .targetSpotCapacity(0)
            .build())
        .additionalInfo("string")
        .coreInstanceGroup(ClusterCoreInstanceGroupArgs.builder()
            .instanceType("string")
            .autoscalingPolicy("string")
            .bidPrice("string")
            .ebsConfigs(ClusterCoreInstanceGroupEbsConfigArgs.builder()
                .size(0)
                .type("string")
                .iops(0)
                .throughput(0)
                .volumesPerInstance(0)
                .build())
            .id("string")
            .instanceCount(0)
            .name("string")
            .build())
        .customAmiId("string")
        .ebsRootVolumeSize(0)
        .ec2Attributes(ClusterEc2AttributesArgs.builder()
            .instanceProfile("string")
            .additionalMasterSecurityGroups("string")
            .additionalSlaveSecurityGroups("string")
            .emrManagedMasterSecurityGroup("string")
            .emrManagedSlaveSecurityGroup("string")
            .keyName("string")
            .serviceAccessSecurityGroup("string")
            .subnetId("string")
            .subnetIds("string")
            .build())
        .keepJobFlowAliveWhenNoSteps(false)
        .masterInstanceGroup(ClusterMasterInstanceGroupArgs.builder()
            .instanceType("string")
            .bidPrice("string")
            .ebsConfigs(ClusterMasterInstanceGroupEbsConfigArgs.builder()
                .size(0)
                .type("string")
                .iops(0)
                .throughput(0)
                .volumesPerInstance(0)
                .build())
            .id("string")
            .instanceCount(0)
            .name("string")
            .build())
        .listStepsStates("string")
        .logEncryptionKmsKeyId("string")
        .bootstrapActions(ClusterBootstrapActionArgs.builder()
            .name("string")
            .path("string")
            .args("string")
            .build())
        .autoscalingRole("string")
        .kerberosAttributes(ClusterKerberosAttributesArgs.builder()
            .kdcAdminPassword("string")
            .realm("string")
            .adDomainJoinPassword("string")
            .adDomainJoinUser("string")
            .crossRealmTrustPrincipalPassword("string")
            .build())
        .name("string")
        .placementGroupConfigs(ClusterPlacementGroupConfigArgs.builder()
            .instanceRole("string")
            .placementStrategy("string")
            .build())
        .autoTerminationPolicy(ClusterAutoTerminationPolicyArgs.builder()
            .idleTimeout(0)
            .build())
        .scaleDownBehavior("string")
        .securityConfiguration("string")
        .applications("string")
        .stepConcurrencyLevel(0)
        .steps(ClusterStepArgs.builder()
            .actionOnFailure("string")
            .hadoopJarStep(ClusterStepHadoopJarStepArgs.builder()
                .jar("string")
                .args("string")
                .mainClass("string")
                .properties(Map.of("string", "string"))
                .build())
            .name("string")
            .build())
        .tags(Map.of("string", "string"))
        .terminationProtection(false)
        .unhealthyNodeReplacement(false)
        .visibleToAllUsers(false)
        .build());
    
    examplecluster_resource_resource_from_emrcluster = aws.emr.Cluster("exampleclusterResourceResourceFromEmrcluster",
        release_label="string",
        service_role="string",
        core_instance_fleet={
            "id": "string",
            "instanceTypeConfigs": [{
                "instanceType": "string",
                "bidPrice": "string",
                "bidPriceAsPercentageOfOnDemandPrice": 0,
                "configurations": [{
                    "classification": "string",
                    "properties": {
                        "string": "string",
                    },
                }],
                "ebsConfigs": [{
                    "size": 0,
                    "type": "string",
                    "iops": 0,
                    "volumesPerInstance": 0,
                }],
                "weightedCapacity": 0,
            }],
            "launchSpecifications": {
                "onDemandSpecifications": [{
                    "allocationStrategy": "string",
                }],
                "spotSpecifications": [{
                    "allocationStrategy": "string",
                    "timeoutAction": "string",
                    "timeoutDurationMinutes": 0,
                    "blockDurationMinutes": 0,
                }],
            },
            "name": "string",
            "provisionedOnDemandCapacity": 0,
            "provisionedSpotCapacity": 0,
            "targetOnDemandCapacity": 0,
            "targetSpotCapacity": 0,
        },
        configurations_json="string",
        log_uri="string",
        configurations="string",
        master_instance_fleet={
            "id": "string",
            "instanceTypeConfigs": [{
                "instanceType": "string",
                "bidPrice": "string",
                "bidPriceAsPercentageOfOnDemandPrice": 0,
                "configurations": [{
                    "classification": "string",
                    "properties": {
                        "string": "string",
                    },
                }],
                "ebsConfigs": [{
                    "size": 0,
                    "type": "string",
                    "iops": 0,
                    "volumesPerInstance": 0,
                }],
                "weightedCapacity": 0,
            }],
            "launchSpecifications": {
                "onDemandSpecifications": [{
                    "allocationStrategy": "string",
                }],
                "spotSpecifications": [{
                    "allocationStrategy": "string",
                    "timeoutAction": "string",
                    "timeoutDurationMinutes": 0,
                    "blockDurationMinutes": 0,
                }],
            },
            "name": "string",
            "provisionedOnDemandCapacity": 0,
            "provisionedSpotCapacity": 0,
            "targetOnDemandCapacity": 0,
            "targetSpotCapacity": 0,
        },
        additional_info="string",
        core_instance_group={
            "instanceType": "string",
            "autoscalingPolicy": "string",
            "bidPrice": "string",
            "ebsConfigs": [{
                "size": 0,
                "type": "string",
                "iops": 0,
                "throughput": 0,
                "volumesPerInstance": 0,
            }],
            "id": "string",
            "instanceCount": 0,
            "name": "string",
        },
        custom_ami_id="string",
        ebs_root_volume_size=0,
        ec2_attributes={
            "instanceProfile": "string",
            "additionalMasterSecurityGroups": "string",
            "additionalSlaveSecurityGroups": "string",
            "emrManagedMasterSecurityGroup": "string",
            "emrManagedSlaveSecurityGroup": "string",
            "keyName": "string",
            "serviceAccessSecurityGroup": "string",
            "subnetId": "string",
            "subnetIds": ["string"],
        },
        keep_job_flow_alive_when_no_steps=False,
        master_instance_group={
            "instanceType": "string",
            "bidPrice": "string",
            "ebsConfigs": [{
                "size": 0,
                "type": "string",
                "iops": 0,
                "throughput": 0,
                "volumesPerInstance": 0,
            }],
            "id": "string",
            "instanceCount": 0,
            "name": "string",
        },
        list_steps_states=["string"],
        log_encryption_kms_key_id="string",
        bootstrap_actions=[{
            "name": "string",
            "path": "string",
            "args": ["string"],
        }],
        autoscaling_role="string",
        kerberos_attributes={
            "kdcAdminPassword": "string",
            "realm": "string",
            "adDomainJoinPassword": "string",
            "adDomainJoinUser": "string",
            "crossRealmTrustPrincipalPassword": "string",
        },
        name="string",
        placement_group_configs=[{
            "instanceRole": "string",
            "placementStrategy": "string",
        }],
        auto_termination_policy={
            "idleTimeout": 0,
        },
        scale_down_behavior="string",
        security_configuration="string",
        applications=["string"],
        step_concurrency_level=0,
        steps=[{
            "actionOnFailure": "string",
            "hadoopJarStep": {
                "jar": "string",
                "args": ["string"],
                "mainClass": "string",
                "properties": {
                    "string": "string",
                },
            },
            "name": "string",
        }],
        tags={
            "string": "string",
        },
        termination_protection=False,
        unhealthy_node_replacement=False,
        visible_to_all_users=False)
    
    const exampleclusterResourceResourceFromEmrcluster = new aws.emr.Cluster("exampleclusterResourceResourceFromEmrcluster", {
        releaseLabel: "string",
        serviceRole: "string",
        coreInstanceFleet: {
            id: "string",
            instanceTypeConfigs: [{
                instanceType: "string",
                bidPrice: "string",
                bidPriceAsPercentageOfOnDemandPrice: 0,
                configurations: [{
                    classification: "string",
                    properties: {
                        string: "string",
                    },
                }],
                ebsConfigs: [{
                    size: 0,
                    type: "string",
                    iops: 0,
                    volumesPerInstance: 0,
                }],
                weightedCapacity: 0,
            }],
            launchSpecifications: {
                onDemandSpecifications: [{
                    allocationStrategy: "string",
                }],
                spotSpecifications: [{
                    allocationStrategy: "string",
                    timeoutAction: "string",
                    timeoutDurationMinutes: 0,
                    blockDurationMinutes: 0,
                }],
            },
            name: "string",
            provisionedOnDemandCapacity: 0,
            provisionedSpotCapacity: 0,
            targetOnDemandCapacity: 0,
            targetSpotCapacity: 0,
        },
        configurationsJson: "string",
        logUri: "string",
        configurations: "string",
        masterInstanceFleet: {
            id: "string",
            instanceTypeConfigs: [{
                instanceType: "string",
                bidPrice: "string",
                bidPriceAsPercentageOfOnDemandPrice: 0,
                configurations: [{
                    classification: "string",
                    properties: {
                        string: "string",
                    },
                }],
                ebsConfigs: [{
                    size: 0,
                    type: "string",
                    iops: 0,
                    volumesPerInstance: 0,
                }],
                weightedCapacity: 0,
            }],
            launchSpecifications: {
                onDemandSpecifications: [{
                    allocationStrategy: "string",
                }],
                spotSpecifications: [{
                    allocationStrategy: "string",
                    timeoutAction: "string",
                    timeoutDurationMinutes: 0,
                    blockDurationMinutes: 0,
                }],
            },
            name: "string",
            provisionedOnDemandCapacity: 0,
            provisionedSpotCapacity: 0,
            targetOnDemandCapacity: 0,
            targetSpotCapacity: 0,
        },
        additionalInfo: "string",
        coreInstanceGroup: {
            instanceType: "string",
            autoscalingPolicy: "string",
            bidPrice: "string",
            ebsConfigs: [{
                size: 0,
                type: "string",
                iops: 0,
                throughput: 0,
                volumesPerInstance: 0,
            }],
            id: "string",
            instanceCount: 0,
            name: "string",
        },
        customAmiId: "string",
        ebsRootVolumeSize: 0,
        ec2Attributes: {
            instanceProfile: "string",
            additionalMasterSecurityGroups: "string",
            additionalSlaveSecurityGroups: "string",
            emrManagedMasterSecurityGroup: "string",
            emrManagedSlaveSecurityGroup: "string",
            keyName: "string",
            serviceAccessSecurityGroup: "string",
            subnetId: "string",
            subnetIds: ["string"],
        },
        keepJobFlowAliveWhenNoSteps: false,
        masterInstanceGroup: {
            instanceType: "string",
            bidPrice: "string",
            ebsConfigs: [{
                size: 0,
                type: "string",
                iops: 0,
                throughput: 0,
                volumesPerInstance: 0,
            }],
            id: "string",
            instanceCount: 0,
            name: "string",
        },
        listStepsStates: ["string"],
        logEncryptionKmsKeyId: "string",
        bootstrapActions: [{
            name: "string",
            path: "string",
            args: ["string"],
        }],
        autoscalingRole: "string",
        kerberosAttributes: {
            kdcAdminPassword: "string",
            realm: "string",
            adDomainJoinPassword: "string",
            adDomainJoinUser: "string",
            crossRealmTrustPrincipalPassword: "string",
        },
        name: "string",
        placementGroupConfigs: [{
            instanceRole: "string",
            placementStrategy: "string",
        }],
        autoTerminationPolicy: {
            idleTimeout: 0,
        },
        scaleDownBehavior: "string",
        securityConfiguration: "string",
        applications: ["string"],
        stepConcurrencyLevel: 0,
        steps: [{
            actionOnFailure: "string",
            hadoopJarStep: {
                jar: "string",
                args: ["string"],
                mainClass: "string",
                properties: {
                    string: "string",
                },
            },
            name: "string",
        }],
        tags: {
            string: "string",
        },
        terminationProtection: false,
        unhealthyNodeReplacement: false,
        visibleToAllUsers: false,
    });
    
    type: aws:emr:Cluster
    properties:
        additionalInfo: string
        applications:
            - string
        autoTerminationPolicy:
            idleTimeout: 0
        autoscalingRole: string
        bootstrapActions:
            - args:
                - string
              name: string
              path: string
        configurations: string
        configurationsJson: string
        coreInstanceFleet:
            id: string
            instanceTypeConfigs:
                - bidPrice: string
                  bidPriceAsPercentageOfOnDemandPrice: 0
                  configurations:
                    - classification: string
                      properties:
                        string: string
                  ebsConfigs:
                    - iops: 0
                      size: 0
                      type: string
                      volumesPerInstance: 0
                  instanceType: string
                  weightedCapacity: 0
            launchSpecifications:
                onDemandSpecifications:
                    - allocationStrategy: string
                spotSpecifications:
                    - allocationStrategy: string
                      blockDurationMinutes: 0
                      timeoutAction: string
                      timeoutDurationMinutes: 0
            name: string
            provisionedOnDemandCapacity: 0
            provisionedSpotCapacity: 0
            targetOnDemandCapacity: 0
            targetSpotCapacity: 0
        coreInstanceGroup:
            autoscalingPolicy: string
            bidPrice: string
            ebsConfigs:
                - iops: 0
                  size: 0
                  throughput: 0
                  type: string
                  volumesPerInstance: 0
            id: string
            instanceCount: 0
            instanceType: string
            name: string
        customAmiId: string
        ebsRootVolumeSize: 0
        ec2Attributes:
            additionalMasterSecurityGroups: string
            additionalSlaveSecurityGroups: string
            emrManagedMasterSecurityGroup: string
            emrManagedSlaveSecurityGroup: string
            instanceProfile: string
            keyName: string
            serviceAccessSecurityGroup: string
            subnetId: string
            subnetIds:
                - string
        keepJobFlowAliveWhenNoSteps: false
        kerberosAttributes:
            adDomainJoinPassword: string
            adDomainJoinUser: string
            crossRealmTrustPrincipalPassword: string
            kdcAdminPassword: string
            realm: string
        listStepsStates:
            - string
        logEncryptionKmsKeyId: string
        logUri: string
        masterInstanceFleet:
            id: string
            instanceTypeConfigs:
                - bidPrice: string
                  bidPriceAsPercentageOfOnDemandPrice: 0
                  configurations:
                    - classification: string
                      properties:
                        string: string
                  ebsConfigs:
                    - iops: 0
                      size: 0
                      type: string
                      volumesPerInstance: 0
                  instanceType: string
                  weightedCapacity: 0
            launchSpecifications:
                onDemandSpecifications:
                    - allocationStrategy: string
                spotSpecifications:
                    - allocationStrategy: string
                      blockDurationMinutes: 0
                      timeoutAction: string
                      timeoutDurationMinutes: 0
            name: string
            provisionedOnDemandCapacity: 0
            provisionedSpotCapacity: 0
            targetOnDemandCapacity: 0
            targetSpotCapacity: 0
        masterInstanceGroup:
            bidPrice: string
            ebsConfigs:
                - iops: 0
                  size: 0
                  throughput: 0
                  type: string
                  volumesPerInstance: 0
            id: string
            instanceCount: 0
            instanceType: string
            name: string
        name: string
        placementGroupConfigs:
            - instanceRole: string
              placementStrategy: string
        releaseLabel: string
        scaleDownBehavior: string
        securityConfiguration: string
        serviceRole: string
        stepConcurrencyLevel: 0
        steps:
            - actionOnFailure: string
              hadoopJarStep:
                args:
                    - string
                jar: string
                mainClass: string
                properties:
                    string: string
              name: string
        tags:
            string: string
        terminationProtection: false
        unhealthyNodeReplacement: false
        visibleToAllUsers: false
    

    Cluster Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The Cluster resource accepts the following input properties:

    ReleaseLabel string
    Release label for the Amazon EMR release.
    ServiceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    AdditionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    Applications List<string>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    AutoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    AutoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    BootstrapActions List<ClusterBootstrapAction>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    Configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    ConfigurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    CoreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    CoreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    CustomAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    EbsRootVolumeSize int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    Ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    KeepJobFlowAliveWhenNoSteps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    KerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    ListStepsStates List<string>
    List of step states used to filter returned steps
    LogEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    LogUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    MasterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    MasterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    Name string
    Name of the job flow.
    PlacementGroupConfigs List<ClusterPlacementGroupConfig>
    The specified placement group configuration for an Amazon EMR cluster.
    ScaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    SecurityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    StepConcurrencyLevel int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    Steps List<ClusterStep>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    Tags Dictionary<string, string>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TerminationProtection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    UnhealthyNodeReplacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    VisibleToAllUsers bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    ReleaseLabel string
    Release label for the Amazon EMR release.
    ServiceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    AdditionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    Applications []string
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    AutoTerminationPolicy ClusterAutoTerminationPolicyArgs
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    AutoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    BootstrapActions []ClusterBootstrapActionArgs
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    Configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    ConfigurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    CoreInstanceFleet ClusterCoreInstanceFleetArgs
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    CoreInstanceGroup ClusterCoreInstanceGroupArgs
    Configuration block to use an Instance Group for the core node type.
    CustomAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    EbsRootVolumeSize int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    Ec2Attributes ClusterEc2AttributesArgs
    Attributes for the EC2 instances running the job flow. See below.
    KeepJobFlowAliveWhenNoSteps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    KerberosAttributes ClusterKerberosAttributesArgs
    Kerberos configuration for the cluster. See below.
    ListStepsStates []string
    List of step states used to filter returned steps
    LogEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    LogUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    MasterInstanceFleet ClusterMasterInstanceFleetArgs
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    MasterInstanceGroup ClusterMasterInstanceGroupArgs
    Configuration block to use an Instance Group for the master node type.
    Name string
    Name of the job flow.
    PlacementGroupConfigs []ClusterPlacementGroupConfigArgs
    The specified placement group configuration for an Amazon EMR cluster.
    ScaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    SecurityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    StepConcurrencyLevel int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    Steps []ClusterStepArgs
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    Tags map[string]string
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TerminationProtection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    UnhealthyNodeReplacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    VisibleToAllUsers bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    releaseLabel String
    Release label for the Amazon EMR release.
    serviceRole String

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    additionalInfo String
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications List<String>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    autoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole String
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions List<ClusterBootstrapAction>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    configurations String
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson String

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    customAmiId String
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize Integer
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps Boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    listStepsStates List<String>
    List of step states used to filter returned steps
    logEncryptionKmsKeyId String
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri String
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    name String
    Name of the job flow.
    placementGroupConfigs List<ClusterPlacementGroupConfig>
    The specified placement group configuration for an Amazon EMR cluster.
    scaleDownBehavior String
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration String
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    stepConcurrencyLevel Integer
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps List<ClusterStep>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Map<String,String>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    terminationProtection Boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement Boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers Boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    releaseLabel string
    Release label for the Amazon EMR release.
    serviceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    additionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications string[]
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    autoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions ClusterBootstrapAction[]
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    customAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize number
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    listStepsStates string[]
    List of step states used to filter returned steps
    logEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    name string
    Name of the job flow.
    placementGroupConfigs ClusterPlacementGroupConfig[]
    The specified placement group configuration for an Amazon EMR cluster.
    scaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    stepConcurrencyLevel number
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps ClusterStep[]
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags {[key: string]: string}
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    terminationProtection boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    release_label str
    Release label for the Amazon EMR release.
    service_role str

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    additional_info str
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications Sequence[str]
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    auto_termination_policy ClusterAutoTerminationPolicyArgs
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscaling_role str
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrap_actions Sequence[ClusterBootstrapActionArgs]
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    configurations str
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurations_json str

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    core_instance_fleet ClusterCoreInstanceFleetArgs
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    core_instance_group ClusterCoreInstanceGroupArgs
    Configuration block to use an Instance Group for the core node type.
    custom_ami_id str
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebs_root_volume_size int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2_attributes ClusterEc2AttributesArgs
    Attributes for the EC2 instances running the job flow. See below.
    keep_job_flow_alive_when_no_steps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberos_attributes ClusterKerberosAttributesArgs
    Kerberos configuration for the cluster. See below.
    list_steps_states Sequence[str]
    List of step states used to filter returned steps
    log_encryption_kms_key_id str
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    log_uri str
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    master_instance_fleet ClusterMasterInstanceFleetArgs
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    master_instance_group ClusterMasterInstanceGroupArgs
    Configuration block to use an Instance Group for the master node type.
    name str
    Name of the job flow.
    placement_group_configs Sequence[ClusterPlacementGroupConfigArgs]
    The specified placement group configuration for an Amazon EMR cluster.
    scale_down_behavior str
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    security_configuration str
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    step_concurrency_level int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps Sequence[ClusterStepArgs]
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Mapping[str, str]
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    termination_protection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthy_node_replacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visible_to_all_users bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    releaseLabel String
    Release label for the Amazon EMR release.
    serviceRole String

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    additionalInfo String
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications List<String>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    autoTerminationPolicy Property Map
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole String
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions List<Property Map>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    configurations String
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson String

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet Property Map
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup Property Map
    Configuration block to use an Instance Group for the core node type.
    customAmiId String
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize Number
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes Property Map
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps Boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes Property Map
    Kerberos configuration for the cluster. See below.
    listStepsStates List<String>
    List of step states used to filter returned steps
    logEncryptionKmsKeyId String
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri String
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet Property Map
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup Property Map
    Configuration block to use an Instance Group for the master node type.
    name String
    Name of the job flow.
    placementGroupConfigs List<Property Map>
    The specified placement group configuration for an Amazon EMR cluster.
    scaleDownBehavior String
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration String
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    stepConcurrencyLevel Number
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps List<Property Map>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Map<String>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    terminationProtection Boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement Boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers Boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Cluster resource produces the following output properties:

    Arn string
    ARN of the cluster.
    Id string
    The provider-assigned unique ID for this managed resource.
    MasterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    State string
    TagsAll Dictionary<string, string>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Arn string
    ARN of the cluster.
    ClusterState string
    Id string
    The provider-assigned unique ID for this managed resource.
    MasterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    TagsAll map[string]string
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    ARN of the cluster.
    clusterState String
    id String
    The provider-assigned unique ID for this managed resource.
    masterPublicDns String
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    tagsAll Map<String,String>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn string
    ARN of the cluster.
    clusterState string
    id string
    The provider-assigned unique ID for this managed resource.
    masterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    tagsAll {[key: string]: string}
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn str
    ARN of the cluster.
    cluster_state str
    id str
    The provider-assigned unique ID for this managed resource.
    master_public_dns str
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    tags_all Mapping[str, str]
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    ARN of the cluster.
    clusterState String
    id String
    The provider-assigned unique ID for this managed resource.
    masterPublicDns String
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    tagsAll Map<String>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Look up Existing Cluster Resource

    Get an existing Cluster resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ClusterState, opts?: CustomResourceOptions): Cluster
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            additional_info: Optional[str] = None,
            applications: Optional[Sequence[str]] = None,
            arn: Optional[str] = None,
            auto_termination_policy: Optional[ClusterAutoTerminationPolicyArgs] = None,
            autoscaling_role: Optional[str] = None,
            bootstrap_actions: Optional[Sequence[ClusterBootstrapActionArgs]] = None,
            cluster_state: Optional[str] = None,
            configurations: Optional[str] = None,
            configurations_json: Optional[str] = None,
            core_instance_fleet: Optional[ClusterCoreInstanceFleetArgs] = None,
            core_instance_group: Optional[ClusterCoreInstanceGroupArgs] = None,
            custom_ami_id: Optional[str] = None,
            ebs_root_volume_size: Optional[int] = None,
            ec2_attributes: Optional[ClusterEc2AttributesArgs] = None,
            keep_job_flow_alive_when_no_steps: Optional[bool] = None,
            kerberos_attributes: Optional[ClusterKerberosAttributesArgs] = None,
            list_steps_states: Optional[Sequence[str]] = None,
            log_encryption_kms_key_id: Optional[str] = None,
            log_uri: Optional[str] = None,
            master_instance_fleet: Optional[ClusterMasterInstanceFleetArgs] = None,
            master_instance_group: Optional[ClusterMasterInstanceGroupArgs] = None,
            master_public_dns: Optional[str] = None,
            name: Optional[str] = None,
            placement_group_configs: Optional[Sequence[ClusterPlacementGroupConfigArgs]] = None,
            release_label: Optional[str] = None,
            scale_down_behavior: Optional[str] = None,
            security_configuration: Optional[str] = None,
            service_role: Optional[str] = None,
            step_concurrency_level: Optional[int] = None,
            steps: Optional[Sequence[ClusterStepArgs]] = None,
            tags: Optional[Mapping[str, str]] = None,
            tags_all: Optional[Mapping[str, str]] = None,
            termination_protection: Optional[bool] = None,
            unhealthy_node_replacement: Optional[bool] = None,
            visible_to_all_users: Optional[bool] = None) -> Cluster
    func GetCluster(ctx *Context, name string, id IDInput, state *ClusterState, opts ...ResourceOption) (*Cluster, error)
    public static Cluster Get(string name, Input<string> id, ClusterState? state, CustomResourceOptions? opts = null)
    public static Cluster get(String name, Output<String> id, ClusterState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AdditionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    Applications List<string>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    Arn string
    ARN of the cluster.
    AutoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    AutoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    BootstrapActions List<ClusterBootstrapAction>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    Configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    ConfigurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    CoreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    CoreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    CustomAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    EbsRootVolumeSize int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    Ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    KeepJobFlowAliveWhenNoSteps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    KerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    ListStepsStates List<string>
    List of step states used to filter returned steps
    LogEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    LogUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    MasterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    MasterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    MasterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    Name string
    Name of the job flow.
    PlacementGroupConfigs List<ClusterPlacementGroupConfig>
    The specified placement group configuration for an Amazon EMR cluster.
    ReleaseLabel string
    Release label for the Amazon EMR release.
    ScaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    SecurityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    ServiceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    State string
    StepConcurrencyLevel int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    Steps List<ClusterStep>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    Tags Dictionary<string, string>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TagsAll Dictionary<string, string>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    TerminationProtection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    UnhealthyNodeReplacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    VisibleToAllUsers bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    AdditionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    Applications []string
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    Arn string
    ARN of the cluster.
    AutoTerminationPolicy ClusterAutoTerminationPolicyArgs
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    AutoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    BootstrapActions []ClusterBootstrapActionArgs
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    ClusterState string
    Configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    ConfigurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    CoreInstanceFleet ClusterCoreInstanceFleetArgs
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    CoreInstanceGroup ClusterCoreInstanceGroupArgs
    Configuration block to use an Instance Group for the core node type.
    CustomAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    EbsRootVolumeSize int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    Ec2Attributes ClusterEc2AttributesArgs
    Attributes for the EC2 instances running the job flow. See below.
    KeepJobFlowAliveWhenNoSteps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    KerberosAttributes ClusterKerberosAttributesArgs
    Kerberos configuration for the cluster. See below.
    ListStepsStates []string
    List of step states used to filter returned steps
    LogEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    LogUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    MasterInstanceFleet ClusterMasterInstanceFleetArgs
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    MasterInstanceGroup ClusterMasterInstanceGroupArgs
    Configuration block to use an Instance Group for the master node type.
    MasterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    Name string
    Name of the job flow.
    PlacementGroupConfigs []ClusterPlacementGroupConfigArgs
    The specified placement group configuration for an Amazon EMR cluster.
    ReleaseLabel string
    Release label for the Amazon EMR release.
    ScaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    SecurityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    ServiceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    StepConcurrencyLevel int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    Steps []ClusterStepArgs
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    Tags map[string]string
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TagsAll map[string]string
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    TerminationProtection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    UnhealthyNodeReplacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    VisibleToAllUsers bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    additionalInfo String
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications List<String>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    arn String
    ARN of the cluster.
    autoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole String
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions List<ClusterBootstrapAction>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    clusterState String
    configurations String
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson String

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    customAmiId String
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize Integer
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps Boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    listStepsStates List<String>
    List of step states used to filter returned steps
    logEncryptionKmsKeyId String
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri String
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    masterPublicDns String
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    name String
    Name of the job flow.
    placementGroupConfigs List<ClusterPlacementGroupConfig>
    The specified placement group configuration for an Amazon EMR cluster.
    releaseLabel String
    Release label for the Amazon EMR release.
    scaleDownBehavior String
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration String
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    serviceRole String

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    stepConcurrencyLevel Integer
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps List<ClusterStep>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Map<String,String>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll Map<String,String>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    terminationProtection Boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement Boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers Boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    additionalInfo string
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications string[]
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    arn string
    ARN of the cluster.
    autoTerminationPolicy ClusterAutoTerminationPolicy
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole string
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions ClusterBootstrapAction[]
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    clusterState string
    configurations string
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson string

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet ClusterCoreInstanceFleet
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup ClusterCoreInstanceGroup
    Configuration block to use an Instance Group for the core node type.
    customAmiId string
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize number
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes ClusterEc2Attributes
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes ClusterKerberosAttributes
    Kerberos configuration for the cluster. See below.
    listStepsStates string[]
    List of step states used to filter returned steps
    logEncryptionKmsKeyId string
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri string
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet ClusterMasterInstanceFleet
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup ClusterMasterInstanceGroup
    Configuration block to use an Instance Group for the master node type.
    masterPublicDns string
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    name string
    Name of the job flow.
    placementGroupConfigs ClusterPlacementGroupConfig[]
    The specified placement group configuration for an Amazon EMR cluster.
    releaseLabel string
    Release label for the Amazon EMR release.
    scaleDownBehavior string
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration string
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    serviceRole string

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    stepConcurrencyLevel number
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps ClusterStep[]
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags {[key: string]: string}
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll {[key: string]: string}
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    terminationProtection boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    additional_info str
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications Sequence[str]
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    arn str
    ARN of the cluster.
    auto_termination_policy ClusterAutoTerminationPolicyArgs
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscaling_role str
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrap_actions Sequence[ClusterBootstrapActionArgs]
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    cluster_state str
    configurations str
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurations_json str

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    core_instance_fleet ClusterCoreInstanceFleetArgs
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    core_instance_group ClusterCoreInstanceGroupArgs
    Configuration block to use an Instance Group for the core node type.
    custom_ami_id str
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebs_root_volume_size int
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2_attributes ClusterEc2AttributesArgs
    Attributes for the EC2 instances running the job flow. See below.
    keep_job_flow_alive_when_no_steps bool
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberos_attributes ClusterKerberosAttributesArgs
    Kerberos configuration for the cluster. See below.
    list_steps_states Sequence[str]
    List of step states used to filter returned steps
    log_encryption_kms_key_id str
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    log_uri str
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    master_instance_fleet ClusterMasterInstanceFleetArgs
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    master_instance_group ClusterMasterInstanceGroupArgs
    Configuration block to use an Instance Group for the master node type.
    master_public_dns str
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    name str
    Name of the job flow.
    placement_group_configs Sequence[ClusterPlacementGroupConfigArgs]
    The specified placement group configuration for an Amazon EMR cluster.
    release_label str
    Release label for the Amazon EMR release.
    scale_down_behavior str
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    security_configuration str
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    service_role str

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    step_concurrency_level int
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps Sequence[ClusterStepArgs]
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Mapping[str, str]
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tags_all Mapping[str, str]
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    termination_protection bool
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthy_node_replacement bool
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visible_to_all_users bool
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.
    additionalInfo String
    JSON string for selecting additional features such as adding proxy information. Note: Currently there is no API to retrieve the value of this argument after EMR cluster creation from provider, therefore the provider cannot detect drift from the actual EMR cluster if its value is changed outside the provider.
    applications List<String>
    A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the Amazon EMR Release Guide.
    arn String
    ARN of the cluster.
    autoTerminationPolicy Property Map
    An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. See Auto Termination Policy Below.
    autoscalingRole String
    IAM role for automatic scaling policies. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.
    bootstrapActions List<Property Map>
    Ordered list of bootstrap actions that will be run before Hadoop is started on the cluster nodes. See below.
    clusterState String
    configurations String
    List of configurations supplied for the EMR cluster you are creating. Supply a configuration object for applications to override their default configuration. See AWS Documentation for more information.
    configurationsJson String

    JSON string for supplying list of configurations for the EMR cluster.

    NOTE on configurations_json: If the Configurations value is empty then you should skip the Configurations field instead of providing an empty list as a value, "Configurations": [].

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const cluster = new aws.emr.Cluster("cluster", {configurationsJson: [ { &quot;Classification&quot;: &quot;hadoop-env&quot;, &quot;Configurations&quot;: [ { &quot;Classification&quot;: &quot;export&quot;, &quot;Properties&quot;: { &quot;JAVA_HOME&quot;: &quot;/usr/lib/jvm/java-1.8.0&quot; } } ], &quot;Properties&quot;: {} } ] });

    import pulumi
    import pulumi_aws as aws
    
    cluster = aws.emr.Cluster("cluster", configurations_json="""[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    """)
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var cluster = new Aws.Emr.Cluster("cluster", new()
        {
            ConfigurationsJson = @"[
    {
    ""Classification"": ""hadoop-env"",
    ""Configurations"": [
    {
    ""Classification"": ""export"",
    ""Properties"": {
    ""JAVA_HOME"": ""/usr/lib/jvm/java-1.8.0""
    }
    }
    ],
    ""Properties"": {}
    }
    ]
    ",
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := emr.NewCluster(ctx, "cluster", &emr.ClusterArgs{
    			ConfigurationsJson: pulumi.String(`[
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.emr.Cluster;
    import com.pulumi.aws.emr.ClusterArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var cluster = new Cluster("cluster", ClusterArgs.builder()
                .configurationsJson("""
    [
    {
    "Classification": "hadoop-env",
    "Configurations": [
    {
    "Classification": "export",
    "Properties": {
    "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    }
    }
    ],
    "Properties": {}
    }
    ]
                """)
                .build());
    
        }
    }
    
    resources:
      cluster:
        type: aws:emr:Cluster
        properties:
          configurationsJson: |
            [
            {
            "Classification": "hadoop-env",
            "Configurations": [
            {
            "Classification": "export",
            "Properties": {
            "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
            }
            ],
            "Properties": {}
            }
            ]
    
    coreInstanceFleet Property Map
    Configuration block to use an Instance Fleet for the core node type. Cannot be specified if any core_instance_group configuration blocks are set. Detailed below.
    coreInstanceGroup Property Map
    Configuration block to use an Instance Group for the core node type.
    customAmiId String
    Custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.
    ebsRootVolumeSize Number
    Size in GiB of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.
    ec2Attributes Property Map
    Attributes for the EC2 instances running the job flow. See below.
    keepJobFlowAliveWhenNoSteps Boolean
    Switch on/off run cluster with no steps or when all steps are complete (default is on)
    kerberosAttributes Property Map
    Kerberos configuration for the cluster. See below.
    listStepsStates List<String>
    List of step states used to filter returned steps
    logEncryptionKmsKeyId String
    AWS KMS customer master key (CMK) key ID or arn used for encrypting log files. This attribute is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
    logUri String
    S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created.
    masterInstanceFleet Property Map
    Configuration block to use an Instance Fleet for the master node type. Cannot be specified if any master_instance_group configuration blocks are set. Detailed below.
    masterInstanceGroup Property Map
    Configuration block to use an Instance Group for the master node type.
    masterPublicDns String
    The DNS name of the master node. If the cluster is on a private subnet, this is the private DNS name. On a public subnet, this is the public DNS name.
    name String
    Name of the job flow.
    placementGroupConfigs List<Property Map>
    The specified placement group configuration for an Amazon EMR cluster.
    releaseLabel String
    Release label for the Amazon EMR release.
    scaleDownBehavior String
    Way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.
    securityConfiguration String
    Security configuration name to attach to the EMR cluster. Only valid for EMR clusters with release_label 4.8.0 or greater.
    serviceRole String

    IAM role that will be assumed by the Amazon EMR service to access AWS resources.

    The following arguments are optional:

    stepConcurrencyLevel Number
    Number of steps that can be executed concurrently. You can specify a maximum of 256 steps. Only valid for EMR clusters with release_label 5.28.0 or greater (default is 1).
    steps List<Property Map>
    List of steps to run when creating the cluster. See below. It is highly recommended to utilize the lifecycle resource options block with ignoreChanges if other steps are being managed outside of this provider.
    tags Map<String>
    list of tags to apply to the EMR Cluster. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll Map<String>
    Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    terminationProtection Boolean
    Switch on/off termination protection (default is false, except when using multiple master nodes). Before attempting to destroy the resource when termination protection is enabled, this configuration must be applied with its value set to false.
    unhealthyNodeReplacement Boolean
    Whether whether Amazon EMR should gracefully replace core nodes that have degraded within the cluster. Default value is false.
    visibleToAllUsers Boolean
    Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default value is true.

    Supporting Types

    ClusterAutoTerminationPolicy, ClusterAutoTerminationPolicyArgs

    IdleTimeout int
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).
    IdleTimeout int
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).
    idleTimeout Integer
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).
    idleTimeout number
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).
    idle_timeout int
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).
    idleTimeout Number
    Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).

    ClusterBootstrapAction, ClusterBootstrapActionArgs

    Name string
    Name of the bootstrap action.
    Path string
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    Args List<string>
    List of command line arguments to pass to the bootstrap action script.
    Name string
    Name of the bootstrap action.
    Path string
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    Args []string
    List of command line arguments to pass to the bootstrap action script.
    name String
    Name of the bootstrap action.
    path String
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    args List<String>
    List of command line arguments to pass to the bootstrap action script.
    name string
    Name of the bootstrap action.
    path string
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    args string[]
    List of command line arguments to pass to the bootstrap action script.
    name str
    Name of the bootstrap action.
    path str
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    args Sequence[str]
    List of command line arguments to pass to the bootstrap action script.
    name String
    Name of the bootstrap action.
    path String
    Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.
    args List<String>
    List of command line arguments to pass to the bootstrap action script.

    ClusterCoreInstanceFleet, ClusterCoreInstanceFleetArgs

    Id string
    ID of the cluster.
    InstanceTypeConfigs List<ClusterCoreInstanceFleetInstanceTypeConfig>
    Configuration block for instance fleet.
    LaunchSpecifications ClusterCoreInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    Name string
    Friendly name given to the instance fleet.
    ProvisionedOnDemandCapacity int
    ProvisionedSpotCapacity int
    TargetOnDemandCapacity int
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    TargetSpotCapacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    Id string
    ID of the cluster.
    InstanceTypeConfigs []ClusterCoreInstanceFleetInstanceTypeConfig
    Configuration block for instance fleet.
    LaunchSpecifications ClusterCoreInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    Name string
    Friendly name given to the instance fleet.
    ProvisionedOnDemandCapacity int
    ProvisionedSpotCapacity int
    TargetOnDemandCapacity int
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    TargetSpotCapacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id String
    ID of the cluster.
    instanceTypeConfigs List<ClusterCoreInstanceFleetInstanceTypeConfig>
    Configuration block for instance fleet.
    launchSpecifications ClusterCoreInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name String
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity Integer
    provisionedSpotCapacity Integer
    targetOnDemandCapacity Integer
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity Integer
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id string
    ID of the cluster.
    instanceTypeConfigs ClusterCoreInstanceFleetInstanceTypeConfig[]
    Configuration block for instance fleet.
    launchSpecifications ClusterCoreInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name string
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity number
    provisionedSpotCapacity number
    targetOnDemandCapacity number
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity number
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id str
    ID of the cluster.
    instance_type_configs Sequence[ClusterCoreInstanceFleetInstanceTypeConfig]
    Configuration block for instance fleet.
    launch_specifications ClusterCoreInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name str
    Friendly name given to the instance fleet.
    provisioned_on_demand_capacity int
    provisioned_spot_capacity int
    target_on_demand_capacity int
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    target_spot_capacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id String
    ID of the cluster.
    instanceTypeConfigs List<Property Map>
    Configuration block for instance fleet.
    launchSpecifications Property Map
    Configuration block for launch specification.
    name String
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity Number
    provisionedSpotCapacity Number
    targetOnDemandCapacity Number
    The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity Number
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.

    ClusterCoreInstanceFleetInstanceTypeConfig, ClusterCoreInstanceFleetInstanceTypeConfigArgs

    InstanceType string
    EC2 instance type, such as m4.xlarge.
    BidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    BidPriceAsPercentageOfOnDemandPrice double
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    Configurations List<ClusterCoreInstanceFleetInstanceTypeConfigConfiguration>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    EbsConfigs List<ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    WeightedCapacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    InstanceType string
    EC2 instance type, such as m4.xlarge.
    BidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    BidPriceAsPercentageOfOnDemandPrice float64
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    Configurations []ClusterCoreInstanceFleetInstanceTypeConfigConfiguration
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    EbsConfigs []ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    WeightedCapacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType String
    EC2 instance type, such as m4.xlarge.
    bidPrice String
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice Double
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations List<ClusterCoreInstanceFleetInstanceTypeConfigConfiguration>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs List<ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity Integer
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType string
    EC2 instance type, such as m4.xlarge.
    bidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice number
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations ClusterCoreInstanceFleetInstanceTypeConfigConfiguration[]
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig[]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity number
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instance_type str
    EC2 instance type, such as m4.xlarge.
    bid_price str
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bid_price_as_percentage_of_on_demand_price float
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations Sequence[ClusterCoreInstanceFleetInstanceTypeConfigConfiguration]
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebs_configs Sequence[ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weighted_capacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType String
    EC2 instance type, such as m4.xlarge.
    bidPrice String
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice Number
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations List<Property Map>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs List<Property Map>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity Number
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.

    ClusterCoreInstanceFleetInstanceTypeConfigConfiguration, ClusterCoreInstanceFleetInstanceTypeConfigConfigurationArgs

    Classification string
    Classification within a configuration.
    Properties Dictionary<string, string>
    Map of properties specified within a configuration classification.
    Classification string
    Classification within a configuration.
    Properties map[string]string
    Map of properties specified within a configuration classification.
    classification String
    Classification within a configuration.
    properties Map<String,String>
    Map of properties specified within a configuration classification.
    classification string
    Classification within a configuration.
    properties {[key: string]: string}
    Map of properties specified within a configuration classification.
    classification str
    Classification within a configuration.
    properties Mapping[str, str]
    Map of properties specified within a configuration classification.
    classification String
    Classification within a configuration.
    properties Map<String>
    Map of properties specified within a configuration classification.

    ClusterCoreInstanceFleetInstanceTypeConfigEbsConfig, ClusterCoreInstanceFleetInstanceTypeConfigEbsConfigArgs

    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size Integer
    Volume size, in gibibytes (GiB).
    type String
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops Integer
    Number of I/O operations per second (IOPS) that the volume supports.
    volumesPerInstance Integer
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size number
    Volume size, in gibibytes (GiB).
    type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops number
    Number of I/O operations per second (IOPS) that the volume supports.
    volumesPerInstance number
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size int
    Volume size, in gibibytes (GiB).
    type str
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    volumes_per_instance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size Number
    Volume size, in gibibytes (GiB).
    type String
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops Number
    Number of I/O operations per second (IOPS) that the volume supports.
    volumesPerInstance Number
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).

    ClusterCoreInstanceFleetLaunchSpecifications, ClusterCoreInstanceFleetLaunchSpecificationsArgs

    OnDemandSpecifications List<ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification>
    Configuration block for on demand instances launch specifications.
    SpotSpecifications List<ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification>
    Configuration block for spot instances launch specifications.
    OnDemandSpecifications []ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification
    Configuration block for on demand instances launch specifications.
    SpotSpecifications []ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification
    Configuration block for spot instances launch specifications.
    onDemandSpecifications List<ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification>
    Configuration block for on demand instances launch specifications.
    spotSpecifications List<ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification>
    Configuration block for spot instances launch specifications.
    onDemandSpecifications ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification[]
    Configuration block for on demand instances launch specifications.
    spotSpecifications ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification[]
    Configuration block for spot instances launch specifications.
    on_demand_specifications Sequence[ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification]
    Configuration block for on demand instances launch specifications.
    spot_specifications Sequence[ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification]
    Configuration block for spot instances launch specifications.
    onDemandSpecifications List<Property Map>
    Configuration block for on demand instances launch specifications.
    spotSpecifications List<Property Map>
    Configuration block for spot instances launch specifications.

    ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecification, ClusterCoreInstanceFleetLaunchSpecificationsOnDemandSpecificationArgs

    AllocationStrategy string
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.
    AllocationStrategy string
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.
    allocationStrategy String
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.
    allocationStrategy string
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.
    allocation_strategy str
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.
    allocationStrategy String
    Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first.

    ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecification, ClusterCoreInstanceFleetLaunchSpecificationsSpotSpecificationArgs

    AllocationStrategy string
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    TimeoutAction string
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    TimeoutDurationMinutes int
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    BlockDurationMinutes int
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.
    AllocationStrategy string
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    TimeoutAction string
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    TimeoutDurationMinutes int
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    BlockDurationMinutes int
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.
    allocationStrategy String
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    timeoutAction String
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    timeoutDurationMinutes Integer
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    blockDurationMinutes Integer
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.
    allocationStrategy string
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    timeoutAction string
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    timeoutDurationMinutes number
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    blockDurationMinutes number
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.
    allocation_strategy str
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    timeout_action str
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    timeout_duration_minutes int
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    block_duration_minutes int
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.
    allocationStrategy String
    Specifies the strategy to use in launching Spot instance fleets. Valid values include capacity-optimized, diversified, lowest-price, price-capacity-optimized. See the AWS documentation for details on each strategy type.
    timeoutAction String
    Action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired; that is, when all Spot instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.
    timeoutDurationMinutes Number
    Spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.
    blockDurationMinutes Number
    Defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.

    ClusterCoreInstanceGroup, ClusterCoreInstanceGroupArgs

    InstanceType string
    EC2 instance type for all instances in the instance group.
    AutoscalingPolicy string
    String containing the EMR Auto Scaling Policy JSON.
    BidPrice string
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    EbsConfigs List<ClusterCoreInstanceGroupEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    Id string
    Core node type Instance Group ID, if using Instance Group for this node type.
    InstanceCount int
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    Name string
    Friendly name given to the instance group.
    InstanceType string
    EC2 instance type for all instances in the instance group.
    AutoscalingPolicy string
    String containing the EMR Auto Scaling Policy JSON.
    BidPrice string
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    EbsConfigs []ClusterCoreInstanceGroupEbsConfig
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    Id string
    Core node type Instance Group ID, if using Instance Group for this node type.
    InstanceCount int
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    Name string
    Friendly name given to the instance group.
    instanceType String
    EC2 instance type for all instances in the instance group.
    autoscalingPolicy String
    String containing the EMR Auto Scaling Policy JSON.
    bidPrice String
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    ebsConfigs List<ClusterCoreInstanceGroupEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    id String
    Core node type Instance Group ID, if using Instance Group for this node type.
    instanceCount Integer
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    name String
    Friendly name given to the instance group.
    instanceType string
    EC2 instance type for all instances in the instance group.
    autoscalingPolicy string
    String containing the EMR Auto Scaling Policy JSON.
    bidPrice string
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    ebsConfigs ClusterCoreInstanceGroupEbsConfig[]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    id string
    Core node type Instance Group ID, if using Instance Group for this node type.
    instanceCount number
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    name string
    Friendly name given to the instance group.
    instance_type str
    EC2 instance type for all instances in the instance group.
    autoscaling_policy str
    String containing the EMR Auto Scaling Policy JSON.
    bid_price str
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    ebs_configs Sequence[ClusterCoreInstanceGroupEbsConfig]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    id str
    Core node type Instance Group ID, if using Instance Group for this node type.
    instance_count int
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    name str
    Friendly name given to the instance group.
    instanceType String
    EC2 instance type for all instances in the instance group.
    autoscalingPolicy String
    String containing the EMR Auto Scaling Policy JSON.
    bidPrice String
    Bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    ebsConfigs List<Property Map>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    id String
    Core node type Instance Group ID, if using Instance Group for this node type.
    instanceCount Number
    Target number of instances for the instance group. Must be at least 1. Defaults to 1.
    name String
    Friendly name given to the instance group.

    ClusterCoreInstanceGroupEbsConfig, ClusterCoreInstanceGroupEbsConfigArgs

    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    Throughput int
    The throughput, in mebibyte per second (MiB/s).
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    Throughput int
    The throughput, in mebibyte per second (MiB/s).
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size Integer
    Volume size, in gibibytes (GiB).
    type String
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops Integer
    Number of I/O operations per second (IOPS) that the volume supports.
    throughput Integer
    The throughput, in mebibyte per second (MiB/s).
    volumesPerInstance Integer
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size number
    Volume size, in gibibytes (GiB).
    type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops number
    Number of I/O operations per second (IOPS) that the volume supports.
    throughput number
    The throughput, in mebibyte per second (MiB/s).
    volumesPerInstance number
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size int
    Volume size, in gibibytes (GiB).
    type str
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    throughput int
    The throughput, in mebibyte per second (MiB/s).
    volumes_per_instance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size Number
    Volume size, in gibibytes (GiB).
    type String
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops Number
    Number of I/O operations per second (IOPS) that the volume supports.
    throughput Number
    The throughput, in mebibyte per second (MiB/s).
    volumesPerInstance Number
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).

    ClusterEc2Attributes, ClusterEc2AttributesArgs

    InstanceProfile string
    Instance Profile for EC2 instances of the cluster assume this role.
    AdditionalMasterSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    AdditionalSlaveSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    EmrManagedMasterSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    EmrManagedSlaveSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    KeyName string
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    ServiceAccessSecurityGroup string
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    SubnetId string
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    SubnetIds List<string>

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    InstanceProfile string
    Instance Profile for EC2 instances of the cluster assume this role.
    AdditionalMasterSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    AdditionalSlaveSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    EmrManagedMasterSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    EmrManagedSlaveSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    KeyName string
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    ServiceAccessSecurityGroup string
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    SubnetId string
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    SubnetIds []string

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    instanceProfile String
    Instance Profile for EC2 instances of the cluster assume this role.
    additionalMasterSecurityGroups String
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    additionalSlaveSecurityGroups String
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    emrManagedMasterSecurityGroup String
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    emrManagedSlaveSecurityGroup String
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    keyName String
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    serviceAccessSecurityGroup String
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    subnetId String
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    subnetIds List<String>

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    instanceProfile string
    Instance Profile for EC2 instances of the cluster assume this role.
    additionalMasterSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    additionalSlaveSecurityGroups string
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    emrManagedMasterSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    emrManagedSlaveSecurityGroup string
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    keyName string
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    serviceAccessSecurityGroup string
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    subnetId string
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    subnetIds string[]

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    instance_profile str
    Instance Profile for EC2 instances of the cluster assume this role.
    additional_master_security_groups str
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    additional_slave_security_groups str
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    emr_managed_master_security_group str
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    emr_managed_slave_security_group str
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    key_name str
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    service_access_security_group str
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    subnet_id str
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    subnet_ids Sequence[str]

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    instanceProfile String
    Instance Profile for EC2 instances of the cluster assume this role.
    additionalMasterSecurityGroups String
    String containing a comma separated list of additional Amazon EC2 security group IDs for the master node.
    additionalSlaveSecurityGroups String
    String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string.
    emrManagedMasterSecurityGroup String
    Identifier of the Amazon EC2 EMR-Managed security group for the master node.
    emrManagedSlaveSecurityGroup String
    Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes.
    keyName String
    Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop.
    serviceAccessSecurityGroup String
    Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet.
    subnetId String
    VPC subnet id where you want the job flow to launch. Cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in an Amazon VPC.
    subnetIds List<String>

    List of VPC subnet id-s where you want the job flow to launch. Amazon EMR identifies the best Availability Zone to launch instances according to your fleet specifications.

    NOTE on EMR-Managed security groups: These security groups will have any missing inbound or outbound access rules added and maintained by AWS, to ensure proper communication between instances in a cluster. The EMR service will maintain these rules for groups provided in emr_managed_master_security_group and emr_managed_slave_security_group; attempts to remove the required rules may succeed, only for the EMR service to re-add them in a matter of minutes. This may cause this provider to fail to destroy an environment that contains an EMR cluster, because the EMR service does not revoke rules added on deletion, leaving a cyclic dependency between the security groups that prevents their deletion. To avoid this, use the revoke_rules_on_delete optional attribute for any Security Group used in emr_managed_master_security_group and emr_managed_slave_security_group. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

    ClusterKerberosAttributes, ClusterKerberosAttributesArgs

    KdcAdminPassword string
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    Realm string
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    AdDomainJoinPassword string
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    AdDomainJoinUser string
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    CrossRealmTrustPrincipalPassword string
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.
    KdcAdminPassword string
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    Realm string
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    AdDomainJoinPassword string
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    AdDomainJoinUser string
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    CrossRealmTrustPrincipalPassword string
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.
    kdcAdminPassword String
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    realm String
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    adDomainJoinPassword String
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    adDomainJoinUser String
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    crossRealmTrustPrincipalPassword String
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.
    kdcAdminPassword string
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    realm string
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    adDomainJoinPassword string
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    adDomainJoinUser string
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    crossRealmTrustPrincipalPassword string
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.
    kdc_admin_password str
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    realm str
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    ad_domain_join_password str
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    ad_domain_join_user str
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    cross_realm_trust_principal_password str
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.
    kdcAdminPassword String
    Password used within the cluster for the kadmin service on the cluster-dedicated KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster. This provider cannot perform drift detection of this configuration.
    realm String
    Name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL
    adDomainJoinPassword String
    Active Directory password for ad_domain_join_user. This provider cannot perform drift detection of this configuration.
    adDomainJoinUser String
    Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join resources to the domain. This provider cannot perform drift detection of this configuration.
    crossRealmTrustPrincipalPassword String
    Required only when establishing a cross-realm trust with a KDC in a different realm. The cross-realm principal password, which must be identical across realms. This provider cannot perform drift detection of this configuration.

    ClusterMasterInstanceFleet, ClusterMasterInstanceFleetArgs

    Id string
    ID of the cluster.
    InstanceTypeConfigs List<ClusterMasterInstanceFleetInstanceTypeConfig>
    Configuration block for instance fleet.
    LaunchSpecifications ClusterMasterInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    Name string
    Friendly name given to the instance fleet.
    ProvisionedOnDemandCapacity int
    ProvisionedSpotCapacity int
    TargetOnDemandCapacity int
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    TargetSpotCapacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    Id string
    ID of the cluster.
    InstanceTypeConfigs []ClusterMasterInstanceFleetInstanceTypeConfig
    Configuration block for instance fleet.
    LaunchSpecifications ClusterMasterInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    Name string
    Friendly name given to the instance fleet.
    ProvisionedOnDemandCapacity int
    ProvisionedSpotCapacity int
    TargetOnDemandCapacity int
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    TargetSpotCapacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id String
    ID of the cluster.
    instanceTypeConfigs List<ClusterMasterInstanceFleetInstanceTypeConfig>
    Configuration block for instance fleet.
    launchSpecifications ClusterMasterInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name String
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity Integer
    provisionedSpotCapacity Integer
    targetOnDemandCapacity Integer
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity Integer
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id string
    ID of the cluster.
    instanceTypeConfigs ClusterMasterInstanceFleetInstanceTypeConfig[]
    Configuration block for instance fleet.
    launchSpecifications ClusterMasterInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name string
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity number
    provisionedSpotCapacity number
    targetOnDemandCapacity number
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity number
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id str
    ID of the cluster.
    instance_type_configs Sequence[ClusterMasterInstanceFleetInstanceTypeConfig]
    Configuration block for instance fleet.
    launch_specifications ClusterMasterInstanceFleetLaunchSpecifications
    Configuration block for launch specification.
    name str
    Friendly name given to the instance fleet.
    provisioned_on_demand_capacity int
    provisioned_spot_capacity int
    target_on_demand_capacity int
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    target_spot_capacity int
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
    id String
    ID of the cluster.
    instanceTypeConfigs List<Property Map>
    Configuration block for instance fleet.
    launchSpecifications Property Map
    Configuration block for launch specification.
    name String
    Friendly name given to the instance fleet.
    provisionedOnDemandCapacity Number
    provisionedSpotCapacity Number
    targetOnDemandCapacity Number
    Target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
    targetSpotCapacity Number
    Target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.

    ClusterMasterInstanceFleetInstanceTypeConfig, ClusterMasterInstanceFleetInstanceTypeConfigArgs

    InstanceType string
    EC2 instance type, such as m4.xlarge.
    BidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    BidPriceAsPercentageOfOnDemandPrice double
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    Configurations List<ClusterMasterInstanceFleetInstanceTypeConfigConfiguration>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    EbsConfigs List<ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    WeightedCapacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    InstanceType string
    EC2 instance type, such as m4.xlarge.
    BidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    BidPriceAsPercentageOfOnDemandPrice float64
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    Configurations []ClusterMasterInstanceFleetInstanceTypeConfigConfiguration
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    EbsConfigs []ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    WeightedCapacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType String
    EC2 instance type, such as m4.xlarge.
    bidPrice String
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice Double
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations List<ClusterMasterInstanceFleetInstanceTypeConfigConfiguration>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs List<ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity Integer
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType string
    EC2 instance type, such as m4.xlarge.
    bidPrice string
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice number
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations ClusterMasterInstanceFleetInstanceTypeConfigConfiguration[]
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig[]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity number
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instance_type str
    EC2 instance type, such as m4.xlarge.
    bid_price str
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bid_price_as_percentage_of_on_demand_price float
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations Sequence[ClusterMasterInstanceFleetInstanceTypeConfigConfiguration]
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebs_configs Sequence[ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig]
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weighted_capacity int
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.
    instanceType String
    EC2 instance type, such as m4.xlarge.
    bidPrice String
    Bid price for each EC2 Spot instance type as defined by instance_type. Expressed in USD. If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    bidPriceAsPercentageOfOnDemandPrice Number
    Bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by instance_type. Expressed as a number (for example, 20 specifies 20%). If neither bid_price nor bid_price_as_percentage_of_on_demand_price is provided, bid_price_as_percentage_of_on_demand_price defaults to 100%.
    configurations List<Property Map>
    Configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster. List of configuration blocks.
    ebsConfigs List<Property Map>
    Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
    weightedCapacity Number
    Number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in aws.emr.InstanceFleet.

    ClusterMasterInstanceFleetInstanceTypeConfigConfiguration, ClusterMasterInstanceFleetInstanceTypeConfigConfigurationArgs

    Classification string
    Classification within a configuration.
    Properties Dictionary<string, string>
    Map of properties specified within a configuration classification.
    Classification string
    Classification within a configuration.
    Properties map[string]string
    Map of properties specified within a configuration classification.
    classification String
    Classification within a configuration.
    properties Map<String,String>
    Map of properties specified within a configuration classification.
    classification string
    Classification within a configuration.
    properties {[key: string]: string}
    Map of properties specified within a configuration classification.
    classification str
    Classification within a configuration.
    properties Mapping[str, str]
    Map of properties specified within a configuration classification.
    classification String
    Classification within a configuration.
    properties Map<String>
    Map of properties specified within a configuration classification.

    ClusterMasterInstanceFleetInstanceTypeConfigEbsConfig, ClusterMasterInstanceFleetInstanceTypeConfigEbsConfigArgs

    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    Size int
    Volume size, in gibibytes (GiB).
    Type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    Iops int
    Number of I/O operations per second (IOPS) that the volume supports.
    VolumesPerInstance int
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size Integer
    Volume size, in gibibytes (GiB).
    type String
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops Integer
    Number of I/O operations per second (IOPS) that the volume supports.
    volumesPerInstance Integer
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).
    size number
    Volume size, in gibibytes (GiB).
    type string
    Volume type. Valid options are gp3, gp2, io1, io2, standard, st1 and sc1. See EBS Volume Types.
    iops number
    Number of I/O operations per second (IOPS) that the volume supports.
    volumesPerInstance number
    Number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1).