Export an den Objektspäicher
Ee JSON-Objet pro erfëlltem Zil, an engem Bucket, deen Iech gehéiert. Dat ass de Wee an all Datewarehouse, dat net BigQuery ass.
1. Déi Lück, déi dat schléisst
Bis elo gouf et genee ee Wee vu MousePlayer an en Datewarehouse, an dee goung op Google. Wann Dir Snowflake, Redshift oder ClickHouse benotzt, gouf et keen — obwuel se allen dräi ouni Problem aus Objektspäichere liesen.
Dofir schreift d'Bréck an den Objektspäicher amplaz noeneen an all Warehouse. Snowflake liest aus S3, Redshift liest aus S3, ClickHouse liest aus S3, a BigQuery liest aus Google Cloud Storage. Een Export erreecht se all.
| Wou | Wéi et adresséiert gëtt |
|---|---|
| Amazon S3 | Signature Version 4, Bucket am Host |
| Cloudflare R2 | Signature Version 4 géint Äre Kontendpunkt |
| Google Cloud Storage | iwwer seng S3-kompatibel API, mat engem HMAC-Schlëssel |
| MinIO, Wasabi, Backblaze B2 an anerer | Signature Version 4 géint Ären Endpunkt |
| Azure Blob Storage | e Container-SAS-Link — iwwerhaapt keng Ënnerschrëft op eiser Säit |
2. Firwat Azure d'Ausnam ass a firwat dat besser ass
Azure Blob ënnerstëtzt Signature Version 4 net; et ënnerschreift mat SharedKey. Mir hätten en zweeten Ënnerschrëftschema baue kënnen. Amplaz hëlt d'Bréck e Container-SAS-Link — eng URL, déi Dir an Ärem eegene Späicherkont generéiert, mat der Ënnerschrëft schonn dran.
Dat bedeit manner Code op eiser Säit a manner néidegt Vertrauen op Ärer. Mir gesinn iwwerhaapt kee Kontschlëssel: Dir gitt eng Berechtegung weider, déi Dir selwer begrenzt hutt, op ee Container, mat engem Oflafdatum no Ärer Wiel, zu all Moment zréckzéibar ouni soss eppes ze beréieren.
Déiselwecht Zeréckhalung lount sech op der S3-Säit: Gitt dem Zougrëffsschlëssel nëmmen d'Schreifberechtegung fir dësen eenzege Präfix an näischt Anescht. E Schlëssel, deen nëmme bei mouseplayer/goals/ bäifüge kann, kann Är aner Buckets net liesen, och wann en ausleeft.
3. Een Objet pro Zil, an de Schlëssel ass en Datum
Objektspäicher kennen net d'Bäifügen un eng Datei. Eng deeglech Datei misst all Kéier ganz nei geschriwwe ginn, an zwee Ziler, déi gläichzäiteg ukommen, géife sech géigesäiteg iwwerschreiwen. Dofir gëtt all erfëllt Zil en eegene Objet.
De Präis si vill kleng Objeten; d'Opdeelung vum Schlëssel mécht dat benotzbar:
prefix/YYYY/MM/DD/channel/session-goal.json
E Warehouse liest een Dag als eng Partitioun, an en Nodroe gëtt e Präfixscan amplaz eng Ufro. Wann Dir no Projet amplaz no Datum partitionéiere wëllt, setzt d'Kanal-ID an de Präfix.
All Objet ass eng Zeil JSON
Bewosst net ageréckt, soudatt e ganze Präfix als NDJSON liesbar ass, ouni d'Objeten eenzel opzemaachen. Zäitstempel, Projet, Sessioun, Clients-ID, Zil, Wäert, Währung an de Link, deen d'Opnam ofspillt.
En eidele Wäert ass null, net null als Zuel
En Zil ouni Geldwäert schreift null. An engem Warehouse géif eng Null mat an eng Zomm fléissen, déi ni existéiert huet — den Ënnerscheed tëschent „kee Betrag ofgemaach“ an „e Betrag vun null“ bleift beim Export erhalen.
4. Wann et mat 403 äntwert, liest dëst als Éischt
Eng refuséiert S3-Ufro seet bal näischt, an et gëtt e Grond, firwat d'Feelermeldung an eisem Protokoll méi seet ewéi S3: D'Regioun geet an d'Ënnerschrëft an. Eng falsch Regioun an e falsche Schlëssel produzéieren dee selwechte 403. Déi offensichtlech Vermuddung — de Schlëssel — ass also nëmmen an der Hallschent vun de Fäll richteg.
Dräi Saachen an dëser Reiefolleg iwwerpréiwen:
- D'Regioun, genee esou, wéi de Bucket se mellt. R2 a Google Cloud Storage huelen
autoa kontrolléiere se net; all déi aner maachen et. - D'Präfixberechtegung. E Schlëssel, deen op
mouseplayer/begrenzt ass, kann net opmouseplayer-goals/schreiwen — de schréie Stréch um Enn ass an engem Ressource-ARN wichteg. - Den Endpunkt, fir R2 a S3-kompatibel Späicheren. Setzt den Host ouni
https://an; mir huelen et souwisou ewech, mee e Wee, deen drun hänkt, ass en anere Bucket.
D'Zougrëffsschlëssel-ID gëtt bewosst am Kloertext gespäichert. Si gëtt bestëmmungsgeméiss mat all ënnerschriwwener Ufro verschéckt; se ze verschlësselen, wier Opwand ouni Schutz. D'Geheimnis gëtt verschlësselt, ni méi gewisen a kënnt ni an déi intern Warteschlaang, déi d'Aufgab transportéiert.
All hei genannt Marke gehéieren hire jeeweilege Besëtzer. MousePlayer huet keng Geschäftsbezéiung mat dësen Ubidder.