canonical: https://jentic.com/apis/amazonaws.com/amazon-emr-on-eks

# AWS Amazon EMR Containers

Jentic publishes the only available OpenAPI specification for Amazon EMR Containers, keeping it validated and agent-ready. Amazon EMR on EKS lets data teams run open-source big-data frameworks such as Apache Spark on existing Amazon EKS clusters. The API manages virtual clusters that map to EKS namespaces, job runs that submit Spark workloads, managed endpoints, and reusable job templates. It is designed for analytics platform teams that want EMR's runtime optimisations and managed Spark images while consolidating on Kubernetes for compute.

## For AI agents

Submit Spark jobs to EMR on EKS, manage virtual clusters, job templates, and managed endpoints through a single API.

## Scope

Does not handle EKS cluster creation, container image builds, or non-Spark workloads - use for Spark on EKS job submission and virtual cluster management only.

## Capabilities

- Register virtual clusters that map EMR workloads to EKS namespaces
- Submit Spark job runs with custom configurations, monitoring, and execution roles
- Create reusable job templates with parameter overrides for repeatable submissions
- Manage interactive endpoints that expose Jupyter and Livy interfaces on EKS
- Cancel running jobs and inspect job state, completion reason, and execution role
- Tag virtual clusters and job runs for cost allocation and organisational reporting
- Describe job templates to inspect their default configuration and parameter schemas

## Use cases

### Spark Job Submission on EKS

Data engineering teams use Amazon EMR on EKS to run Spark workloads on shared Kubernetes clusters instead of standing up dedicated EMR EC2 clusters. The API submits job runs with execution role, release label, and Spark configuration so that pipelines can run hundreds of jobs per day on a single virtual cluster. EMR on EKS shares cluster resources between workloads, reducing idle compute compared with per-job EMR clusters.

Example prompt: Submit a Spark job run to virtual cluster vc-prod with release label emr-6.10.0-latest, executing s3://etl/scripts/load.py with execution role role-etl.

### Reusable Job Templates

Platform teams use job templates to standardise Spark configuration, IAM roles, and monitoring across many submissions. The API stores templates with parameterised fields so analyst-submitted jobs inherit guardrails such as max executor count and security configuration without hand-editing each run. Templates also keep job submissions short and reduce the surface area for drift between environments.

Example prompt: Create a job template named nightly-etl with release emr-6.10.0-latest, default execution role role-etl, and a parameter inputDate that overrides the script argument.

### Interactive Spark Endpoints

Data science teams use managed endpoints to expose Livy or Jupyter access into the EKS-hosted Spark environment for ad-hoc analysis. The API creates and tears down endpoints with custom Spark configuration so notebooks connect to a curated runtime without leaving the cluster. This shortens the path from notebook prototype to a productionised job template.

Example prompt: Create a managed endpoint of type JUPYTER_ENTERPRISE_GATEWAY in virtual cluster vc-prod with execution role role-etl and release emr-6.10.0-latest.

### Agent-Driven Spark Job Operations via Jentic

AI agents use the EMR Containers API through Jentic to dispatch Spark jobs in response to upstream events such as new files in S3 or detected anomalies. Jentic exposes EMR on EKS operations as discoverable tools so an agent can search by intent and launch a parameterised job in seconds. This removes the need for a dedicated orchestration layer for one-off and event-driven jobs.

Example prompt: Search Jentic for submit spark job, load the StartJobRun schema, and execute it for virtual cluster vc-prod using job template nightly-etl with parameter inputDate=2026-06-09.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /virtualclusters | Create a virtual cluster |
| GET | /virtualclusters | List virtual clusters |
| DELETE | /virtualclusters/{virtualClusterId} | Delete a virtual cluster |
| POST | /virtualclusters/{virtualClusterId}/jobruns | Submit a Spark job run |
| DELETE | /virtualclusters/{virtualClusterId}/jobruns/{jobRunId} | Cancel a job run |
| POST | /virtualclusters/{virtualClusterId}/endpoints | Create a managed endpoint |
| POST | /jobtemplates | Create a reusable job template |

## Key resources

- **Virtual Clusters** — Map EMR workloads to EKS namespaces
- **Job Runs** — Submit, monitor, and cancel Spark workloads
- **Job Templates** — Reusable, parameterised job configurations
- **Managed Endpoints** — Interactive endpoints for Jupyter or Livy access

## Why Jentic

- **Setup:** Wiring Amazon EMR on EKS by hand means building SigV4 request signing, resolving the regional emr-containers.{region}.amazonaws.com host, and handling AWS throttling and retries yourself. Through Jentic you install once, import EMR Containers from the API Directory, store the AWS access keys once, and your agent calls it.
- **Permission scoping:** EMR Containers puts the virtual cluster id in the URL path (/virtualclusters/{virtualClusterId}/...), so a rule can pin your agent to one virtual cluster: it can submit and read job runs for that cluster and nothing else. You choose the operations it may call, so deleting the virtual cluster or a job run is not included unless you add it.
- **Credential handling:** Your AWS access keys for EMR on EKS are stored once, encrypted, by your own Jentic One instance and injected at execution time when the request is signed. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'submit a Spark job' or 'create a virtual cluster', and Jentic returns the matching EMR Containers operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Amazon EKS** — Provides the underlying Kubernetes cluster that EMR on EKS runs against
- **AWS Lambda** — Serverless functions for short-lived data processing
- **Amazon EventBridge** — Triggers EMR job submissions in response to upstream events

## FAQ

### Why is there no official OpenAPI spec for Amazon EMR Containers?

AWS does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Amazon EMR Containers via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Amazon EMR Containers API use?

EMR on EKS uses AWS Signature Version 4 request signing. Through Jentic, AWS access keys are stored encrypted in the vault and signing happens server-side, so the agent never sees the raw secret access key.

### Can I submit Spark jobs through this API?

Yes. POST /virtualclusters/{virtualClusterId}/jobruns submits a Spark job with a release label, execution role, and job driver configuration. The job runs in the EKS namespace mapped by the virtual cluster.

### What are the rate limits for the Amazon EMR Containers API?

AWS applies per-account, per-region API throttling. Job submission and describe calls have separate buckets. Use exponential backoff on ThrottlingException responses; AWS does not publish exact TPS numbers in the spec.

### How do I cancel a long-running Spark job through Jentic?

Search Jentic for cancel emr job run, load the schema for DELETE /virtualclusters/{virtualClusterId}/jobruns/{jobRunId}, and execute it with the virtual cluster ID and job run ID. Jentic returns the cancellation acknowledgement.

### Do I need an existing EKS cluster to use this API?

Yes. EMR on EKS runs workloads inside an EKS cluster you already operate. You must register the EKS cluster as a virtual cluster, which maps EMR submissions to a specific Kubernetes namespace.

### Can I limit what my agent is allowed to do with the AWS EMR on EKS API?

Yes. Because you self-host Jentic One, your own rules decide which EMR on EKS operations and AWS credentials the agent may use. Since the virtual cluster ID sits in the URL path, you can pin the agent to a single virtual cluster and allow only the calls it needs, such as submitting job runs (POST /virtualclusters/{virtualClusterId}/jobruns) and reading their status, while leaving out destructive operations like deleting a virtual cluster or cancelling a job run unless you explicitly grant them.
