Skip to main content

Quickstart

Deploy your first EMR cluster in minutes with Terraform.

Cluster Types

Explore EC2, Serverless, Virtual, and Studio cluster options.

Configuration Reference

Full reference for all module inputs and outputs.

Examples

Working example configurations for common use cases.

What this module provides

The terraform-aws-modules/emr module simplifies deploying AWS EMR at scale. It handles cluster provisioning, IAM roles, security groups, and scaling policies so you can focus on your data workloads.

EC2 Clusters

Deploy EMR clusters using instance fleets or instance groups in public or private subnets, with Spark, Hive, Trino, and more.

Serverless

Run Spark and Hive workloads without managing EC2 infrastructure using EMR Serverless.

Virtual Clusters (EKS)

Run EMR workloads on your existing Amazon EKS clusters for unified Kubernetes management.

EMR Studio

Provide data scientists and engineers with a collaborative notebook environment backed by EMR.

Key capabilities

Instance Fleets

Mix On-Demand and Spot instances with weighted capacity for cost-optimized clusters.

Instance Groups

Simple fixed-size node groups for predictable workloads.

IAM Roles

Automatically provisioned service, autoscaling, and EC2 instance profile roles.

Security Groups

Managed security groups for master, core, task, and service nodes.

Managed Scaling

Automatically scale clusters up and down based on workload demand.

Private Clusters

Deploy in private subnets with S3 and EMR VPC endpoints for secure connectivity.

Requirements

This module requires Terraform >= 1.5.7 and the AWS provider >= 6.35. VPC and subnet resources must be tagged with { "for-use-with-amazon-emr-managed-policies" = true } to support the recommended IAM policy AmazonEMRServicePolicy_v2.

Module sources

# Root module — EC2-based clusters
module "emr" {
  source  = "terraform-aws-modules/emr/aws"
  version = "~> 1.0"
}

# EMR Serverless
module "emr_serverless" {
  source  = "terraform-aws-modules/emr/aws//modules/serverless"
  version = "~> 1.0"
}

# EMR Virtual Cluster (EKS)
module "emr_virtual_cluster" {
  source  = "terraform-aws-modules/emr/aws//modules/virtual-cluster"
  version = "~> 1.0"
}

# EMR Studio
module "emr_studio" {
  source  = "terraform-aws-modules/emr/aws//modules/studio"
  version = "~> 1.0"
}