INTEGRITY Dokumentace

Ukládání obsahu vytvořeného uživateli

Úvod

Obsah vytvářený uživateli (UGC) je zásadní součástí moderních aplikací. Patří sem nahrávání profilových fotografií, dokumentů a videí uživateli, ale i generování obrázků, souhrnů nebo strukturovaných dat pomocí AI modelů. Aplikace proto potřebují spolehlivé, škálovatelné a nákladově efektivní řešení pro ukládání tohoto obsahu a přístup k němu.

Cloudflare R2 je objektové úložiště kompatibilní s S3 bez poplatků za odchozí přenos dat, takže se ideálně hodí pro nahrávání a doručování obsahu ve velkém měřítku. V kombinaci s Cloudflare Workers a globální síti Cloudflare umožňuje rychlé, bezpečné a nákladově efektivní procesy pro příjem a správu obsahu UGC.

Tato referenční architektura popisuje dva běžné workflow pro obsah vytvářený uživateli (UGC), oba optimalizované z hlediska výkonu, zabezpečení a nákladové efektivity:

  1. Zabezpečené nahrávání souborů od uživatelů do R2 pomocí Signed URLs: Umožňuje uživatelům efektivně a bezpečně nahrávat soubory (profilové obrázky, dokumenty atd.), aniž by přetěžovali backendové systémy.
  2. Obsah generovaný AI uložený v R2: Ukládání obsahu vygenerovaného pomocí Workers AI nebo externích AI služeb, díky čemuž jsou výsledky inference trvale dostupné pro pozdější použití.

Případy užití

Případ užití 1: Zabezpečené nahrávání souborů uživatelů do R2 pomocí podepsaných URL

Obsah vytvářený uživateli obvykle začíná nahráváním souborů, včetně profilových fotografií, životopisů, bohatých médií a dokumentů. Aplikace musí tato nahrání bezpečně validovat a ukládat, a zároveň se vyhnout latenci, vysokým nákladům a zbytečné složitosti na backendu.

V této architektuře používáme R2 jako primární úložnou vrstvu a Worker k řízení přístupu k nahrávání. Soubory se nahrávají přímo z prohlížeče nebo zařízení uživatele do R2 pomocí podepsaných URL, které Worker vygeneruje po ověření oprávnění uživatele a záměru nahrání.

Tento přístup se vyhýbá směrování velkých souborů přes backend aplikace nebo Worker, čímž snižuje latenci i provozní náklady, a zároveň zajišťuje přísnou kontrolu přístupu a zabezpečení.

A protože je R2 nativně integrováno do globální sítě Cloudflare, soubory uložené v R2 jsou dostupné s nízkou latencí odkudkoli ve světě, a bez jakýchkoli poplatků za odchozí přenos dat, a to i s tím, jak vaše aplikace roste.

Případ užití 1: Zabezpečené nahrávání souborů uživatelů do R2 pomocí podepsaných URL
Případ užití 1: Zabezpečené nahrávání souborů uživatelů do R2 pomocí podepsaných URL

Jak to funguje

  1. Uživatel zahájí nahrávání z frontendu: Aplikace shromáždí údaje o souboru (například velikost a název) a zavolá backendové API (Cloudflare Worker), které zahájí proces nahrávání.
  2. Worker ověří uživatele a zkontroluje platnost požadavku: Worker ověří, že je uživatel přihlášen, má oprávnění k nahrávání a že soubor splňuje povolené limity (například maximální velikost 10 MB, povolené typy MIME).
  3. Worker vrátí podepsanou PUT URL adresu pro R2: Podepsaná URL adresa umožňuje frontendu nahrávat soubory přímo do R2 po omezenou dobu, pod konkrétním klíčem nebo v konkrétním jmenném prostoru. Worker tak nemusí velké soubory zpracovávat přímo.
  4. Frontend nahraje soubor přímo do R2: Soubor se streamuje přímo z klienta do R2.
  5. (Volitelné) Spusťte pracovní postupy po nahrání: R2 nabízí oznámení o událostech k odesílání zpráv do fronty při změně dat ve vašem R2 bucketu, například při novém nahrání. Příklad následného zpracování:
    • Skenujte, moderujte nebo transformujte soubor.
    • Zápis metadat (například user_id, file_path, timestamp) na D1, serverless SQL databáze od Cloudflare.
    • Upozornit uživatele nebo aktualizovat dashboard/UI.

Další informace o přímém nahrávání dat z klienta do R2 najdete v dokumentaci k předem podepsané URL adresy.

Případ užití 2: Obsah vygenerovaný AI uložený v R2

Mnoho moderních aplikací využívá obsah generovaný pomocí AI, který může zahrnovat popisy produktů, profilové fotky, zvukové klipy a další. Pokud tento obsah vzniká v reakci na akce uživatelů nebo naplánované události, musí být uložen okamžitě, spolehlivě a ve velkém měřítku.

Tato architektura využívá Workers AI k provádění inference na edge a poté ukládá vygenerovaný výstup přímo do Cloudflare R2, to vše v rámci jediného Workeru.

Případ užití 2: Obsah vygenerovaný AI uložený v R2
Případ užití 2: Obsah vygenerovaný AI uložený v R2

Jak to funguje

  1. Uživatel zahájí generování obsahu: Frontend odešle požadavek na Cloudflare Worker, aby pomocí AI modelu vytvořil obsah (například „Vytvoř náhledový obrázek pro tento produkt“).
  2. Worker vyvolá Workers AI: Worker předá uživatelský vstup modelu nasazenému ve Workers AI.
  3. Vygenerovaný výstup se vrátí Workeru: Odpověď může mít podobu prostého textu, obrázku v Base64, binárního bufferu nebo jiných strukturovaných dat, v závislosti na typu modelu.
  4. Worker nahraje výstup přímo do R2: Podepsaná URL adresa ani nahrávání z klienta nejsou potřeba. Worker provádí zabezpečený, ověřený PUT požadavek na uložení výstupu do určeného bucketu.
  5. Worker vrátí frontendu úspěšnou odpověď a metadata: Klient obdrží odkaz na uložený soubor (například cestu, klíč objektu nebo v případě potřeby podepsanou URL adresu pro stažení).

Viz Použití R2 z Workers s dalšími informacemi o přístupu k bucketům R2 pomocí Cloudflare Workers.

Souhrn

Uložením obsah vytvářený uživateli v Cloudflare R2, aplikace získávají:

Tato architektura zajišťuje, že obsah je uložen, zpracován a doručen rychle, bezpečně a nákladově efektivně.