What are Amazon S3 Annotations?
Amazon S3 Annotations are named data payloads that you attach to an S3 object after upload. Each annotation holds between 1 byte and 1 MiB of UTF-8 text — for example AI-generated labels, document context, processing results, or compliance records. You create, retrieve, list, and delete annotations without modifying the object itself.
Annotations complement the existing metadata types in Amazon S3: system-defined metadata, object tags, and user-defined metadata. With an annotation table in the S3 Metadata configuration, their content becomes queryable at scale.
Core Features
- Dedicated API operations:
PutObjectAnnotation,GetObjectAnnotation,ListObjectAnnotations, andDeleteObjectAnnotation - Large payloads: Up to 1 MiB per annotation and up to 1,000 annotations per object version, up to 1 GiB per object in total
- Structured content: Any UTF-8 text such as JSON, XML, or YAML; binary data is stored Base64 encoded
- Queryable through S3 Metadata: Optional annotation table in managed Apache Iceberg tables, queryable with Amazon Athena among others
- Copying:
CopyObjectcopies annotations by default; thex-amz-annotation-directiveheader controls the behaviour - Encryption: Annotations inherit the parent object’s encryption (SSE-S3, SSE-KMS, or DSSE-KMS); SSE-C is not supported
- Checksums: Supported algorithms include CRC32, CRC32C, CRC64NVME, SHA1, SHA256, and SHA512; without a specified algorithm Amazon S3 uses CRC-64/NVME
- Event notifications:
s3:ObjectAnnotation:Putands3:ObjectAnnotation:Delete - Replication: With S3 Replication configured, annotations replicate automatically and independently
Typical Use Cases
AI and ML pipelines: Store inference results, embeddings, or moderation labels directly with the source object instead of in a separate database.
Document processing: Keep classification results and extracted context with the document and query them later.
Traceability: Document data lineage, audit trails, and ETL status alongside the source object.
Compliance: Attach labels such as PII flags or retention policies to the object.
Benefits
- Context stays with the object and travels with copies and replication
- Considerably larger and more structured payloads than object tags
- Changes without re-uploading the object and without changing its ETag
- Analyzable with standard tools on Apache Iceberg tables
- Encryption matching the parent object
- Usable for archived objects without restoring them first
Integration with innFactory
As an AWS Reseller, innFactory supports you with Amazon S3 Annotations: designing an annotation schema for your AI and analytics workloads, backfilling existing object estates using S3 Batch Operations with AWS Lambda, enabling and querying annotation tables in S3 Metadata, and aligning encryption, replication, and permissions.
Typical Use Cases
Technical Specifications
Frequently Asked Questions
What are Amazon S3 Annotations?
Per the documentation, annotations are named data payloads that you attach to an Amazon S3 object after it has been uploaded. Each annotation holds between 1 byte and 1 MiB of UTF-8 text, such as AI-generated output, classification results, or processing records. You can create, retrieve, list, and delete annotations without modifying the object itself.
How many annotations can an object have?
Per the documentation you can associate up to 1,000 annotations with an object version, and names must be unique per object version. Total annotation storage per object is therefore up to 1 GiB (1,000 annotations at 1 MiB each).
How do annotations differ from object tags?
Per the documentation, object tags allow 10 entries per object version with 128 characters for the key and 256 for the value, while annotations allow 1,000 entries per object version with up to 512 bytes for the name and 1 MiB for the payload. Annotations hold any UTF-8 text such as JSON or XML, but cannot be set during upload — only afterwards through PutObjectAnnotation. Choose tags when you need IAM policy integration, S3 Lifecycle rule filtering, or cost allocation reporting.
How can annotations be queried?
You enable an annotation table in your S3 Metadata configuration. Per the documentation, it tracks the latest annotations on the objects in your bucket and makes annotation content directly queryable, with each row representing one annotation on a specific object version. The tables are managed Apache Iceberg tables and can be queried with Amazon Athena and other analytics services.
How do annotations behave with versioning and replication?
Per the documentation, annotations are attached to a specific object version and are not copied when a new version is created. Deleting an annotation is permanent, even in a versioned bucket. If S3 Replication is configured, Amazon S3 replicates annotations automatically, with each annotation replicating independently.
Which storage classes support annotations?
Per the documentation you can call the annotation API operations on objects in any storage class, including S3 Glacier and S3 Glacier Deep Archive, without restoring the object first. Annotations are not supported by S3 Inventory Reports, S3 Storage Lens, Amazon S3 File Gateway, Amazon FSx, S3 on Outposts, and S3 Express One Zone (directory buckets), among others.
Note: All product information on this page has been compiled with care, but is provided without guarantee and may be outdated or incomplete. Cloud services evolve rapidly — features, pricing, SLAs, and availability change frequently. Authoritative and up-to-date information can only be found on the official product page of AWS (official documentation). This page does not represent an offer by AWS.