Amazon S3 annotations: attach rich, queryable context directly to your objects
TLDR
AWS just let S3 objects carry up to 1GB of their own searchable metadata, in JSON, XML, YAML or plain text. That's the missing piece for AI agents that need to find and understand files without a human pointing the way.
Amazon has quietly solved one of the more annoying problems in cloud storage: metadata that never scales with the data it's supposed to describe. The new feature, called S3 annotations, lets you attach up to 1,000 named chunks of context to a single object, each as large as 1MB, for a ceiling of 1GB per object. That's a wild jump from the old constraints — 10 tags capped at a couple hundred characters each, or 2KB of user-defined headers set once at upload and frozen forever.
What makes this more than a storage quota bump is mutability. You can rewrite or delete an annotation whenever you want without touching the underlying object, and the annotation just rides along automatically through copies, replication, and cross-region transfers. Delete the object, and S3 cleans up the annotation too. AWS is clearly building this for the moment when AI agents, not people, are the ones digging through buckets — a media company can staple AI-generated transcripts and technical specs to a video file, a hospital can bolt regulatory status and cohort data onto clinical trial records sitting in Glacier, and none of it costs a retrieval fee to query.
The real trick is what happens when you flip on S3 Metadata annotation tables. Every annotation gets automatically indexed into a managed Apache Iceberg table that Athena or any Iceberg-compatible engine can query directly — no predefined schema required, since the system just stores whatever JSON, XML or YAML structure you throw at it in a text_value column. AWS's own example shows an Athena query hunting for every video with more than 8 audio tracks across an entire bucket, something that used to mean bolting on a separate metadata database and hoping the sync jobs never drift.
There's also a journal table for near-real-time change tracking, useful for firing off event-driven workflows the moment a new annotation lands, while the full annotation table refreshes roughly hourly. And AWS is leaning hard into the agent angle: pair this with the S3 Tables MCP server and you can apparently type something like "find all PG-rated movies with Spanish subtitles from 2023" and get an answer in seconds rather than hours of cross-referencing disconnected systems.
One catch worth flagging: annotation storage always bills at S3 Standard rates, even when the parent object sits in Glacier. So the convenience of querying archived data without restoring it comes with a cost trade-off that teams archiving petabytes should actually run the numbers on before assuming this is free lunch.
My take
This is AWS admitting that the sidecar-database pattern everyone built to compensate for S3's thin metadata was a real pain point, and frankly it's a smart, overdue fix rather than a flashy one. I'm less convinced by the agent-hype framing — natural language queries over annotations are nice, but the actual win here is boring infrastructure plumbing: mutable, queryable metadata that doesn't require you to run and babysit a separate system. Just watch that Standard-rate billing on Glacier objects, because that's exactly the kind of detail that turns a clever feature into a surprise line item.
Read more about this at: TLDR
Related stories
Announcing the Agentic Catalog Experience in Amazon Quick
AWS Machine Learning · 2 days ago ·
6
Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers
AWS Machine Learning · 2 weeks ago ·
19
Beyond RAG: Task-aware knowledge compression for enterprise AI on AWS
AWS Machine Learning · 6 days ago ·
42