canonical: https://jentic.com/apis/amazonaws.com/mediastore

# AWS Elemental MediaStore

Jentic publishes the only available OpenAPI specification for AWS Elemental MediaStore, keeping it validated and agent-ready. MediaStore is a low-latency object store optimized for media workflows - live origin storage, ingest from encoders, and delivery to packagers. Containers are the top-level namespace; each container has a unique data endpoint and supports container policies, CORS policies, lifecycle policies, and metric policies. The service is designed for high-throughput sequential reads and writes typical of streaming workloads rather than archival use cases.

## For AI agents

Provision and govern low-latency MediaStore containers used as origins for live and on-demand media workflows.

## Scope

Does not handle transcoding, packaging, ad insertion, or content delivery - use for low-latency media object storage and container governance only.

## Capabilities

- Create and delete MediaStore containers used as live and VOD media origins
- Attach container policies that grant cross-account or signed access to media
- Configure CORS policies so browser-based players can fetch segments and manifests
- Set lifecycle policies that expire stale segments and recordings automatically
- Enable metric policies that publish per-container metrics to CloudWatch
- List containers in an account and inspect each container's endpoint and status
- Tag containers for cost allocation and access control

## Use cases

### Live Streaming Origin Storage

Live broadcasters use MediaStore containers as the origin for streaming segments emitted by encoders such as AWS Elemental MediaLive. Each container exposes a low-latency HTTP endpoint that downstream packagers and CDNs read from in near real time. CORS and container policies control which origins and roles can fetch segments, and lifecycle policies expire stale recordings to keep storage costs flat.

Example prompt: Call CreateContainer with ContainerName='live-event-2026-finals', then PutLifecyclePolicy with a rule that expires objects older than 86400 seconds

### Browser Player CORS Configuration

Web video apps that fetch HLS or DASH manifests directly from the MediaStore origin need CORS rules permitting the player's domain. PutCorsPolicy attaches a JSON CORS configuration to the container, listing AllowedOrigins, AllowedMethods, AllowedHeaders, and MaxAgeSeconds. The configuration takes effect immediately, so operators can react to new player domains without redeploying anything.

Example prompt: Call PutCorsPolicy on container 'live-event-2026-finals' with an AllowedOrigins list of ['https://app.example.com'] and AllowedMethods ['GET','HEAD']

### Multi-Account Origin Sharing

Larger organizations split production and distribution into separate AWS accounts. PutContainerPolicy attaches an IAM policy directly to a MediaStore container that grants a CDN account or partner role permission to GetObject from the container. This lets the producing team own the storage and the distributing team operate the delivery without sharing credentials.

Example prompt: Call PutContainerPolicy on container 'live-events' with a policy granting mediastore:GetObject to the partner account principal arn:aws:iam::123456789012:role/cdn-origin

### AI Agent Storage Operations

Operations agents call MediaStore through Jentic to provision new containers for upcoming events, attach standard CORS and lifecycle policies, and verify state before broadcasts begin. Jentic isolates AWS keys and exposes the container, policy, CORS, and lifecycle operations as discoverable tools, so the agent can answer 'spin up an origin for tomorrow's launch' without learning the AWS SDK.

Example prompt: Search Jentic for 'create a mediastore container', load CreateContainer, and execute it with the event-specific name then chain PutCorsPolicy with the standard player CORS config

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /#X-Amz-Target=MediaStore_20170901.CreateContainer | Create a new MediaStore container |
| POST | /#X-Amz-Target=MediaStore_20170901.DescribeContainer | Describe a container's endpoint and status |
| POST | /#X-Amz-Target=MediaStore_20170901.PutContainerPolicy | Attach an IAM policy to a container |
| POST | /#X-Amz-Target=MediaStore_20170901.PutCorsPolicy | Attach a CORS policy to a container |
| POST | /#X-Amz-Target=MediaStore_20170901.PutLifecyclePolicy | Attach a lifecycle policy to a container |
| POST | /#X-Amz-Target=MediaStore_20170901.PutMetricPolicy | Attach a CloudWatch metric policy to a container |
| POST | /#X-Amz-Target=MediaStore_20170901.DeleteContainer | Delete a MediaStore container |

## Key resources

- **Containers** — Top-level namespaces for media objects, each with a unique HTTP endpoint
- **ContainerPolicy** — IAM policy attached to a container for cross-account access
- **CorsPolicy** — CORS rules controlling browser-based access to the container
- **LifecyclePolicy** — Rules that delete or expire objects within a container
- **MetricPolicy** — Rules that publish per-container or per-path metrics to CloudWatch

## Why Jentic

- **Setup:** Wiring AWS Elemental MediaStore by hand means implementing Signature Version 4 signing, resolving the regional mediastore host, and building the X-Amz-Target action headers yourself. Through Jentic you install once, import MediaStore from the API Directory, store the AWS keys once, and your agent calls it.
- **Permission scoping:** MediaStore is a JSON action API where the container name travels in the request body, so scope the agent to the operations it needs, such as CreateContainer and DescribeContainer. You choose the operations it may call, so ones like DeleteContainer are not included unless you add them.
- **Credential handling:** Your AWS access keys are stored once, encrypted, by your own Jentic One instance and each request is signed with Signature Version 4 at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a mediastore container' or 'attach a cors policy', and Jentic returns the matching MediaStore operation with its input schema, including the JSON shape expected by container, CORS, and lifecycle policy fields, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **AWS Elemental MediaPackage VOD** — MediaPackage VOD packages content that may be served from MediaStore
- **Bunny.net** — Bunny.net offers low-latency CDN-attached media storage outside AWS
- **Amazon CloudWatch** — CloudWatch ingests metric policies set on MediaStore containers

## FAQ

### Why is there no official OpenAPI spec for AWS Elemental MediaStore?

AWS does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call AWS Elemental MediaStore 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 MediaStore API use?

MediaStore control-plane operations use AWS Signature Version 4 (HMAC) with an access key ID and secret access key scoped via IAM. Object-level operations against the container's data endpoint are signed the same way. Through Jentic, those keys live in the encrypted vault and Jentic signs each request server-side.

### Can I attach a CORS policy with the MediaStore API?

Yes. Call PutCorsPolicy with a CorsPolicy array specifying AllowedOrigins, AllowedMethods, AllowedHeaders, MaxAgeSeconds, and ExposeHeaders. GetCorsPolicy returns the current configuration, and DeleteCorsPolicy removes it. Changes take effect immediately for new requests.

### What are the rate limits for the MediaStore API?

AWS does not document explicit per-second control-plane limits in this spec. Per-container request limits exist on the data endpoint and scale with usage; the service is sized for live streaming throughput. See the AWS service quotas console for region-specific values.

### How do I create a container and attach a policy through Jentic?

Search Jentic for 'create a mediastore container' to surface CreateContainer. Load the schema with the Jentic SDK (pip install jentic), execute it with the desired ContainerName, then chain PutContainerPolicy with the JSON policy granting the consuming role mediastore:GetObject.

### Is AWS Elemental MediaStore free?

No. MediaStore charges per GB stored per month and per HTTP request, with separate rates for PUT, GET, and DELETE operations. There is no free tier - see the AWS MediaStore pricing page for current rates by region.

### Can I limit what my agent is allowed to do with the AWS Elemental MediaStore API?

Yes. Because MediaStore is a JSON action API where the container name travels in the request body, your self-hosted Jentic One instance lets you decide exactly which operations the agent may call. You can scope it to only what it needs, such as CreateContainer and DescribeContainer, and leave out destructive operations like DeleteContainer unless you explicitly add them. Your own rules govern which operations and AWS credentials the agent uses, so it can provision and inspect containers without being able to reach the operations you withheld.
