Amazon S3 event notifications.
%Mayfly.Events.S3{records: [%{bucket: "my-bucket", key: "uploads/report 2026.pdf"}]} =
Mayfly.Events.S3.decode(event)key is URL-decoded (+ becomes a space, %xx sequences are decoded), which
is the form you need for GetObject. event_name is kept as S3 sends it,
e.g. "ObjectCreated:Put".
Summary
Types
@type t() :: %Mayfly.Events.S3{raw: map(), records: [Mayfly.Events.S3.Record.t()]}