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

Bindings

Когда вы развёртываете User Workers через Workers for Platforms, вы можете подключить привязки чтобы дать им доступ к таким ресурсам, как Пространства имён KV, Базы данных D1, Бакеты R2, и других возможностей. Это позволяет вашим конечным клиентам создавать более мощные приложения, а вам не нужно самостоятельно создавать инфраструктурные компоненты.

С помощью привязок каждый User Worker может расширять функциональность за счёт:

Изоляция ресурсов

Каждый User Worker может обращаться только к привязкам, явно прикреплённым к нему. Для полной изоляции к каждому User Worker можно создать и прикрепить уникальный ресурс, например базу данных D1 или пространство имён KV.

Модель изоляции ресурсов
Модель изоляции ресурсов

Добавление KV Namespace в пользовательский Worker

В этом примере пошагово показано, как создать Пространство имён KV и подключите его к User Worker. Тот же порядок действий можно использовать для подключения к другим привязки.

1. Создайте KV namespace

Создайте KV namespace с помощью Cloudflare API.

2. Привяжите KV namespace к User Worker

Используйте API для загрузки User Worker чтобы привязать KV namespace binding к Worker. Это можно сделать как при первой загрузке скрипта Worker, так и при обновлении уже существующего Worker.

Пример запроса API
curl -X PUT \
  "https://api.cloudflare.com/client/v4/accounts/<account-id>/workers/dispatch/namespaces/<your-namespace>/scripts/<script-name>" \
  -H "Content-Type: multipart/form-data" \
  -H "Authorization: Bearer <api-token>" \
  -F 'metadata={
    "main_module": "worker.js",
    "bindings": [
      {
        "type": "kv_namespace",
        "name": "USER_KV",
        "namespace_id": "<your-namespace-id>"
      }
    ]
  }' \
  -F 'worker.js=@/path/to/worker.js'

Теперь User Worker может обращаться к USER_KV binding через env аргумент с помощью env.USER_KV.get(), env.USER_KV.put(), и других методов KV.

Примечание: если планируете добавить в Worker новые привязки, используйте keep_bindings параметр, чтобы существующие привязки сохранились при добавлении новых.

curl -X PUT \
  "https://api.cloudflare.com/client/v4/accounts/<account-id>/workers/dispatch/namespaces/<your-namespace>/scripts/<script-name>" \
  -H "Content-Type: multipart/form-data" \
  -H "Authorization: Bearer <api-token>" \
  -F 'metadata={
    "bindings": [
      {
        "type": "r2_bucket",
        "name": "STORAGE",
        "bucket_name": "<your-bucket-name>"
      }
    ],
    "keep_bindings": ["kv_namespace"]
  }'