← Cloudflare R2 / r2 / tutorials
Protokolujte a ukládejte události nahrávání v R2 pomocí Event Notifications
Tento příklad poskytuje podrobný návod na použití oznámení o událostech abyste zachytávali a ukládali logy nahrávání do R2 v samostatném bucketu.
1. Nainstalujte Wrangler
Pro začátek si přečtěte Instalace/aktualizace Wrangler abyste nainstalovali Wrangler, CLI nástroj Cloudflare Developer Platform.
2. Vytvořte R2 buckety
Budete muset vytvořit dva R2 buckety:
example-upload-bucket: Když jsou do tohoto bucketu nahrány nové objekty, váš přijímající Worker bude zapisovat protokoly.example-log-sink-bucket: Nahrajte logy zexample-upload-bucketbudou zapsány do tohoto bucketu.
Chcete-li vytvořit buckety, spusťte následující příkazy Wrangler:
npx wrangler r2 bucket create example-upload-bucket
npx wrangler r2 bucket create example-log-sink-bucket3. Vytvořte queue
Oznámení o událostech zaznamenávají změny dat v example-upload-bucket. Budete muset vytvořit novou queue pro příjem notifikací:
npx wrangler queues create example-event-notification-queue4. Vytvořte Worker
Než povolíte oznámení o událostech pro example-upload-bucket, musíte vytvořit přijímající Worker pro příjem oznámení.
Vytvořte nový Worker pomocí C3 (create-cloudflare CLI). C3 je nástroj příkazového řádku, který vám pomůže nastavit a nasadit nové aplikace, včetně Workers, na Cloudflare.
npm create cloudflare@latest -- consumer-workerPři nastavení vyberte následující možnosti:
- Pro S čím byste chtěli začít?, vyberte
Hello World example. - Pro Jakou šablonu chcete použít?, vyberte
Worker only. - Pro Jaký jazyk chcete použít?, vyberte
TypeScript. - Pro Chcete používat git pro správu verzí?, vyberte
Yes. - Pro Chcete nasadit svou aplikaci?, vyberte
No(před nasazením provedeme ještě několik změn).
Poté přejděte do svého nově vytvořeného adresáře:
cd consumer-worker5. Nakonfigurujte svůj Worker
Ve vašem projektu Workeru [Konfigurační soubor Wrangler](/workers/wrangler/configuration/), přidejte odběratel fronty a R2 bucket binding. Queues consumer bindings zaregistrují váš Worker jako consumer budoucích event notifications a R2 bucket bindings umožní vašemu Workeru přístup k vašemu R2 bucketu.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "event-notification-writer",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-08-28",
"compatibility_flags": [
"nodejs_compat"
],
"queues": {
"consumers": [
{
"queue": "example-event-notification-queue",
"max_batch_size": 100,
"max_batch_timeout": 5
}
]
},
"r2_buckets": [
{
"binding": "LOG_SINK",
"bucket_name": "example-log-sink-bucket"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "event-notification-writer"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"
compatibility_flags = [ "nodejs_compat" ]
[[queues.consumers]]
queue = "example-event-notification-queue"
max_batch_size = 100
max_batch_timeout = 5
[[r2_buckets]]
binding = "LOG_SINK"
bucket_name = "example-log-sink-bucket"6. Zapisujte zprávy event notification do R2
Přidejte queue handler na src/index.ts pro zápis dávek oznámení do našeho log sink bucketu (nepotřebujete obslužná rutina fetch):
export interface Env {
LOG_SINK: R2Bucket;
}
export default {
async queue(batch, env): Promise<void> {
const batchId = new Date().toISOString().replace(/[:.]/g, "-");
const fileName = `upload-logs-${batchId}.json`;
// Serialize the entire batch of messages to JSON
const fileContent = new TextEncoder().encode(
JSON.stringify(batch.messages),
);
// Write the batch of messages to R2
await env.LOG_SINK.put(fileName, fileContent, {
httpMetadata: {
contentType: "application/json",
},
});
},
} satisfies ExportedHandler<Env>;7. Nasaďte svůj Worker
Chcete-li nasadit svého consumer Workera, spusťte wrangler deploy příkaz:
npx wrangler deploy8. Povolte event notifications
Nyní, když máte Worker příjemce připravený zpracovávat příchozí zprávy s oznámeními o událostech, je potřeba povolit oznámení o událostech pomocí wrangler r2 bucket notification create příkaz pro example-upload-bucket:
npx wrangler r2 bucket notification create example-upload-bucket --event-type object-create --queue example-event-notification-queue9. Otestujte
Nyní můžete otestovat celý průběh od začátku do konce nahráním objektu do example-upload-bucket v dashboardu Cloudflare. Po nahrání objektu se protokoly zobrazí v example-log-sink-bucket během několika sekund.