Skip to content

S3 Annotations Walkthrough

Learn how Amazon S3 Annotations attach structured JSON metadata directly to objects — demonstrated on live volcano camera imagery from Aotearoa New Zealand, one GeoNet site at a time.

This site documents the terraform-aws-s3-annotations-demo project — clone that repository to run Terraform, Lambda, and CLI commands shown in the walkthrough.

Aotearoa New Zealand sits on the Pacific Ring of Fire. GeoNet sensor feeds are watched 24/7 at the National Geohazards Monitoring Centre (NGMC); volcano camera JPEGs are published as open data on s3://geonet-open-data.

This walkthrough uses one site — Te Kaha (TKAH.01) on the Bay of Plenty coast, facing Whakaari/White Island. Copy each 10-minute JPEG, attach JSON with S3 Annotations, filter in a gallery.

I was fortunate to support the cloud infrastructure behind that stack for a time. This demo is separate work — Te Kaha was just a familiar feed.

S3 Annotations

What annotations are, how they colocate metadata with objects, IAM requirements, and platform tradeoffs.

Architecture

End-to-end pipeline — GeoNet ingest, private S3 storage, API query, and Amplify gallery.

Deploy and Operate

Prerequisites, terraform apply, manual ingest, optional scheduler, and teardown.

Pipeline Deep Dive

Ingest handler, annotation JSON payload, GET /images API, and optional DynamoDB mirror.

Gallery

Amplify filter UI, tag chips, and pagination for the demo gallery.

Reference

Demo project file map, external links (AWS docs, GeoNet), and local pytest instructions.