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"