INTEGRITY Dokumentace

Začínáme

Workers KV poskytuje globální úložiště s nízkou latencí a vysokou propustností pro vaše Cloudflare Workers aplikace. Workers KV je ideální pro ukládání konfiguračních dat uživatelů, směrovacích dat, konfigurací A/B testování a autentizačních tokenů a hodí se zejména pro zátěže s vysokým podílem čtení.

Tento návod vás provede:

Tyto úkony můžete provádět prostřednictvím rozhraní Wrangler CLI nebo dashboardu Cloudflare.

Rychlý start

Pokud chcete kroky nastavení vynechat a rychle začít, klikněte na tlačítko níže.

Deploy to Cloudflare

Tím se vytvoří repozitář ve vašem účtu GitHub a aplikace se nasadí na Cloudflare Workers. Tuto možnost použijte, pokud Cloudflare Workers dobře znáte a chcete přeskočit podrobné pokyny krok za krokem.

Pokud s Cloudflare Workers teprve začínáte, můžete kroky projít ručně.

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

1. Vytvořte projekt Worker

Vytvořte nového Workera pro čtení a zápis do vašeho KV namespace.

  1. Vytvořte nový projekt s názvem kv-tutorial spuštěním:

    npm create cloudflare@latest -- kv-tutorial

    Př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).

    Tím se vytvoří nová kv-tutorial adresáři, jak je znázorněno níže.

    • kv-tutorial/
      • node_modules/
      • test/
      • src
        • index.ts
      • package-lock.json
      • package.json
      • testconfig.json
      • vitest.config.mts
      • worker-configuration.d.ts
      • wrangler.jsonc

    Váš nový kv-tutorial adresář obsahuje:

    • A "Hello World" Worker v index.ts.
    • A wrangler.jsonc konfigurační soubor. wrangler.jsonc je způsob, jakým vaše kv-tutorial Worker přistupuje k vaší databázi kv.
  2. Přejděte do adresáře, který jste právě vytvořili pro svůj projekt Worker:

    cd kv-tutorial
  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte Vytvoření aplikace.

  3. Vyberte Začněte s Hello World! > Začínáme.

  4. Pojmenujte svého Workera. Pro účely tohoto tutoriálu pojmenujte svého Workera kv-tutorial.

  5. Vyberte Nasadit.

2. Vytvořte KV namespace

A KV namespace je databáze klíč-hodnota replikovaná do globální sítě Cloudflare.

Můžete použít Wrangler k vytvoření nového KV namespace. Můžete ho také použít k provádění operací, jako jsou put, list, get a delete, v rámci vašeho KV namespace.

Vytvoření jmenného prostoru KV pomocí Wrangleru:

  1. Otevřete terminál a spusťte následující příkaz:

    npx wrangler kv namespace create <BINDING_NAME>

    npx wrangler kv namespace create <BINDING_NAME> subpříkaz jako argument přijímá název nové binding. KV namespace se vytvoří spojením názvu vašeho Workeru (ze souboru Wrangler) a názvu binding, který zadáte. <BINDING_ID> se vygeneruje náhodně.

    Pro účely tohoto tutoriálu použijte název bindingu USERS_NOTIFICATION_CONFIG.

    npx wrangler kv namespace create USERS_NOTIFICATION_CONFIG
    🌀 Creating namespace with title "USERS_NOTIFICATION_CONFIG"
    ✨ Success!
    Add the following to your configuration file in your kv_namespaces array:
    {
    	"kv_namespaces": [
    		{
    			"binding": "USERS_NOTIFICATION_CONFIG",
    			"id": "<BINDING_ID>"
    		}
    	]
    }
  1. V dashboardu Cloudflare přejděte na Workers KV stránce.

    Přejděte na Workers KV ↗
  2. Vyberte Vytvořit instanci.

  3. Zadejte název pro svůj namespace. Pro účely tohoto tutoriálu použijte kv_tutorial_namespace.

  4. Vyberte Vytvořit.

3. Připojení Workeru ke KV namespace

Pro propojení Workeru s oborem názvů KV musíte vytvořit vazbu. Bindings umožňují vašim Workers přistupovat k prostředkům, jako je KV, na vývojářské platformě Cloudflare.

Navázání vašeho jmenného prostoru KV na váš Worker:

  1. Do souboru Wrangler přidejte následující s hodnotami, které jste v terminálu vygenerovali pomocí krok 2:

    {
    	"kv_namespaces": [
    		{
    			"binding": "USERS_NOTIFICATION_CONFIG",
    			"id": "<BINDING_ID>"
    		}
    	]
    }
    [[kv_namespaces]]
    binding = "USERS_NOTIFICATION_CONFIG"
    id = "<BINDING_ID>"

    Názvy vazeb (binding) nemusí odpovídat vytvořenému namespace. Slouží pouze jako reference. Konkrétně:

    • Hodnota (řetězec), kterou nastavíte pro binding slouží k odkazování na tento KV namespace ve vašem Workeru. Pro účely tohoto tutoriálu by mělo být USERS_NOTIFICATION_CONFIG.
    • Binding musí být platný název proměnné v JavaScriptu ↗. Například binding = "MY_KV" nebo binding = "routingConfig" by byly oba platné názvy pro binding.
    • Váš binding je ve Workeru dostupný na env.<BINDING_NAME> zevnitř vašeho Workeru. Pro účely tohoto tutoriálu je binding dostupný na env.USERS_NOTIFICATION_CONFIG.
  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte kv-tutorial Worker, který jste vytvořili v krok 1.

  3. Přejděte do Bindings kartě a poté vyberte Add binding.

  4. Vyberte KV namespace > Add binding.

  5. Pojmenujte binding (BINDING_NAME) v Název proměnné, poté vyberte KV namespace (kv_tutorial_namespace) kterou jste vytvořili v krok 2 z rozbalovací nabídky.

  6. Vyberte Add binding k nasazení vaší vazby.

4. Práce s vaším KV namespace

S oborem názvů KV můžete pracovat prostřednictvím Wrangler nebo přímo z vašeho Workers aplikace.

4.1. Zápis hodnoty

Zápis hodnoty do prázdného jmenného prostoru KV pomocí Wrangleru:

  1. Spustit wrangler kv key put subpříkaz ve svém terminálu a zadejte postupně klíč a hodnotu. <KEY> a <VALUE> jsou hodnoty podle vašeho výběru.

    npx wrangler kv key put --binding=<BINDING_NAME> "<KEY>" "<VALUE>"

    V tomto tutoriálu přidáte klíč user_1 s hodnotou enabled do KV namespace, který jste vytvořili v krok 2.

    npx wrangler kv key put --binding=USERS_NOTIFICATION_CONFIG "user_1" "enabled"
    Writing the value "enabled" to key "user_1" on namespace <BINDING_ID>.
  1. V dashboardu Cloudflare přejděte na Workers KV stránce.

    Přejděte na Workers KV ↗
  2. Vyberte KV namespace, který jste vytvořili (kv_tutorial_namespace).

  3. Přejděte na Páry KV kartě.

  4. Zadejte <KEY> dle vlastního výběru.

  5. Zadejte <VALUE> dle vlastního výběru.

  6. Vyberte Přidat položku.

4.2. Získání hodnoty

Přístup k hodnotě z vašeho jmenného prostoru KV pomocí Wrangleru:

  1. Spustit wrangler kv key get subpříkaz ve svém terminálu a zadejte hodnotu klíče:

    npx wrangler kv key get --binding=<BINDING_NAME> "<KEY>"

    V tomto tutoriálu získáte hodnotu klíče user_1 z KV namespace, který jste vytvořili v krok 2.

    npx wrangler kv key get --binding=USERS_NOTIFICATION_CONFIG "user_1" --text

    Podobně jako put příkazu get příkaz lze také použít pro přístup ke KV namespace dvěma způsoby: pomocí --binding nebo --namespace-id:

Viz kv bulk dokumentace k zápisu souboru s více páry klíč-hodnota do daného KV namespace.

Páry klíč-hodnota můžete zobrazit přímo z dashboardu.

  1. V dashboardu Cloudflare přejděte na Workers KV stránce.

    Přejděte na Workers KV ↗
  2. Přejděte do jmenného prostoru KV, který jste vytvořili (kv_tutorial_namespace).

  3. Přejděte na Páry KV kartě.

5. Přístup ke KV namespace z Workeru

  1. Do skriptu Worker přidejte vazbu KV do Env rozhraní. Pokud jste svůj projekt inicializovali pomocí JavaScriptu, tento krok není nutný.

    interface Env {
    	USERS_NOTIFICATION_CONFIG: KVNamespace;
    	// ... other binding types
    }
  2. Použijte put() metodu na USERS_NOTIFICATION_CONFIG k vytvoření nového páru klíč-hodnota. Přidáte nový klíč user_2 s hodnotou disabled do vašeho KV namespace.

    let value = await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
  3. Použijte KV get() metodu k načtení dat uložených ve vašem KV namespace. Načtete hodnotu klíče user_2 z vašeho KV namespace.

    let value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");

Kód vašeho Workeru by měl vypadat takto:

export default {
	async fetch(request, env, ctx) {
		try {
			await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
			const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
			if (value === null) {
				return new Response("Value not found", { status: 404 });
			}
			return new Response(value);
		} catch (err) {
			console.error(`KV returned error:`, err);
			const errorMessage =
				err instanceof Error
					? err.message
					: "An unknown error occurred when accessing KV storage";
			return new Response(errorMessage, {
				status: 500,
				headers: { "Content-Type": "text/plain" },
			});
		}
	},
};
export interface Env {
  USERS_NOTIFICATION_CONFIG: KVNamespace;
}

export default {
  async fetch(request, env, ctx): Promise<Response> {
    try {
      await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
      const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
      if (value === null) {
        return new Response("Value not found", { status: 404 });
      }
      return new Response(value);
    } catch (err) {
      console.error(`KV returned error:`, err);
      const errorMessage =
        err instanceof Error
          ? err.message
          : "An unknown error occurred when accessing KV storage";
      return new Response(errorMessage, {
        status: 500,
        headers: { "Content-Type": "text/plain" },
      });
    }
  },
} satisfies ExportedHandler<Env>;

Výše uvedený kód:

  1. Zapíše klíč do vašeho oboru názvů KV pomocí put() metoda.
  2. Čte stejný klíč pomocí get() metoda.
  3. Zkontroluje, zda je klíč null, a vrátí 404 odpověď, pokud tomu tak je.
  4. Pokud klíč není null, vrátí jeho hodnotu.
  5. Využívá JavaScriptovu metodu try...catch ↗ ošetření výjimek pro zachycení případných chyb. Při zápisu do libovolné služby nebo čtení z ní, jako je Workers KV nebo externí API, pomocí fetch() byste měli počítat s tím, že výjimky budete muset ošetřovat explicitně.
  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Přejděte na kv-tutorial Worker, který jste vytvořili.

  3. Vyberte Edit Code.

  4. Vymažte veškerý obsah workers.js soubor a poté vložte následující kód.

    export default {
    	async fetch(request, env, ctx) {
    		try {
    			await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
    			const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
    			if (value === null) {
    				return new Response("Value not found", { status: 404 });
    			}
    			return new Response(value);
    		} catch (err) {
    			console.error(`KV returned error:`, err);
    			const errorMessage =
    				err instanceof Error
    					? err.message
    					: "An unknown error occurred when accessing KV storage";
    			return new Response(errorMessage, {
    				status: 500,
    				headers: { "Content-Type": "text/plain" },
    			});
    		}
    	},
    };
    export interface Env {
      USERS_NOTIFICATION_CONFIG: KVNamespace;
    }
    
    export default {
      async fetch(request, env, ctx): Promise<Response> {
        try {
          await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
          const value = await env.USERS_NOTIFICATION_CONFIG.get("user_2");
          if (value === null) {
            return new Response("Value not found", { status: 404 });
          }
          return new Response(value);
        } catch (err) {
          console.error(`KV returned error:`, err);
          const errorMessage =
            err instanceof Error
              ? err.message
              : "An unknown error occurred when accessing KV storage";
          return new Response(errorMessage, {
            status: 500,
            headers: { "Content-Type": "text/plain" },
          });
        }
      },
    } satisfies ExportedHandler<Env>;

    Výše uvedený kód:

    1. Zapíše klíč do BINDING_NAME pomocí put() metoda.
    2. Čte stejný klíč pomocí get() metoda a vrátí chybu, pokud je klíč null (respektive pokud klíč není nastaven nebo neexistuje).
    3. Využívá JavaScriptovu metodu try...catch ↗ ošetření výjimek pro zachycení případných chyb. Při zápisu do libovolné služby nebo čtení z ní, jako je Workers KV nebo externí API, pomocí fetch() byste měli počítat s tím, že výjimky budete muset ošetřovat explicitně.

    Prohlížeč by měl jednoduše vrátit VALUE odpovídající KEY kterou jste zadali pomocí get() metoda.

  5. Vyberte rozbalovací šipku vedle Nasadit a vyberte Save.

6. Nasaďte svůj Worker

Nasaďte svého Workera do globální sítě Cloudflare.

  1. Spusťte následující příkaz pro nasazení KV do globální sítě Cloudflare:

    npm run deploy
  2. Přejděte na adresu URL vaší nově vytvořené aplikace Workers KV.

    Pokud je například URL vašeho nového Workeru kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev, přístupem k https://kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev/ odešle na váš Worker požadavek, který zapisuje do Workers KV (a čte z něj).

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte svůj kv-tutorial Worker.

  3. Vyberte Deployments.

  4. Z Historie verzí tabulku vyberte Deploy version.

  5. Z Deploy version stránce vyberte Nasadit.

    Tím se do produkce nasadí nejnovější verze kódu Workeru.

Souhrn

Po dokončení tohoto tutoriálu jste:

  1. Vytvořili jste namespace KV
  2. Vytvořili jste Workera, který do tohoto namespace zapisuje a čte z něj
  3. Nasadili jste svůj projekt globálně.

Další kroky

Pokud máte požadavky na nové funkce nebo jste narazili na chyby, sdílejte zpětnou vazbu přímo s týmem Cloudflare, a to prostřednictvím Komunita vývojářů Cloudflare na Discordu ↗.