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 |
TerminateJobFlows |
Terminates one or more clusters |
SetTerminationProtection |
Enables or disables termination protection |
SetVisibleToAllUsers |
Sets cluster visibility for the account |
SetKeepJobFlowAliveWhenNoSteps |
Controls auto-termination when steps complete |
SetUnhealthyNodeReplacement |
Toggles unhealthy-node replacement |
ModifyCluster |
Updates cluster-level settings such as step concurrency |
AddJobFlowSteps |
Adds one or more steps to a cluster |
DescribeStep |
Returns the detail and status of a single step |
ListSteps |
Lists the steps of a cluster, filterable by state |
CancelSteps |
Cancels pending steps |
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 |
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 |
ModifyInstanceGroups |
Resizes or reconfigures instance groups |
ModifyInstanceFleet |
Changes an instance fleet's target capacities |
ListBootstrapActions |
Lists the bootstrap actions given to RunJobFlow |
PutManagedScalingPolicy |
Sets a cluster's managed scaling policy |
GetManagedScalingPolicy |
Returns a cluster's managed scaling policy |
RemoveManagedScalingPolicy |
Removes a cluster's managed scaling policy |
PutAutoTerminationPolicy |
Sets a cluster's idle timeout auto termination policy |
GetAutoTerminationPolicy |
Returns a cluster's auto termination policy |
RemoveAutoTerminationPolicy |
Removes a cluster's auto termination policy |
PutAutoScalingPolicy |
Attaches an automatic scaling policy to a core or task instance group |
RemoveAutoScalingPolicy |
Removes an instance group's automatic scaling policy |
GetBlockPublicAccessConfiguration |
Returns the account's block public access configuration for the Region |
PutBlockPublicAccessConfiguration |
Sets the account's block public access configuration for the Region |
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"