INTEGRITY Dokumentace

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.

Push-Based R2 Event Notifications

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:

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-bucket

3. 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-queue

4. 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-worker

Při nastavení vyberte následující možnosti:

Poté přejděte do svého nově vytvořeného adresáře:

cd consumer-worker

5. 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 deploy

8. 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-queue

9. 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.