Skip to content

EMR

Protocol: JSON 1.1 Endpoint: http://localhost:4566/ Target prefix: X-Amz-Target: ElasticMapReduce.*

Floci emulates the Amazon EMR (Elastic MapReduce) management API. Clusters (job flows), instance groups and fleets, steps, security configurations, and tags are tracked in Floci's storage backend so the AWS CLI and SDK clients can drive the full cluster lifecycle locally. EMR does not launch real Hadoop/Spark clusters — clusters transition through their lifecycle states as a state machine.

Supported Actions

Action Description
RunJobFlow Creates a new cluster (job flow) and returns its JobFlowId
DescribeCluster Returns the configuration and status of a cluster
ListClusters Lists clusters, filterable by state and creation time
ModifyCluster Updates cluster-level settings such as step concurrency
TerminateJobFlows Terminates one or more clusters
SetTerminationProtection Enables or disables termination protection
SetKeepJobFlowAliveWhenNoSteps Controls auto-termination when steps complete
SetVisibleToAllUsers Sets cluster visibility for the account
SetUnhealthyNodeReplacement Toggles unhealthy-node replacement
AddInstanceGroups Adds instance groups to a running cluster
ListInstanceGroups Lists the instance groups of a cluster
AddInstanceFleet Adds an instance fleet to a cluster
ListInstanceFleets Lists the instance fleets of a cluster
ListInstances Lists the EC2 instances of a cluster
AddJobFlowSteps Adds one or more steps to a cluster
ListSteps Lists the steps of a cluster, filterable by state
DescribeStep Returns the detail and status of a single step
CancelSteps Cancels pending steps
CreateSecurityConfiguration Creates a named security configuration
DescribeSecurityConfiguration Returns a security configuration
DeleteSecurityConfiguration Deletes a security configuration
ListSecurityConfigurations Lists all security configurations
AddTags Adds tags to a cluster
RemoveTags Removes tags from a cluster

Example

export AWS_ENDPOINT_URL=http://localhost:4566

# Create a cluster
CLUSTER_ID=$(aws emr run-job-flow \
  --name "demo-cluster" \
  --release-label emr-7.0.0 \
  --instances InstanceGroups='[{InstanceCount=1,InstanceGroupType=MASTER,InstanceType=m5.xlarge}]' \
  --query 'JobFlowId' --output text)

# Inspect it
aws emr describe-cluster --cluster-id "$CLUSTER_ID"
aws emr list-clusters

# Add a step
aws emr add-steps --cluster-id "$CLUSTER_ID" \
  --steps Type=CUSTOM_JAR,Name=demo,Jar=command-runner.jar,Args=[echo,hello]

# Terminate
aws emr terminate-clusters --cluster-ids "$CLUSTER_ID"