Se você trabalha com S3 há algum tempo, provavelmente já enfrentou essa situação: os objetos ficam no S3, mas o contexto sobre eles, quem aprovou, qual é o status de processamento, o que um modelo de IA extraiu daquele arquivo, fica em outro lugar. Um banco de dados relacional, um DynamoDB, um arquivo sidecar numa pasta separada. E aí começa o problema clássico: o objeto muda de nome, é replicado para outra região, vai para o Glacier, e o seu banco de metadados não sabe de nada. A sincronização virou um trabalho por conta própria.
A AWS anunciou em junho de 2026 um novo recurso do Amazon S3 chamado Annotations e ele muda fundamentalmente a forma como você pode associar contexto rico aos seus objetos. Não são tags. Não são os 2 KB de user-defined metadata que você já conhece. São até 1 GB de contexto por objeto, mutável, consultável, e que viaja junto com o objeto para onde ele for.
O Problema que as Annotations Resolvem
O S3 já oferece três formas de descrever um objeto:
- System-defined metadata: tamanho, storage class, data de criação. Imutável.
- User-defined metadata: pares chave-valor definidos no upload. Limite de 2 KB, não pode ser alterado sem reescrever o objeto.
- Object tags: até 10 tags com 128/256 caracteres por chave/valor. Mutáveis, mas extremamente limitadas em capacidade.
Essas três opções funcionam bem para seus propósitos originais — controle de lifecycle, roteamento de políticas, identificação básica. O problema é quando você precisa de algo maior: um resumo gerado por IA, um conjunto de especificações técnicas em JSON, um status de moderação de conteúdo, uma cadeia de aprovações regulatórias. Nenhuma dessas opções comporta isso.
A solução do mercado sempre foi criar um sistema paralelo: um DynamoDB com a chave sendo o s3://bucket/prefix/objeto, ou uma tabela RDS, ou arquivos .meta no mesmo bucket. Funciona — até o objeto ser copiado, renomeado, replicado ou arquivado. Aí o sistema paralelo precisa saber de tudo isso, e você passa a gastar mais tempo mantendo a sincronização do que usando os metadados.
As Annotations resolvem isso colocando o contexto dentro do S3, diretamente associado ao objeto.
O Que São as Annotations na Prática
Cada objeto pode ter até 1.000 annotations nomeadas, cada uma com até 1 MB, somando até 1 GB por objeto. O formato é livre: JSON, XML, YAML ou texto simples. Cada annotation tem um nome único e pode ser criada, atualizada ou deletada independentemente — sem tocar no objeto original.
O comportamento operacional é o que diferencia as Annotations de qualquer sistema caseiro de metadados: elas acompanham o objeto automaticamente em operações de copy, replicação cross-region e transferências. Quando o objeto é deletado, as Annotations são removidas junto. Você não precisa gerenciar essa sincronização.
Como Usar: API e CLI
As operações são quatro: PutObjectAnnotation, GetObjectAnnotation, ListObjectAnnotations e DeleteObjectAnnotation. As permissões IAM necessárias são s3:PutObjectAnnotation e s3:GetObjectAnnotation.
Um exemplo prático para uma empresa de media que precisa armazenar especificações técnicas de um vídeo junto com um resumo gerado por IA:
bash
# Criar a annotation com especificações técnicas em JSON
cat > mediainfo.json << 'EOF'
{"codec":"H.265","resolution":"3840x2160","audio_tracks":8,"frame_rate":29.97}
EOF
aws s3api put-object-annotation \
--bucket meu-bucket-media \
--key videos/documentario-2026.mp4 \
--annotation-name mediainfo \
--annotation-payload ./mediainfo.json
# Criar uma segunda annotation com o resumo gerado por IA em texto
echo "Documentário de 90 minutos sobre migração de fauna selvagem em três continentes. Inclui imagens aéreas e subaquáticas. Idiomas: Português, Inglês, Espanhol." > resumo_ia.txt
aws s3api put-object-annotation \
--bucket meu-bucket-media \
--key videos/documentario-2026.mp4 \
--annotation-name resumo_ia \
--annotation-payload ./resumo_ia.txt
Cada annotation tem um nome único (mediainfo, resumo_ia), o que permite que equipes diferentes enriqueçam o mesmo objeto de forma independente — o time técnico adicionando metadados de codec enquanto o time de IA adiciona transcrições, sem interferência mútua.
Para recuperar uma annotation específica:
bash
aws s3api get-object-annotation \
--bucket meu-bucket-media \
--key videos/documentario-2026.mp4 \
--annotation-name mediainfo \
./mediainfo-output.json
Para listar todas as annotations de um objeto:
bash
aws s3api list-object-annotations \
--bucket meu-bucket-media \
--key videos/documentario-2026.mp4
O Poder Real: Consultas em Escala com S3 Metadata Tables
Anotar objetos individualmente já é útil. Mas onde as Annotations se tornam uma mudança de paradigma é na integração com o S3 Metadata — especificamente as annotation tables.
Quando você habilita as annotation tables no bucket, o S3 indexa automaticamente todas as annotations em uma tabela Apache Iceberg gerenciada. Essa tabela pode ser consultada com Amazon Athena ou qualquer engine compatível com Iceberg. Não é necessário criar schema previamente — a tabela adapta automaticamente à estrutura do JSON, XML ou YAML que você escreveu.
Para habilitar via API:
json
{
"JournalTableConfiguration": {
"RecordExpiration": { "Expiration": "DISABLED" }
},
"InventoryTableConfiguration": { "ConfigurationState": "DISABLED" },
"AnnotationTableConfiguration": {
"ConfigurationState": "ENABLED",
"Role": "arn:aws:iam::123456789012:role/S3MetadataAnnotationRole"
}
}
Com isso habilitado, você consegue fazer consultas como: “Encontre todos os vídeos do bucket com mais de 8 faixas de áudio”:
sql
SELECT DISTINCT bucket, object_key
FROM "s3tablescatalog/aws-s3"."b_meu_bucket_media"."annotation"
WHERE name = 'mediainfo'
AND CAST(json_extract_scalar(text_value, '$.audio_tracks') AS INTEGER) > 8
Ou rastrear quais objetos receberam novas annotations nas últimas 24 horas via journal table:
sql
SELECT bucket, key, version_id, record_timestamp, annotation.name
FROM "s3tablescatalog/aws-s3"."b_meu_bucket_media"."journal"
WHERE record_timestamp >= (current_date - interval '1' day)
AND annotation.name IS NOT NULL
AND record_type IN ('CREATE_ANNOTATION', 'DELETE_ANNOTATION')
Um detalhe importante: é possível consultar annotations de objetos em qualquer storage class — incluindo S3 Glacier — sem pagar retrieval charges e sem precisar restaurar os objetos. Isso abre possibilidades reais para auditoria e compliance de dados arquivados, que antes exigiam ou restauração cara ou sistemas de catálogo externos.
Casos de Uso Concretos
Pipelines de IA e agentes autônomos: um agente pode enriquecer objetos com os resultados do seu processamento — transcrições, classificações, embeddings — diretamente na annotation, sem precisar de um banco de controle externo para saber “o que já foi processado” e “o que o modelo extraiu”.
Compliance e auditoria em serviços financeiros: documentos de pesquisa podem receber annotations com análises de sentimento geradas por IA e resumos de investimento, permitindo que agentes de pesquisa descubram datasets relevantes sem manter bancos de metadados separados.
Life Sciences e dados regulatórios: dados de trials clínicos podem ter annotations com status regulatório, detalhes de coorte de pacientes e cadeias de aprovação — tornando auditorias mais rápidas e mantendo o contexto acessível mesmo para dados arquivados.
Pontos de Atenção
Custo: o armazenamento das Annotations é cobrado a taxas do S3 Standard, mesmo que o objeto pai esteja em Glacier ou outra storage class. Para objetos com annotations grandes em Glacier, o custo da annotation pode superar o do próprio objeto.
Latência de indexação: as journal tables são atualizadas em near real time, mas as annotation tables levam até uma hora para refletir novas annotations. Para backfill de buckets com muitos objetos já existentes, o processo pode levar horas a dias.
Disponibilidade: as Annotations estão disponíveis em todas as regiões AWS, incluindo China Regions. As annotation tables estão disponíveis nas regiões onde o S3 Metadata está habilitado.
Conclusão
O S3 Annotations resolve um problema que existe desde que o S3 existe: como associar contexto rico e mutável a objetos sem construir e manter um sistema paralelo de metadados. A combinação de até 1 GB por objeto, formatos flexíveis, sincronização automática em operações de copy e replicação, e consultas em escala via Athena transforma o S3 num repositório de dados que carrega sua própria inteligência.
Para times que trabalham com pipelines de IA, processamento de media em escala, ou compliance de dados arquivados, essa é possivelmente a adição mais relevante ao S3 nos últimos anos — e chega num momento em que agentes autônomos precisam exatamente desse tipo de contexto consultável diretamente na camada de armazenamento.


