Process RUM events into bundles by domain/time. Provides API to read bundles.
- RUM events logged to S3 in files
- triggered by cron (every 10min)
- read files from logs bucket in batches of N
- sort RUM event into bundle
- append or write to RUM bundle
- move
raw
file toprocessed
location
- EventBridge schedule
- bucket (
/helix-rum-bundles
)- contains bundled RUM events in the format:
/{domain}/{year}/{month}/{date}/{utc_hour}.json
- each
date/
directory contains a "bundle manifest" to track sessions
- contains bundled RUM events in the format:
- bucket (
/helix-rum-logs
)/raw/
: raw event log location, each file in this folder is a single unprocessed RUM event/processed/
: processed event location, unbundled, eg./{domain}/{year}/{month}/{date}/{utc_hour}/{date}-{id}.log
- bucket (
helix-rum-users
)/orgs/
: org data/domains/
: { org -> orgkey } maps
Contains information needed to efficiently relate new RUM events to an existing session.
{
"sessions": {
"id--path": {
"hour": 1
},
"J3Ed2--/some/path": {
"hour": 2
}
}
}
requires authorization, domainkey
GET /bundles/{domain}/{year}/${month}/{date}/{hour}
GET /bundles/{domain}/{year}/${month}/{date}
GET /bundles/{domain}/{year}/${month}
requires authorization, membership in allowlist
GET /domainkey/{domain}
POST /domainkey/{domain}
DELETE /domainkey/{domain}
requires orgadmin authorization
GET /org/{id}
POST /orgs/{id}/key
requires superuser authorization
GET /orgs
POST /orgs
POST /orgs/{id}
DELETE /orgs/{id}/domains/{domain}
GET /orgs/{id}/key
PUT /orgs/{id}/key