← Cloudflare Pipelines / pipelines / streams
Zápis do streamů
Odesílejte události do streamů pomocí Worker bindings nebo HTTP koncové body pro klientské aplikace a externí systémy.
Odeslat přes Workers
Worker bindings poskytují bezpečný způsob odesílání dat do streamů z Workers bez nutnosti spravovat API tokeny nebo přihlašovací údaje.
Konfigurace pipeline bindingu
Do souboru Wrangler přidejte pipeline binding, který odkazuje na váš stream:
{
"pipelines": [
{
"binding": "STREAM",
"stream": "<STREAM_ID>"
}
]
}[[pipelines]]
binding = "STREAM"
stream = "<STREAM_ID>"Workers API
Pipeline binding zpřístupňuje metodu pro odesílání dat do vašeho streamu:
send(records)
Odešle do streamu pole záznamů serializovatelných do JSON. Vrátí Promise, který se vyřeší ve chvíli, kdy je přijetí záznamů potvrzeno.
export default {
async fetch(request, env, ctx) {
const events = await request.json();
await env.STREAM.send(events);
return new Response("Events sent");
},
};export default {
async fetch(request, env, ctx): Promise<Response> {
const events = await request.json<Record<string, unknown>[]>();
await env.STREAM.send(events);
return new Response("Events sent");
},
} satisfies ExportedHandler<Env>;Typované pipeline bindings
Pokud má stream definované schéma, spuštění wrangler types generuje typy TypeScript specifické pro schéma pro vaše vazby pipeline. Namísto obecného Pipeline<PipelineRecord>, vaše bindings získají pojmenovaný typ záznamu s plnou podporou automatického doplňování a kontrolou typů při kompilaci. Podrobnosti najdete v wrangler types dokumentace a zjistěte více.
Vygenerované typy
Po spuštění wrangler types, vygenerovaný worker-configuration.d.ts soubor obsahuje pojmenovaný typ záznamu uvnitř Cloudflare jmenném prostoru. Název typu je odvozen od názvu streamu (nikoli od názvu vazby) a převeden na PascalCase s Record příponu.
Níže je příklad, jak vypadají vygenerované typy v worker-configuration.d.ts pro stream s názvem ecommerce_stream:
declare namespace Cloudflare {
type EcommerceStreamRecord = {
user_id: string;
event_type: string;
product_id?: string;
amount?: number;
};
interface Env {
STREAM: import("cloudflare:pipelines").Pipeline<Cloudflare.EcommerceStreamRecord>;
}
}Záložní chování
wrangler types se vrátí k obecnému Pipeline<PipelineRecord> typ v následujících scénářích:
- Neověřeno: Spusťte
wrangler loginpro povolení typovaných pipeline bindingů. - Stream nebyl nalezen: ID streamu v konfiguraci Wrangler neodpovídá žádnému existujícímu streamu.
- Nestrukturovaný stream: Stream byl vytvořen bez schématu.
Odeslat přes HTTP
Každý stream poskytuje volitelný HTTP endpoint pro příjem dat z externích aplikací, prohlížečů nebo libovolného systému, který umí odesílat HTTP požadavky.
Formát endpointu
HTTP koncové body mají následující formát:
https://{stream-id}.ingest.cloudflare.comKoncový bod URL vašeho streamu najdete v Cloudflare dashboardu v části Pipelines > Streams nebo pomocí Wrangler CLI se zadáním ID streamu nebo názvu streamu:
npx wrangler pipelines streams get <STREAM_NAME_OR_ID>Vytváření požadavků
Odesílejte události jako pole JSON pomocí požadavků POST:
curl -X POST https://{stream-id}.ingest.cloudflare.com \
-H "Content-Type: application/json" \
-d '[
{
"user_id": "12345",
"event_type": "purchase",
"product_id": "widget-001",
"amount": 29.99
}
]'Ověřování
Pokud je pro váš stream povoleno ověřování, zahrňte API token do Authorization hlavičku:
curl -X POST https://{stream-id}.ingest.cloudflare.com \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '[{"event": "test"}]'API token musí mít Workers Pipeline Send oprávnění. Další informace najdete v Vytvoření API tokenu dokumentace.
Ověřování schématu
Streams zpracovávají validaci odlišně v závislosti na své konfiguraci:
- Strukturované streamy: Události musí odpovídat definovaným polím a typům schématu.
- Nestrukturované streamy: Přijímá libovolnou platnou strukturu JSON. Data se ukládají do jednoho
valuesloupec.
U strukturovaných streamů dbejte na to, aby vaše události odpovídaly definici schématu. Neplatné události budou přijaty, ale následně zahozeny, proto si data před odesláním ověřte, abyste zahazování událostí předešli. Při použití Worker bindings spusťte wrangler types k vygenerování typované vazby pipeline které zachytí porušení schématu už při kompilaci. Můžete také dotazovat metriky uživatelských chyb ke sledování zahozených událostí a diagnostice problémů s validací schématu.