Module emr

@pulumi/aws > emr

This provider is a derived work of the Terraform Provider distributed under MPL 2.0. If you encounter a bug or missing feature, first check the pulumi/pulumi-aws repo; however, if that doesn’t turn up anything, please consult the source terraform-providers/terraform-provider-aws repo.

class Cluster

extends CustomResource

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.

Support for Instance Fleets will be made available in an upcoming release.

Example Usage

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

const cluster = new aws.emr.Cluster("cluster", {
    additionalInfo: `{
  "instanceAwsClientConfiguration": {
    "proxyPort": 8099,
    "proxyHost": "myproxy.example.com"
  }
}
`,
    applications: ["Spark"],
    bootstrapActions: [{
        args: [
            "instance.isMaster=true",
            "echo running on master node",
        ],
        name: "runif",
        path: "s3://elasticmapreduce/bootstrap-actions/run-if",
    }],
    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": {}
    }
  ]
`,
    coreInstanceGroup: {
        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"
      }
    }
  }
]
}
`,
        bidPrice: "0.30",
        ebsConfigs: [{
            size: 40,
            type: "gp2",
            volumesPerInstance: 1,
        }],
        instanceCount: 1,
        instanceType: "c4.large",
    },
    ebsRootVolumeSize: 100,
    ec2Attributes: {
        emrManagedMasterSecurityGroup: aws_security_group_sg.id,
        emrManagedSlaveSecurityGroup: aws_security_group_sg.id,
        instanceProfile: aws_iam_instance_profile_emr_profile.arn,
        subnetId: aws_subnet_main.id,
    },
    keepJobFlowAliveWhenNoSteps: true,
    masterInstanceGroup: {
        instanceType: "m4.large",
    },
    releaseLabel: "emr-4.6.0",
    serviceRole: aws_iam_role_iam_emr_service_role.arn,
    tags: {
        env: "env",
        role: "rolename",
    },
    terminationProtection: false,
});

The aws.emr.Cluster resource typically requires two IAM roles, one for the EMR Cluster to use as a service, and another to place on your Cluster Instances to interact with AWS from those instances. The suggested role policy template for the EMR service is AmazonElasticMapReduceRole, and AmazonElasticMapReduceforEC2Role for the EC2 profile. See the Getting Started guide for more information on these IAM roles. There is also a fully-bootable example this provider configuration at the bottom of this page.

Enable Debug Logging

Debug logging in EMR is implemented as a step. It is highly recommended to utilize the lifecycle configuration block 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",
        hadoopJarStep: {
            args: ["state-pusher-script"],
            jar: "command-runner.jar",
        },
        name: "Setup Hadoop Debugging",
    }],
});

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";

// Map public IP on launch must be enabled for public (Internet accessible) subnets
const exampleSubnet = new aws.ec2.Subnet("example", {
    mapPublicIpOnLaunch: true,
});
const exampleCluster = new aws.emr.Cluster("example", {
    // coreInstanceGroup must be configured
    coreInstanceGroup: {},
    ec2Attributes: {
        subnetId: exampleSubnet.id,
    },
    masterInstanceGroup: {
        // Master instance count must be set to 3
        instanceCount: 3,
    },
    // EMR version must be 5.23.0 or later
    releaseLabel: "emr-5.24.1",
    // Termination protection is automatically enabled for multiple masters
    // To destroy the cluster, this must be configured to false and applied first
    terminationProtection: true,
});

coreInstanceGroup Configuration Block

Supported arguments for the coreInstanceGroup configuration block:

  • instanceType - (Required) EC2 instance type for all instances in the instance group.
  • autoscalingPolicy - (Optional) String containing the EMR Auto Scaling Policy JSON.
  • bidPrice - (Optional) 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.
  • ebsConfig - (Optional) Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
  • instanceCount - (Optional) Target number of instances for the instance group. Must be at least 1. Defaults to 1.
  • name - (Optional) Friendly name given to the instance group.

ec2Attributes

Attributes for the Amazon EC2 instances running the job flow

  • keyName - (Optional) Amazon EC2 key pair that can be used to ssh to the master node as the user called hadoop
  • subnetId - (Optional) 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 a Amazon VPC
  • additionalMasterSecurityGroups - (Optional) String containing a comma separated list of additional Amazon EC2 security group IDs for the master node
  • additionalSlaveSecurityGroups - (Optional) String containing a comma separated list of additional Amazon EC2 security group IDs for the slave nodes as a comma separated string
  • emrManagedMasterSecurityGroup - (Optional) Identifier of the Amazon EC2 EMR-Managed security group for the master node
  • emrManagedSlaveSecurityGroup - (Optional) Identifier of the Amazon EC2 EMR-Managed security group for the slave nodes
  • serviceAccessSecurityGroup - (Optional) Identifier of the Amazon EC2 service-access security group - required when the cluster runs on a private subnet
  • instanceProfile - (Required) Instance Profile for EC2 instances of the cluster assume this role

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 emrManagedMasterSecurityGroup and emrManagedSlaveSecurityGroup; 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 revokeRulesOnDelete optional attribute for any Security Group used in emrManagedMasterSecurityGroup and emrManagedSlaveSecurityGroup. See Amazon EMR-Managed Security Groups for more information about the EMR-managed security group rules.

kerberosAttributes

Attributes for Kerberos configuration

  • adDomainJoinPassword - (Optional) The Active Directory password for adDomainJoinUser. This provider cannot perform drift detection of this configuration.
  • adDomainJoinUser - (Optional) 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 - (Optional) 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 - (Required) The 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 - (Required) The name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL

instanceGroup

Attributes for each task instance group in the cluster

  • instanceRole - (Required) The role of the instance group in the cluster. Valid values are: MASTER, CORE, and TASK.
  • instanceType - (Required) The EC2 instance type for all instances in the instance group
  • instanceCount - (Optional) Target number of instances for the instance group
  • name - (Optional) Friendly name given to the instance group
  • bidPrice - (Optional) If set, the 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.
  • ebsConfig - (Optional) A list of attributes for the EBS volumes attached to each instance in the instance group. Each ebsConfig defined will result in additional EBS volumes being attached to each instance in the instance group. Defined below
  • autoscalingPolicy - (Optional) The autoscaling policy document. This is a JSON formatted string. See EMR Auto Scaling

masterInstanceGroup Configuration Block

Supported nested arguments for the masterInstanceGroup configuration block:

  • instanceType - (Required) EC2 instance type for all instances in the instance group.
  • bidPrice - (Optional) 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.
  • ebsConfig - (Optional) Configuration block(s) for EBS volumes attached to each instance in the instance group. Detailed below.
  • instanceCount - (Optional) Target number of instances for the instance group. Must be 1 or 3. Defaults to 1. Launching with multiple master nodes is only supported in EMR version 5.23.0+, and requires this resource’s coreInstanceGroup to be configured. Public (Internet accessible) instances must be created in VPC subnets that have map public IP on launch enabled. Termination protection is automatically enabled when launched with multiple master nodes and this provider must have the terminationProtection = false configuration applied before destroying this resource.
  • name - (Optional) Friendly name given to the instance group.

ebsConfig

Attributes for the EBS volumes attached to each EC2 instance in the instanceGroup

  • size - (Required) The volume size, in gibibytes (GiB).
  • type - (Required) The volume type. Valid options are gp2, io1, standard and st1. See EBS Volume Types.
  • iops - (Optional) The number of I/O operations per second (IOPS) that the volume supports
  • volumesPerInstance - (Optional) The number of EBS volumes with this configuration to attach to each EC2 instance in the instance group (default is 1)

bootstrapAction

  • name - (Required) Name of the bootstrap action
  • path - (Required) 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 - (Optional) List of command line arguments to pass to the bootstrap action script

step

Attributes for step configuration

  • actionOnFailure - (Required) The action to take if the step fails. Valid values: TERMINATE_JOB_FLOW, TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE
  • hadoopJarStep - (Required) The JAR file used for the step. Defined below.
  • name - (Required) The name of the step.

hadoopJarStep

Attributes for Hadoop job step configuration

  • args - (Optional) List of command line arguments passed to the JAR file’s main function when executed.
  • jar - (Required) Path to a JAR file run during the step.
  • mainClass - (Optional) Name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.
  • properties - (Optional) Key-Value map of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.

Example bootable config

NOTE: This configuration demonstrates a minimal configuration needed to boot an example EMR Cluster. It is not meant to display best practices. Please use at your own risk.

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

// IAM Role for EC2 Instance Profile
const iamEmrProfileRole = new aws.iam.Role("iamEmrProfileRole", {
    assumeRolePolicy: `{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
`,
});
// IAM role for EMR Service
const iamEmrServiceRole = new aws.iam.Role("iamEmrServiceRole", {
    assumeRolePolicy: `{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "elasticmapreduce.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
`,
});
const mainVpc = new aws.ec2.Vpc("main", {
    cidrBlock: "168.31.0.0/16",
    enableDnsHostnames: true,
    tags: {
        name: "emrTest",
    },
});
const emrProfile = new aws.iam.InstanceProfile("emrProfile", {
    roles: [iamEmrProfileRole.name],
});
const mainSubnet = new aws.ec2.Subnet("main", {
    cidrBlock: "168.31.0.0/20",
    tags: {
        name: "emrTest",
    },
    vpcId: mainVpc.id,
});
const cluster = new aws.emr.Cluster("cluster", {
    applications: ["Spark"],
    bootstrapActions: [{
        args: [
            "instance.isMaster=true",
            "echo running on master node",
        ],
        name: "runif",
        path: "s3://elasticmapreduce/bootstrap-actions/run-if",
    }],
    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": {}
    }
  ]
`,
    coreInstanceCount: 1,
    coreInstanceType: "m5.xlarge",
    ec2Attributes: {
        emrManagedMasterSecurityGroup: aws_security_group_allow_all.id,
        emrManagedSlaveSecurityGroup: aws_security_group_allow_all.id,
        instanceProfile: emrProfile.arn,
        subnetId: mainSubnet.id,
    },
    masterInstanceType: "m5.xlarge",
    releaseLabel: "emr-4.6.0",
    serviceRole: iamEmrServiceRole.arn,
    tags: {
        dns_zone: "envZone",
        env: "env",
        name: "name-env",
        role: "rolename",
    },
});
const iamEmrProfilePolicy = new aws.iam.RolePolicy("iamEmrProfilePolicy", {
    policy: `{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Resource": "*",
        "Action": [
            "cloudwatch:*",
            "dynamodb:*",
            "ec2:Describe*",
            "elasticmapreduce:Describe*",
            "elasticmapreduce:ListBootstrapActions",
            "elasticmapreduce:ListClusters",
            "elasticmapreduce:ListInstanceGroups",
            "elasticmapreduce:ListInstances",
            "elasticmapreduce:ListSteps",
            "kinesis:CreateStream",
            "kinesis:DeleteStream",
            "kinesis:DescribeStream",
            "kinesis:GetRecords",
            "kinesis:GetShardIterator",
            "kinesis:MergeShards",
            "kinesis:PutRecord",
            "kinesis:SplitShard",
            "rds:Describe*",
            "s3:*",
            "sdb:*",
            "sns:*",
            "sqs:*"
        ]
    }]
}
`,
    role: iamEmrProfileRole.id,
});
const iamEmrServicePolicy = new aws.iam.RolePolicy("iamEmrServicePolicy", {
    policy: `{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Resource": "*",
        "Action": [
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:CancelSpotInstanceRequests",
            "ec2:CreateNetworkInterface",
            "ec2:CreateSecurityGroup",
            "ec2:CreateTags",
            "ec2:DeleteNetworkInterface",
            "ec2:DeleteSecurityGroup",
            "ec2:DeleteTags",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeInstanceStatus",
            "ec2:DescribeInstances",
            "ec2:DescribeKeyPairs",
            "ec2:DescribeNetworkAcls",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribePrefixLists",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSpotInstanceRequests",
            "ec2:DescribeSpotPriceHistory",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcAttribute",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcEndpointServices",
            "ec2:DescribeVpcs",
            "ec2:DetachNetworkInterface",
            "ec2:ModifyImageAttribute",
            "ec2:ModifyInstanceAttribute",
            "ec2:RequestSpotInstances",
            "ec2:RevokeSecurityGroupEgress",
            "ec2:RunInstances",
            "ec2:TerminateInstances",
            "ec2:DeleteVolume",
            "ec2:DescribeVolumeStatus",
            "ec2:DescribeVolumes",
            "ec2:DetachVolume",
            "iam:GetRole",
            "iam:GetRolePolicy",
            "iam:ListInstanceProfiles",
            "iam:ListRolePolicies",
            "iam:PassRole",
            "s3:CreateBucket",
            "s3:Get*",
            "s3:List*",
            "sdb:BatchPutAttributes",
            "sdb:Select",
            "sqs:CreateQueue",
            "sqs:Delete*",
            "sqs:GetQueue*",
            "sqs:PurgeQueue",
            "sqs:ReceiveMessage"
        ]
    }]
}
`,
    role: iamEmrServiceRole.id,
});
const gw = new aws.ec2.InternetGateway("gw", {
    vpcId: mainVpc.id,
});
const routeTable = new aws.ec2.RouteTable("r", {
    routes: [{
        cidrBlock: "0.0.0.0/0",
        gatewayId: gw.id,
    }],
    vpcId: mainVpc.id,
});
const mainRouteTableAssociation = new aws.ec2.MainRouteTableAssociation("a", {
    routeTableId: routeTable.id,
    vpcId: mainVpc.id,
});
const allowAccess = new aws.ec2.SecurityGroup("allowAccess", {
    description: "Allow inbound traffic",
    egress: [{
        cidrBlocks: ["0.0.0.0/0"],
        fromPort: 0,
        protocol: "-1",
        toPort: 0,
    }],
    ingress: [{
        // we do not recommend opening your cluster to 0.0.0.0/0
        cidrBlocks: "", // add your IP address here
        // these ports should be locked down
        fromPort: 0,
        protocol: "-1",
        toPort: 0,
    }],
    tags: {
        name: "emrTest",
    },
    vpcId: mainVpc.id,
}, {dependsOn: [mainSubnet]});

This content is derived from https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/emr_cluster.html.markdown.

constructor

new Cluster(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions)

Create a Cluster resource with the given unique name, arguments, and options.

  • name The unique name of the resource.
  • args The arguments to use to populate this resource's properties.
  • opts A bag of options that control this resource's behavior.

method get

public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster

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

method getProvider

getProvider(moduleMember: string): ProviderResource | undefined

method isInstance

public static isInstance(obj: any): boolean

Returns true if the given object is an instance of Cluster. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

property additionalInfo

public additionalInfo: pulumi.Output<string | undefined>;

A 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 this provider cannot detect drift from the actual EMR cluster if its value is changed outside this provider.

property applications

public applications: pulumi.Output<string[] | undefined>;

A list of applications for the cluster. Valid values are: Flink, Hadoop, Hive, Mahout, Pig, Spark, and JupyterHub (as of EMR 5.14.0). Case insensitive

property autoscalingRole

public autoscalingRole: pulumi.Output<string | undefined>;

An 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.

property bootstrapActions

public bootstrapActions: pulumi.Output<{
    args: string[];
    name: string;
    path: string;
}[] | undefined>;

List of bootstrap actions that will be run before Hadoop is started on the cluster nodes. Defined below

property clusterState

public clusterState: pulumi.Output<string>;

property configurations

public configurations: pulumi.Output<string | undefined>;

List of configurations supplied for the EMR cluster you are creating

property configurationsJson

public configurationsJson: pulumi.Output<string | undefined>;

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

property coreInstanceCount

public coreInstanceCount: pulumi.Output<number>;

Use the coreInstanceGroup configuration block instanceCount argument instead. Number of Amazon EC2 instances used to execute the job flow. EMR will use one node as the cluster’s master node and use the remainder of the nodes (coreInstanceCount-1) as core nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set. Default 1

property coreInstanceGroup

public coreInstanceGroup: pulumi.Output<{
    autoscalingPolicy: undefined | string;
    bidPrice: undefined | string;
    ebsConfigs: {
        iops: undefined | number;
        size: number;
        type: string;
        volumesPerInstance: undefined | number;
    }[];
    id: string;
    instanceCount: undefined | number;
    instanceType: string;
    name: undefined | string;
}>;

Configuration block to use an Instance Group for the core node type. Cannot be specified if coreInstanceCount argument, coreInstanceType argument, or instanceGroup configuration blocks are set. Detailed below.

property coreInstanceType

public coreInstanceType: pulumi.Output<string>;

Use the coreInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the slave nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set.

property customAmiId

public customAmiId: pulumi.Output<string | undefined>;

A custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.

property ebsRootVolumeSize

public ebsRootVolumeSize: pulumi.Output<number | undefined>;

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.

property ec2Attributes

public ec2Attributes: pulumi.Output<{
    additionalMasterSecurityGroups: undefined | string;
    additionalSlaveSecurityGroups: undefined | string;
    emrManagedMasterSecurityGroup: undefined | string;
    emrManagedSlaveSecurityGroup: undefined | string;
    instanceProfile: string;
    keyName: undefined | string;
    serviceAccessSecurityGroup: undefined | string;
    subnetId: undefined | string;
} | undefined>;

Attributes for the EC2 instances running the job flow. Defined below

property id

id: Output<ID>;

id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

property instanceGroups

public instanceGroups: pulumi.Output<{
    autoscalingPolicy: undefined | string;
    bidPrice: undefined | string;
    ebsConfigs: {
        iops: undefined | number;
        size: number;
        type: string;
        volumesPerInstance: undefined | number;
    }[];
    id: string;
    instanceCount: undefined | number;
    instanceRole: string;
    instanceType: string;
    name: undefined | string;
}[]>;

Use the masterInstanceGroup configuration block, coreInstanceGroup configuration block and aws.emr.InstanceGroup resource(s) instead. A list of instanceGroup objects for each instance group in the cluster. Exactly one of masterInstanceType and instanceGroup must be specified. If instanceGroup is set, then it must contain a configuration block for at least the MASTER instance group type (as well as any additional instance groups). Cannot be specified if masterInstanceGroup or coreInstanceGroup configuration blocks are set. Defined below

property keepJobFlowAliveWhenNoSteps

public keepJobFlowAliveWhenNoSteps: pulumi.Output<boolean>;

Switch on/off run cluster with no steps or when all steps are complete (default is on)

property kerberosAttributes

public kerberosAttributes: pulumi.Output<{
    adDomainJoinPassword: undefined | string;
    adDomainJoinUser: undefined | string;
    crossRealmTrustPrincipalPassword: undefined | string;
    kdcAdminPassword: string;
    realm: string;
} | undefined>;

Kerberos configuration for the cluster. Defined below

property logUri

public logUri: pulumi.Output<string | undefined>;

S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created

property masterInstanceGroup

public masterInstanceGroup: pulumi.Output<{
    bidPrice: undefined | string;
    ebsConfigs: {
        iops: undefined | number;
        size: number;
        type: string;
        volumesPerInstance: undefined | number;
    }[];
    id: string;
    instanceCount: undefined | number;
    instanceType: string;
    name: undefined | string;
}>;

Configuration block to use an Instance Group for the master node type. Cannot be specified if masterInstanceType argument or instanceGroup configuration blocks are set. Detailed below.

property masterInstanceType

public masterInstanceType: pulumi.Output<string>;

Use the masterInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the master node. Cannot be specified if masterInstanceGroup or instanceGroup configuration blocks are set.

property masterPublicDns

public masterPublicDns: pulumi.Output<string>;

The public DNS name of the master EC2 instance. * core_instance_group.0.id - Core node type Instance Group ID, if using Instance Group for this node type.

property name

public name: pulumi.Output<string>;

The name of the job flow

property releaseLabel

public releaseLabel: pulumi.Output<string>;

The release label for the Amazon EMR release

property scaleDownBehavior

public scaleDownBehavior: pulumi.Output<string>;

The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.

property securityConfiguration

public securityConfiguration: pulumi.Output<string | undefined>;

The security configuration name to attach to the EMR cluster. Only valid for EMR clusters with releaseLabel 4.8.0 or greater

property serviceRole

public serviceRole: pulumi.Output<string>;

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

property steps

public steps: pulumi.Output<{
    actionOnFailure: string;
    hadoopJarStep: {
        args: string[];
        jar: string;
        mainClass: undefined | string;
        properties: undefined | {[key: string]: any};
    };
    name: string;
}[]>;

List of steps to run when creating the cluster. Defined below. It is highly recommended to utilize the lifecycle configuration block with ignoreChanges if other steps are being managed outside of this provider. This argument is processed in attribute-as-blocks mode.

property tags

public tags: pulumi.Output<{[key: string]: any} | undefined>;

list of tags to apply to the EMR Cluster

property terminationProtection

public terminationProtection: pulumi.Output<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.

property urn

urn: Output<URN>;

urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

property visibleToAllUsers

public visibleToAllUsers: pulumi.Output<boolean | undefined>;

Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default true

class InstanceGroup

extends CustomResource

Provides an Elastic MapReduce Cluster Instance Group configuration. See Amazon Elastic MapReduce Documentation for more information.

NOTE: At this time, Instance Groups cannot be destroyed through the API nor web interface. Instance Groups are destroyed when the EMR Cluster is destroyed. this provider will resize any Instance Group to zero when destroying the resource.

Example Usage

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

const task = new aws.emr.InstanceGroup("task", {
    clusterId: aws_emr_cluster_tf_test_cluster.id,
    instanceCount: 1,
    instanceType: "m5.xlarge",
});

This content is derived from https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/emr_instance_group.html.markdown.

constructor

new InstanceGroup(name: string, args: InstanceGroupArgs, opts?: pulumi.CustomResourceOptions)

Create a InstanceGroup resource with the given unique name, arguments, and options.

  • name The unique name of the resource.
  • args The arguments to use to populate this resource's properties.
  • opts A bag of options that control this resource's behavior.

method get

public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: InstanceGroupState, opts?: pulumi.CustomResourceOptions): InstanceGroup

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

method getProvider

getProvider(moduleMember: string): ProviderResource | undefined

method isInstance

public static isInstance(obj: any): boolean

Returns true if the given object is an instance of InstanceGroup. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

property autoscalingPolicy

public autoscalingPolicy: pulumi.Output<string | undefined>;

The autoscaling policy document. This is a JSON formatted string. See EMR Auto Scaling

property bidPrice

public bidPrice: pulumi.Output<string | undefined>;

If set, the 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.

property clusterId

public clusterId: pulumi.Output<string>;

ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.

property ebsConfigs

public ebsConfigs: pulumi.Output<{
    iops: undefined | number;
    size: number;
    type: string;
    volumesPerInstance: undefined | number;
}[]>;

One or more ebsConfig blocks as defined below. Changing this forces a new resource to be created.

property ebsOptimized

public ebsOptimized: pulumi.Output<boolean | undefined>;

Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.

property id

id: Output<ID>;

id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

property instanceCount

public instanceCount: pulumi.Output<number | undefined>;

target number of instances for the instance group. defaults to 0.

property instanceType

public instanceType: pulumi.Output<string>;

The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.

property name

public name: pulumi.Output<string>;

Human friendly name given to the instance group. Changing this forces a new resource to be created.

property runningInstanceCount

public runningInstanceCount: pulumi.Output<number>;

property status

public status: pulumi.Output<string>;

property urn

urn: Output<URN>;

urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

class SecurityConfiguration

extends CustomResource

Provides a resource to manage AWS EMR Security Configurations

Example Usage

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

const foo = new aws.emr.SecurityConfiguration("foo", {
    configuration: `{
  "EncryptionConfiguration": {
    "AtRestEncryptionConfiguration": {
      "S3EncryptionConfiguration": {
        "EncryptionMode": "SSE-S3"
      },
      "LocalDiskEncryptionConfiguration": {
        "EncryptionKeyProviderType": "AwsKms",
        "AwsKmsKey": "arn:aws:kms:us-west-2:187416307283:alias/tf_emr_test_key"
      }
    },
    "EnableInTransitEncryption": false,
    "EnableAtRestEncryption": true
  }
}
`,
});

This content is derived from https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/emr_security_configuration.html.markdown.

constructor

new SecurityConfiguration(name: string, args: SecurityConfigurationArgs, opts?: pulumi.CustomResourceOptions)

Create a SecurityConfiguration resource with the given unique name, arguments, and options.

  • name The unique name of the resource.
  • args The arguments to use to populate this resource's properties.
  • opts A bag of options that control this resource's behavior.

method get

public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: SecurityConfigurationState, opts?: pulumi.CustomResourceOptions): SecurityConfiguration

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

method getProvider

getProvider(moduleMember: string): ProviderResource | undefined

method isInstance

public static isInstance(obj: any): boolean

Returns true if the given object is an instance of SecurityConfiguration. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

property configuration

public configuration: pulumi.Output<string>;

A JSON formatted Security Configuration

property creationDate

public creationDate: pulumi.Output<string>;

Date the Security Configuration was created

property id

id: Output<ID>;

id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

property name

public name: pulumi.Output<string>;

The name of the EMR Security Configuration. By default generated by this provider.

property namePrefix

public namePrefix: pulumi.Output<string | undefined>;

Creates a unique name beginning with the specified prefix. Conflicts with name.

property urn

urn: Output<URN>;

urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

interface ClusterArgs

The set of arguments for constructing a Cluster resource.

property additionalInfo

additionalInfo?: pulumi.Input<string>;

A 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 this provider cannot detect drift from the actual EMR cluster if its value is changed outside this provider.

property applications

applications?: pulumi.Input<pulumi.Input<string>[]>;

A list of applications for the cluster. Valid values are: Flink, Hadoop, Hive, Mahout, Pig, Spark, and JupyterHub (as of EMR 5.14.0). Case insensitive

property autoscalingRole

autoscalingRole?: pulumi.Input<string>;

An 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.

property bootstrapActions

bootstrapActions?: pulumi.Input<pulumi.Input<{
    args: pulumi.Input<pulumi.Input<string>[]>;
    name: pulumi.Input<string>;
    path: pulumi.Input<string>;
}>[]>;

List of bootstrap actions that will be run before Hadoop is started on the cluster nodes. Defined below

property configurations

configurations?: pulumi.Input<string>;

List of configurations supplied for the EMR cluster you are creating

property configurationsJson

configurationsJson?: pulumi.Input<string>;

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

property coreInstanceCount

coreInstanceCount?: pulumi.Input<number>;

Use the coreInstanceGroup configuration block instanceCount argument instead. Number of Amazon EC2 instances used to execute the job flow. EMR will use one node as the cluster’s master node and use the remainder of the nodes (coreInstanceCount-1) as core nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set. Default 1

property coreInstanceGroup

coreInstanceGroup?: pulumi.Input<{
    autoscalingPolicy: pulumi.Input<string>;
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>;

Configuration block to use an Instance Group for the core node type. Cannot be specified if coreInstanceCount argument, coreInstanceType argument, or instanceGroup configuration blocks are set. Detailed below.

property coreInstanceType

coreInstanceType?: pulumi.Input<string>;

Use the coreInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the slave nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set.

property customAmiId

customAmiId?: pulumi.Input<string>;

A custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.

property ebsRootVolumeSize

ebsRootVolumeSize?: pulumi.Input<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.

property ec2Attributes

ec2Attributes?: pulumi.Input<{
    additionalMasterSecurityGroups: pulumi.Input<string>;
    additionalSlaveSecurityGroups: pulumi.Input<string>;
    emrManagedMasterSecurityGroup: pulumi.Input<string>;
    emrManagedSlaveSecurityGroup: pulumi.Input<string>;
    instanceProfile: pulumi.Input<string>;
    keyName: pulumi.Input<string>;
    serviceAccessSecurityGroup: pulumi.Input<string>;
    subnetId: pulumi.Input<string>;
}>;

Attributes for the EC2 instances running the job flow. Defined below

property instanceGroups

instanceGroups?: pulumi.Input<pulumi.Input<{
    autoscalingPolicy: pulumi.Input<string>;
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceRole: pulumi.Input<string>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>[]>;

Use the masterInstanceGroup configuration block, coreInstanceGroup configuration block and aws.emr.InstanceGroup resource(s) instead. A list of instanceGroup objects for each instance group in the cluster. Exactly one of masterInstanceType and instanceGroup must be specified. If instanceGroup is set, then it must contain a configuration block for at least the MASTER instance group type (as well as any additional instance groups). Cannot be specified if masterInstanceGroup or coreInstanceGroup configuration blocks are set. Defined below

property keepJobFlowAliveWhenNoSteps

keepJobFlowAliveWhenNoSteps?: pulumi.Input<boolean>;

Switch on/off run cluster with no steps or when all steps are complete (default is on)

property kerberosAttributes

kerberosAttributes?: pulumi.Input<{
    adDomainJoinPassword: pulumi.Input<string>;
    adDomainJoinUser: pulumi.Input<string>;
    crossRealmTrustPrincipalPassword: pulumi.Input<string>;
    kdcAdminPassword: pulumi.Input<string>;
    realm: pulumi.Input<string>;
}>;

Kerberos configuration for the cluster. Defined below

property logUri

logUri?: pulumi.Input<string>;

S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created

property masterInstanceGroup

masterInstanceGroup?: pulumi.Input<{
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>;

Configuration block to use an Instance Group for the master node type. Cannot be specified if masterInstanceType argument or instanceGroup configuration blocks are set. Detailed below.

property masterInstanceType

masterInstanceType?: pulumi.Input<string>;

Use the masterInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the master node. Cannot be specified if masterInstanceGroup or instanceGroup configuration blocks are set.

property name

name?: pulumi.Input<string>;

The name of the job flow

property releaseLabel

releaseLabel: pulumi.Input<string>;

The release label for the Amazon EMR release

property scaleDownBehavior

scaleDownBehavior?: pulumi.Input<string>;

The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.

property securityConfiguration

securityConfiguration?: pulumi.Input<string>;

The security configuration name to attach to the EMR cluster. Only valid for EMR clusters with releaseLabel 4.8.0 or greater

property serviceRole

serviceRole: pulumi.Input<string>;

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

property steps

steps?: pulumi.Input<pulumi.Input<{
    actionOnFailure: pulumi.Input<string>;
    hadoopJarStep: pulumi.Input<{
        args: pulumi.Input<pulumi.Input<string>[]>;
        jar: pulumi.Input<string>;
        mainClass: pulumi.Input<string>;
        properties: pulumi.Input<{[key: string]: any}>;
    }>;
    name: pulumi.Input<string>;
}>[]>;

List of steps to run when creating the cluster. Defined below. It is highly recommended to utilize the lifecycle configuration block with ignoreChanges if other steps are being managed outside of this provider. This argument is processed in attribute-as-blocks mode.

property tags

tags?: pulumi.Input<{[key: string]: any}>;

list of tags to apply to the EMR Cluster

property terminationProtection

terminationProtection?: pulumi.Input<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.

property visibleToAllUsers

visibleToAllUsers?: pulumi.Input<boolean>;

Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default true

interface ClusterState

Input properties used for looking up and filtering Cluster resources.

property additionalInfo

additionalInfo?: pulumi.Input<string>;

A 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 this provider cannot detect drift from the actual EMR cluster if its value is changed outside this provider.

property applications

applications?: pulumi.Input<pulumi.Input<string>[]>;

A list of applications for the cluster. Valid values are: Flink, Hadoop, Hive, Mahout, Pig, Spark, and JupyterHub (as of EMR 5.14.0). Case insensitive

property autoscalingRole

autoscalingRole?: pulumi.Input<string>;

An 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.

property bootstrapActions

bootstrapActions?: pulumi.Input<pulumi.Input<{
    args: pulumi.Input<pulumi.Input<string>[]>;
    name: pulumi.Input<string>;
    path: pulumi.Input<string>;
}>[]>;

List of bootstrap actions that will be run before Hadoop is started on the cluster nodes. Defined below

property clusterState

clusterState?: pulumi.Input<string>;

property configurations

configurations?: pulumi.Input<string>;

List of configurations supplied for the EMR cluster you are creating

property configurationsJson

configurationsJson?: pulumi.Input<string>;

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

property coreInstanceCount

coreInstanceCount?: pulumi.Input<number>;

Use the coreInstanceGroup configuration block instanceCount argument instead. Number of Amazon EC2 instances used to execute the job flow. EMR will use one node as the cluster’s master node and use the remainder of the nodes (coreInstanceCount-1) as core nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set. Default 1

property coreInstanceGroup

coreInstanceGroup?: pulumi.Input<{
    autoscalingPolicy: pulumi.Input<string>;
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>;

Configuration block to use an Instance Group for the core node type. Cannot be specified if coreInstanceCount argument, coreInstanceType argument, or instanceGroup configuration blocks are set. Detailed below.

property coreInstanceType

coreInstanceType?: pulumi.Input<string>;

Use the coreInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the slave nodes. Cannot be specified if coreInstanceGroup or instanceGroup configuration blocks are set.

property customAmiId

customAmiId?: pulumi.Input<string>;

A custom Amazon Linux AMI for the cluster (instead of an EMR-owned AMI). Available in Amazon EMR version 5.7.0 and later.

property ebsRootVolumeSize

ebsRootVolumeSize?: pulumi.Input<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.

property ec2Attributes

ec2Attributes?: pulumi.Input<{
    additionalMasterSecurityGroups: pulumi.Input<string>;
    additionalSlaveSecurityGroups: pulumi.Input<string>;
    emrManagedMasterSecurityGroup: pulumi.Input<string>;
    emrManagedSlaveSecurityGroup: pulumi.Input<string>;
    instanceProfile: pulumi.Input<string>;
    keyName: pulumi.Input<string>;
    serviceAccessSecurityGroup: pulumi.Input<string>;
    subnetId: pulumi.Input<string>;
}>;

Attributes for the EC2 instances running the job flow. Defined below

property instanceGroups

instanceGroups?: pulumi.Input<pulumi.Input<{
    autoscalingPolicy: pulumi.Input<string>;
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceRole: pulumi.Input<string>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>[]>;

Use the masterInstanceGroup configuration block, coreInstanceGroup configuration block and aws.emr.InstanceGroup resource(s) instead. A list of instanceGroup objects for each instance group in the cluster. Exactly one of masterInstanceType and instanceGroup must be specified. If instanceGroup is set, then it must contain a configuration block for at least the MASTER instance group type (as well as any additional instance groups). Cannot be specified if masterInstanceGroup or coreInstanceGroup configuration blocks are set. Defined below

property keepJobFlowAliveWhenNoSteps

keepJobFlowAliveWhenNoSteps?: pulumi.Input<boolean>;

Switch on/off run cluster with no steps or when all steps are complete (default is on)

property kerberosAttributes

kerberosAttributes?: pulumi.Input<{
    adDomainJoinPassword: pulumi.Input<string>;
    adDomainJoinUser: pulumi.Input<string>;
    crossRealmTrustPrincipalPassword: pulumi.Input<string>;
    kdcAdminPassword: pulumi.Input<string>;
    realm: pulumi.Input<string>;
}>;

Kerberos configuration for the cluster. Defined below

property logUri

logUri?: pulumi.Input<string>;

S3 bucket to write the log files of the job flow. If a value is not provided, logs are not created

property masterInstanceGroup

masterInstanceGroup?: pulumi.Input<{
    bidPrice: pulumi.Input<string>;
    ebsConfigs: pulumi.Input<pulumi.Input<{
        iops: pulumi.Input<number>;
        size: pulumi.Input<number>;
        type: pulumi.Input<string>;
        volumesPerInstance: pulumi.Input<number>;
    }>[]>;
    id: pulumi.Input<string>;
    instanceCount: pulumi.Input<number>;
    instanceType: pulumi.Input<string>;
    name: pulumi.Input<string>;
}>;

Configuration block to use an Instance Group for the master node type. Cannot be specified if masterInstanceType argument or instanceGroup configuration blocks are set. Detailed below.

property masterInstanceType

masterInstanceType?: pulumi.Input<string>;

Use the masterInstanceGroup configuration block instanceType argument instead. The EC2 instance type of the master node. Cannot be specified if masterInstanceGroup or instanceGroup configuration blocks are set.

property masterPublicDns

masterPublicDns?: pulumi.Input<string>;

The public DNS name of the master EC2 instance. * core_instance_group.0.id - Core node type Instance Group ID, if using Instance Group for this node type.

property name

name?: pulumi.Input<string>;

The name of the job flow

property releaseLabel

releaseLabel?: pulumi.Input<string>;

The release label for the Amazon EMR release

property scaleDownBehavior

scaleDownBehavior?: pulumi.Input<string>;

The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized.

property securityConfiguration

securityConfiguration?: pulumi.Input<string>;

The security configuration name to attach to the EMR cluster. Only valid for EMR clusters with releaseLabel 4.8.0 or greater

property serviceRole

serviceRole?: pulumi.Input<string>;

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

property steps

steps?: pulumi.Input<pulumi.Input<{
    actionOnFailure: pulumi.Input<string>;
    hadoopJarStep: pulumi.Input<{
        args: pulumi.Input<pulumi.Input<string>[]>;
        jar: pulumi.Input<string>;
        mainClass: pulumi.Input<string>;
        properties: pulumi.Input<{[key: string]: any}>;
    }>;
    name: pulumi.Input<string>;
}>[]>;

List of steps to run when creating the cluster. Defined below. It is highly recommended to utilize the lifecycle configuration block with ignoreChanges if other steps are being managed outside of this provider. This argument is processed in attribute-as-blocks mode.

property tags

tags?: pulumi.Input<{[key: string]: any}>;

list of tags to apply to the EMR Cluster

property terminationProtection

terminationProtection?: pulumi.Input<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.

property visibleToAllUsers

visibleToAllUsers?: pulumi.Input<boolean>;

Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. Default true

interface InstanceGroupArgs

The set of arguments for constructing a InstanceGroup resource.

property autoscalingPolicy

autoscalingPolicy?: pulumi.Input<string>;

The autoscaling policy document. This is a JSON formatted string. See EMR Auto Scaling

property bidPrice

bidPrice?: pulumi.Input<string>;

If set, the 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.

property clusterId

clusterId: pulumi.Input<string>;

ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.

property ebsConfigs

ebsConfigs?: pulumi.Input<pulumi.Input<{
    iops: pulumi.Input<number>;
    size: pulumi.Input<number>;
    type: pulumi.Input<string>;
    volumesPerInstance: pulumi.Input<number>;
}>[]>;

One or more ebsConfig blocks as defined below. Changing this forces a new resource to be created.

property ebsOptimized

ebsOptimized?: pulumi.Input<boolean>;

Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.

property instanceCount

instanceCount?: pulumi.Input<number>;

target number of instances for the instance group. defaults to 0.

property instanceType

instanceType: pulumi.Input<string>;

The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.

property name

name?: pulumi.Input<string>;

Human friendly name given to the instance group. Changing this forces a new resource to be created.

interface InstanceGroupState

Input properties used for looking up and filtering InstanceGroup resources.

property autoscalingPolicy

autoscalingPolicy?: pulumi.Input<string>;

The autoscaling policy document. This is a JSON formatted string. See EMR Auto Scaling

property bidPrice

bidPrice?: pulumi.Input<string>;

If set, the 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.

property clusterId

clusterId?: pulumi.Input<string>;

ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.

property ebsConfigs

ebsConfigs?: pulumi.Input<pulumi.Input<{
    iops: pulumi.Input<number>;
    size: pulumi.Input<number>;
    type: pulumi.Input<string>;
    volumesPerInstance: pulumi.Input<number>;
}>[]>;

One or more ebsConfig blocks as defined below. Changing this forces a new resource to be created.

property ebsOptimized

ebsOptimized?: pulumi.Input<boolean>;

Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.

property instanceCount

instanceCount?: pulumi.Input<number>;

target number of instances for the instance group. defaults to 0.

property instanceType

instanceType?: pulumi.Input<string>;

The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.

property name

name?: pulumi.Input<string>;

Human friendly name given to the instance group. Changing this forces a new resource to be created.

property runningInstanceCount

runningInstanceCount?: pulumi.Input<number>;

property status

status?: pulumi.Input<string>;

interface SecurityConfigurationArgs

The set of arguments for constructing a SecurityConfiguration resource.

property configuration

configuration: pulumi.Input<string>;

A JSON formatted Security Configuration

property name

name?: pulumi.Input<string>;

The name of the EMR Security Configuration. By default generated by this provider.

property namePrefix

namePrefix?: pulumi.Input<string>;

Creates a unique name beginning with the specified prefix. Conflicts with name.

interface SecurityConfigurationState

Input properties used for looking up and filtering SecurityConfiguration resources.

property configuration

configuration?: pulumi.Input<string>;

A JSON formatted Security Configuration

property creationDate

creationDate?: pulumi.Input<string>;

Date the Security Configuration was created

property name

name?: pulumi.Input<string>;

The name of the EMR Security Configuration. By default generated by this provider.

property namePrefix

namePrefix?: pulumi.Input<string>;

Creates a unique name beginning with the specified prefix. Conflicts with name.