INTEGRITY Документация

Начало работы

Workers KV обеспечивает глобальное хранилище с низкой задержкой и высокой пропускной способностью для ваших Cloudflare Workers приложений. Workers KV отлично подходит для хранения конфигурации пользователей, данных маршрутизации, настроек A/B-тестирования и токенов аутентификации, а также хорошо справляется с нагрузками с преобладанием чтения.

В этом руководстве вы узнаете, как:

Эти задачи можно выполнить через Wrangler CLI или через панель управления Cloudflare.

быстрый старт

Если вы хотите пропустить шаги настройки и быстро приступить к работе, нажмите кнопку ниже.

Deploy to Cloudflare

Это создаёт репозиторий в вашем аккаунте GitHub и разворачивает приложение в Cloudflare Workers. Выберите этот вариант, если вы уже знакомы с Cloudflare Workers и хотите пропустить пошаговые инструкции.

Если вы только начинаете работать с Cloudflare Workers, можете пройти все шаги вручную.

Предварительные требования

  1. Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
  2. Установка Node.js ↗.

менеджер версий Node.js

Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.

1. Создайте проект Worker

Создайте новый Worker для чтения и записи в пространство имён KV.

  1. Создайте новый проект с именем kv-tutorial выполнив:

    npm create cloudflare@latest -- kv-tutorial

    Для настройки выберите следующие параметры:

    • Для С чего вы хотите начать?, выберите Hello World example.
    • Для Какой шаблон вы хотите использовать?, выберите Worker only.
    • Для Какой язык вы хотите использовать?, выберите TypeScript.
    • Для Хотите использовать git для контроля версий?, выберите Yes.
    • Для Хотите развернуть приложение?, выберите No (мы внесём некоторые изменения перед развёртыванием).

    Это создаёт новый kv-tutorial каталоге, как показано ниже.

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

    Ваш новый kv-tutorial каталог включает:

    • A "Hello World" Worker в index.ts.
    • A wrangler.jsonc файл конфигурации. wrangler.jsonc показывает, как выглядит ваш kv-tutorial Worker обращается к вашей базе данных kv.
  2. Перейдите в каталог, который вы только что создали для своего проекта Worker:

    cd kv-tutorial
  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Выберите Создать приложение.

  3. Выберите Начните с Hello World! > Начало работы.

  4. Присвойте имя своему Worker. Для этого руководства назовите Worker kv-tutorial.

  5. Выберите Развернуть.

2. Создание пространства имён KV

A Пространство имён KV это база данных ключ-значение, реплицированная в глобальную сеть Cloudflare.

Вы можете использовать Wrangler для создания нового пространства имён KV. С его помощью также можно выполнять такие операции, как put, list, get и delete в вашем пространстве имён KV.

Чтобы создать пространство имён KV с помощью Wrangler:

  1. Откройте терминал и выполните следующую команду:

    npx wrangler kv namespace create <BINDING_NAME>

    npx wrangler kv namespace create <BINDING_NAME> подкоманда принимает в качестве аргумента новое имя привязки. Пространство имен KV создаётся путём объединения имени вашего Worker (из файла Wrangler) и указанного вами имени привязки. <BINDING_ID> генерируется для вас случайным образом.

    Для этого руководства используйте имя привязки 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. На панели управления Cloudflare перейдите к разделу Workers KV страницу.

    Перейдите в Workers KV ↗
  2. Выберите Создать инстанс.

  3. Введите имя пространства имён. Для этого руководства используйте kv_tutorial_namespace.

  4. Выберите Создание.

3. Привязка Worker к пространству имён KV

Чтобы связать Worker с пространством имён KV, необходимо создать привязку. Bindings позволяют вашим Workers обращаться к ресурсам, например KV, на платформе Cloudflare Developer Platform.

Чтобы привязать пространство имён KV к вашему Worker:

  1. В файле Wrangler добавьте следующее со значениями, сгенерированными в терминале при выполнении шаг 2:

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

    Имена привязок не обязаны совпадать с именем созданного вами пространства имён. Имя привязки служит лишь ссылкой. А именно:

    • Значение (строка), которое вы задали для binding используется для обращения к этому пространству имен KV в вашем Worker. Для этого руководства оно должно быть USERS_NOTIFICATION_CONFIG.
    • Привязка должна быть допустимое имя переменной JavaScript ↗. Например, binding = "MY_KV" или binding = "routingConfig" оба варианта были бы допустимыми именами для привязки.
    • Привязка доступна в Worker по адресу env.<BINDING_NAME> внутри вашего Worker. В этом руководстве привязка доступна по адресу env.USERS_NOTIFICATION_CONFIG.
  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Выберите kv-tutorial Worker, который вы создали в шаг 1.

  3. Перейдите в Bindings вкладке, а затем выберите Add binding.

  4. Выберите Пространство имён KV > Add binding.

  5. Задайте имя привязки (BINDING_NAME) в Имя переменной, затем выберите пространство имён KV (kv_tutorial_namespace) которое вы создали в шаг 2 в раскрывающемся списке.

  6. Выберите Add binding чтобы развернуть привязку.

4. Работа с пространством имён KV

Вы можете взаимодействовать со своим пространством имён KV через Wrangler или напрямую из вашего Workers приложение.

4.1. Запись значения

Чтобы записать значение в пустое пространство имён KV с помощью Wrangler:

  1. Выполните wrangler kv key put подкоманду в терминале и введите ваш ключ и значение соответственно. <KEY> и <VALUE> это значения на ваш выбор.

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

    В этом руководстве вы добавите ключ user_1 со значением enabled к пространству имён KV, созданному в шаг 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. На панели управления Cloudflare перейдите к разделу Workers KV страницу.

    Перейдите в Workers KV ↗
  2. Выберите пространство имен KV, которое вы создали (kv_tutorial_namespace).

  3. Перейдите в KV Pairs на вкладке.

  4. Введите <KEY> по вашему выбору.

  5. Введите <VALUE> по вашему выбору.

  6. Выберите Добавить запись.

4.2. Получение значения

Чтобы получить значение из пространства имён KV с помощью Wrangler:

  1. Выполните wrangler kv key get подкоманду в терминале и введите значение ключа:

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

    В этом руководстве вы получите значение ключа user_1 из пространства имён KV, которое вы создали в шаг 2.

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

    Аналогично put команды, get команду также можно использовать для доступа к пространству имён KV двумя способами: с помощью --binding или --namespace-id:

См. kv bulk документация чтобы записать файл с несколькими парами ключ-значение в указанное пространство имён KV.

Вы можете просматривать пары «ключ-значение» прямо из панели управления.

  1. На панели управления Cloudflare перейдите к разделу Workers KV страницу.

    Перейдите в Workers KV ↗
  2. Перейдите в пространство имён KV, которое вы создали (kv_tutorial_namespace).

  3. Перейдите в KV Pairs на вкладке.

5. Доступ к пространству имён KV из Worker

  1. В скрипте Worker добавьте свою привязку KV в Env интерфейс. Если ваш проект создан на JavaScript, этот шаг не требуется.

    interface Env {
    	USERS_NOTIFICATION_CONFIG: KVNamespace;
    	// ... other binding types
    }
  2. Используйте put() метод для USERS_NOTIFICATION_CONFIG для создания новой пары ключ-значение. Вы добавите новый ключ user_2 со значением disabled в ваше пространство имён KV.

    let value = await env.USERS_NOTIFICATION_CONFIG.put("user_2", "disabled");
  3. Используйте KV get() метод для получения данных, сохранённых в вашем пространстве имен KV. Вы получите значение ключа user_2 из вашего пространства имён KV.

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

Код Worker должен выглядеть следующим образом:

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

Код выше:

  1. Записывает ключ в ваше пространство имён KV с помощью put() метод.
  2. Считывает тот же ключ, используя KV get() метод.
  3. Проверяет, равен ли ключ null, и возвращает 404 ответ, если это так.
  4. Если ключ не равен null, возвращается значение этого ключа.
  5. Использует JavaScript try...catch ↗ обработку исключений для перехвата возможных ошибок. При записи в любой сервис или чтении из него, например Workers KV или внешние API, с использованием fetch(), следует явно обрабатывать исключения.
  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Перейдите в kv-tutorial Worker, который вы создали.

  3. Выберите Edit Code.

  4. Очистите всё содержимое workers.js файл и вставьте в него следующий код.

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

    Код выше:

    1. Записывает ключ в BINDING_NAME с помощью KV put() метод.
    2. Считывает тот же ключ, используя KV get() метод и возвращает ошибку, если ключ равен null (или если ключ не задан либо не существует).
    3. Использует JavaScript try...catch ↗ обработку исключений для перехвата возможных ошибок. При записи в любой сервис или чтении из него, например Workers KV или внешние API, с использованием fetch(), следует явно обрабатывать исключения.

    Браузер должен просто вернуть VALUE соответствующий KEY указанных с помощью get() метод.

  5. Нажмите на стрелку раскрывающегося списка рядом с Развернуть и выберите Save.

6. Разверните Worker

Разверните Worker в глобальной сети Cloudflare.

  1. Выполните следующую команду, чтобы развернуть KV в глобальной сети Cloudflare:

    npm run deploy
  2. Перейдите по URL-адресу вашего нового приложения Workers KV.

    Например, если URL вашего нового Worker равен kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev, обращаясь к https://kv-tutorial.<YOUR_SUBDOMAIN>.workers.dev/ отправляет запрос вашему Worker, который записывает данные в Workers KV (и считывает их оттуда).

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Выберите свой kv-tutorial Worker.

  3. Выберите Развёртывания.

  4. Из раздела История версий таблицу, выберите Deploy version.

  5. Из раздела Deploy version странице выберите Развернуть.

    Это разворачивает последнюю версию кода Worker в продакшене.

Сводка

После завершения этого руководства вы:

  1. Создали пространство имён KV
  2. Создали Worker, который записывает данные в это пространство имён и читает из него
  3. Развернули проект по всему миру.

Следующие шаги

Если у вас есть пожелания по функциям или вы заметили ошибку, поделитесь отзывом напрямую с командой Cloudflare, присоединившись к Сообщество разработчиков Cloudflare в Discord ↗.