INTEGRITY Dokumentace

Workers API

Workers umožňují spouštět kód na okraji sítě. Po propojení (bind) bucketu R2 s Workerem můžete objekty přímo číst a zapisovat pomocí Workers API.

1. Vytvořte bucket

Bucket ukládá vaše objekty v R2. Nový R2 bucket vytvoříte takto:

  1. Přihlaste se ke svému účtu Cloudflare:

    npx wrangler login
  2. Vytvořte bucket s názvem my-bucket:

    npx wrangler r2 bucket create my-bucket

    Pokud se zobrazí výzva, vyberte účet, ve kterém chcete bucket vytvořit.

  3. Ověřte, že byl bucket vytvořen:

    npx wrangler r2 bucket list
  1. V Cloudflare Dashboard přejděte na Objektové úložiště R2.

    Přejděte na Přehled ↗
  2. Vyberte Vytvořit bucket.

  3. Zadejte název svého bucketu.

  4. Vyberte umístění pro váš bucket a výchozí třída úložiště.

  5. Vyberte Vytvořit bucket.

2. Vytvořte Worker s R2 binding

  1. Vytvořte nový projekt Worker:

    npm create cloudflare@latest -- r2-worker

    Po zobrazení výzvy vyberte Příklad Hello World a JavaScript (nebo TypeScript) jako šablonu.

  2. Přejděte do adresáře projektu:

    cd r2-worker
  3. Přidejte vazbu R2 do konfiguračního souboru Wrangler. Nahraďte my-bucket s názvem vašeho bucketu:

    {
      "r2_buckets": [
        {
          "binding": "MY_BUCKET",
          "bucket_name": "my-bucket"
        }
      ]
    }
    [[r2_buckets]]
    binding = "MY_BUCKET"
    bucket_name = "my-bucket"
  4. (Volitelné) Pokud používáte TypeScript, znovu vygenerujte typy:

    npx wrangler types

3. Čtěte a zapisujte objekty

Pro práci s vaším bucketem použijte binding. Tento příklad ukládá a načítá objekty na základě cesty URL:

src/index.js
export default {
	async fetch(request, env) {
		// Get the object key from the URL path
		// For example: /images/cat.png → images/cat.png
		const url = new URL(request.url);
		const key = url.pathname.slice(1);

		// PUT: Store the request body in R2
		if (request.method === "PUT") {
			await env.MY_BUCKET.put(key, request.body);
			return new Response(`Put ${key} successfully!`);
		}

		// GET: Retrieve the object from R2
		const object = await env.MY_BUCKET.get(key);
		if (object === null) {
			return new Response("Object not found", { status: 404 });
		}
		return new Response(object.body);
	},
};
src/index.ts
export default {
	async fetch(request, env): Promise<Response> {
		// Get the object key from the URL path
		// For example: /images/cat.png → images/cat.png
		const url = new URL(request.url);
		const key = url.pathname.slice(1);

		// PUT: Store the request body in R2
		if (request.method === "PUT") {
			await env.MY_BUCKET.put(key, request.body);
			return new Response(`Put ${key} successfully!`);
		}

		// GET: Retrieve the object from R2
		const object = await env.MY_BUCKET.get(key);
		if (object === null) {
			return new Response("Object not found", { status: 404 });
		}
		return new Response(object.body);
	},
} satisfies ExportedHandler<Env>;

4. Otestujte a nasaďte

  1. Otestujte svůj Worker lokálně:

    npx wrangler dev
  2. Jakmile vývojářský server běží, otestujte ukládání a načítání objektů:

    # Store an object
    curl -X PUT http://localhost:8787/my-file.txt -d 'Hello, R2!'
    
    # Retrieve the object
    curl http://localhost:8787/my-file.txt
  3. Nasazení do produkce:

    npx wrangler deploy
  4. Po nasazení Wrangler vypíše adresu URL vašeho Workeru (například https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev). Otestujte ukládání a načítání objektů:

    # Store an object
    curl -X PUT https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev/my-file.txt -d 'Hello, R2!'
    
    # Retrieve the object
    curl https://r2-worker.<YOUR_SUBDOMAIN>.workers.dev/my-file.txt

Viz Dokumentace Workers R2 API pro úplnou referenci API.

Další kroky

Presigned URLs

Generujte dočasné URL adresy pro soukromý přístup k objektům.

Veřejné buckety

Poskytujte soubory přímo přes HTTP pomocí veřejného bucketu.

CORS

Nakonfigurujte CORS pro nahrávání souborů z prohlížeče.

Životní cyklus objektů

Nastavte pravidla životního cyklu pro automatické mazání starých objektů.