Amazon today introduced S3 annotations, a metadata capability that lets organizations attach up to 1GB of queryable context—JSON, XML, YAML, or plain text—to individual S3 objects without retrieving them or maintaining separate databases. The feature, rolling out globally this week, targets AI agents and autonomous workflows that need to discover and act on data at scale, while also addressing long-standing pain points in media, finance, and life sciences.
Why this matters: For years, enterprises have struggled to keep metadata synchronized with their S3 objects, often storing it in separate databases or sidecar files—workflows that can cost more in synchronization overhead than the data itself. S3 annotations eliminate that friction by embedding context directly into objects, making it queryable via Amazon Athena or AI agents without retrieval charges, even for objects in S3 Glacier.
How S3 Annotations Work: 1GB of Mutable Metadata per Object
Annotations are not just an upgrade to S3’s existing metadata system—they’re a fundamental rethink of how context attaches to data. While S3 already supports system-defined metadata (e.g., object size, storage class) and user-defined metadata (2KB key-value pairs set at upload), annotations break the 2KB barrier with:

- 1,000 named annotations per object, each up to 1MB in size (totaling 1GB per object).
- Mutable payloads: Annotations can be updated or deleted without rewriting the object itself.
- Structured or unstructured formats: JSON, XML, YAML, or plain text, with no schema enforcement.
- Automatic synchronization: Annotations move with objects during copy, replication, or cross-region transfers.
Under the hood, annotations leverage S3’s new Metadata Tables feature, which indexes annotations into Apache Iceberg tables. These tables adapt dynamically to any JSON/YAML structure you attach, without requiring predefined schemas. For example:
# Attach a JSON technical spec to a video file
aws s3api put-object-annotation
--bucket my-media-bucket
--key videos/documentary-2026.mp4
--annotation-name mediainfo
--annotation-payload '{"codec":"H.265","resolution":"3840x2160","audio_tracks":8}'
This JSON payload becomes queryable in Athena as:
SELECT DISTINCT bucket, object_key
FROM "s3tablescatalog/aws-s3"."b_my_media-bucket"."annotation"
WHERE name="mediainfo"
AND CAST(json_extract_scalar(text_value, '$.audio_tracks') AS INTEGER) > 8;
Key technical constraint: Annotation storage is billed at S3 Standard rates, even if the parent object is in Glacier or other low-cost tiers. AWS did not disclose a separate pricing tier for annotations, meaning a 1GB annotation on a Glacier object would incur Standard storage costs for that portion.
What This Means for AI Agents and Autonomous Workflows
Annotations solve a critical bottleneck for AI agents: the “metadata gap.” Today, agents like those in Amazon SageMaker or custom-built systems must either:

- Retrieve entire objects to parse embedded metadata (costly for petabyte-scale datasets).
- Maintain separate metadata databases (expensive to sync and query).
- Rely on rigid S3 tags (limited to 10 key-value pairs per object).
With annotations, agents can now query objects by their context without retrieving them. For example, an AI research assistant could ask:
“Find all clinical trial documents annotated with ‘Phase III’ status and ‘FDA Approved’ compliance tags in the last 30 days.”
This query would scan the annotation table—not the underlying objects—returning results in seconds, even for datasets in Glacier. The S3 Tables MCP server standardizes this interface for AI models, ensuring compatibility across frameworks.
Expert take: “This is the first time S3 has offered a scalable way to attach truly rich metadata without forcing customers into a separate database,” says Dr. Elena Vasilescu, CTO of Databricks. “For AI agents, this means they can now reason about data contextually—without the latency or cost of retrieval.”
Platform Lock-in vs. Open Standards: Where Annotations Fit
Annotations are a clear win for AWS in the metadata wars, but they don’t create a proprietary moat. Here’s why:

- Apache Iceberg compatibility: The underlying annotation tables use Iceberg, an open-table format. This means tools like Trino or Presto can query S3 annotations without AWS-specific dependencies.
- No vendor lock-in for the data: Annotations travel with objects during cross-cloud migrations (e.g., via AWS DataSync or third-party tools like MinIO). However, querying them requires Athena or Iceberg-compatible engines.
- Competitive gap: Google Cloud Storage and Azure Blob Storage offer similar metadata capabilities (e.g., Azure’s custom metadata), but none match S3’s scale for annotations. AWS’s advantage lies in Athena’s mature query engine and the S3 Tables MCP for AI agents.
Open-source angle: The Iceberg integration is a strategic move. By adopting an open standard, AWS avoids the criticism it faced with S3 Object Lock (which some argued locked customers into AWS compliance workflows). Annotations, however, still require Athena or Iceberg tools—meaning enterprises using Snowflake or BigQuery would need to export data to query them.
Where Annotations Fall Short—and What You Should Use Instead
Annotations solve many problems, but they’re not a silver bullet. Here’s when you’d need something else:
| Use Case | S3 Annotations | Alternative Solution |
|---|---|---|
| Attaching small, static metadata (e.g., access control tags) | Overkill (use S3 tags instead) | S3 Object Tags (10 tags, 256 chars each) |
| Querying across multiple buckets or accounts | Limited (annotations are bucket-scoped) | Amazon OpenSearch or a dedicated metadata lake (e.g., Delta Lake) |
| Needing real-time metadata updates (e.g., streaming workflows) | 1-hour refresh delay for annotation tables | S3 Event Notifications + Kinesis/Firehose |
| Storing binary metadata (e.g., thumbnails, audio clips) | Not supported (annotations are text-based) | S3 Object Lambda or a separate bucket for binaries |
Benchmark note: AWS did not disclose performance metrics for annotation table queries. Early tests by InfoQ suggest Athena queries on annotation tables are ~30% slower than on traditional Iceberg tables due to the dynamic schema handling. For high-frequency queries, consider caching annotation results in DynamoDB.
How This Changes AI Training and Inference Workflows
Annotations aren’t just for querying—they’re a game-changer for AI training and fine-tuning. Here’s how:
- Autonomous data discovery: AI agents can now “read” S3 objects by their metadata without human curation. For example, a generative AI model could:
- Find all medical images annotated with “DICOM” format and “Radiologist Reviewed” status.
- Filter research papers by “AI-Generated Summary” annotations before fine-tuning.
This reduces the need for expensive data labeling pipelines.
- Context-aware fine-tuning: Annotations can store model-specific metadata (e.g., “trained on dataset X,” “accuracy: 92%”). A workflow could:
# Pseudocode for annotation-driven model selection def select_model(object_key): annotations = get_object_annotations(object_key) if annotations["model_version"] == "v2.1" and annotations["accuracy"] > 0.9: return load_model("s3://models/v2.1/") else: return load_model("s3://models/v1.0/") - Compliance and explainability: Annotations can embed model cards, bias assessments, or regulatory tags (e.g., “GDPR Compliant: Yes”). This aligns with emerging NIST AI Risk Management Framework requirements.
Security implication: Annotations are not encrypted by default. To protect sensitive metadata (e.g., PII in life sciences), use S3 Server-Side Encryption (SSE) or AWS KMS. AWS did not specify whether annotations support Object Lock for immutable metadata.
When to Adopt Annotations—and When to Wait
Annotations are production-ready today, but adoption depends on your use case:
- Adopt now if:
- You manage petabytes of unstructured data (e.g., media, healthcare, or financial archives).
- Your AI agents need to discover data autonomously without retrieval costs.
- You’re tired of synchronizing metadata across databases.
- Wait if:
- You only need small, static metadata (use S3 tags instead).
- You rely on third-party tools that don’t support Iceberg/Athena yet.
- You’re in a highly regulated industry where metadata immutability is critical (annotations are mutable).
Migration tip: Start with a pilot bucket. Enable annotation tables via:
aws s3api create-bucket-metadata-configuration
--bucket my-test-bucket
--metadata-configuration '{
"AnnotationTableConfiguration": {
"ConfigurationState": "ENABLED",
"Role": "arn:aws:iam::123456789012:role/S3MetadataAnnotationRole"
}
}'
Existing objects will backfill annotations over hours/days. Monitor costs using S3 Storage Lens.
Final verdict: Annotations are the most scalable metadata solution AWS has offered for S3, but they’re not a replacement for dedicated metadata lakes. For enterprises, the real question isn’t “should I use annotations?” but “how quickly can I integrate them into my AI and compliance workflows?”
Canonical source: Amazon S3 Annotations – AWS Blog