当您通过 Workers for Platforms 部署用户 Worker(User Workers)时,您可以附加绑定(bindings),以便让他们访问 KV 命名空间、D1 数据库、R2 存储桶等资源。这使您的最终客户能够构建更强大的应用程序,而无需您亲自构建基础架构组件。
通过 bindings,每个用户 Worker 可以扩展功能以:
- 使用 KV、R2、D1 或 Durable Objects 存储数据
- 使用 Queues 和 Workflows 异步处理工作
- 使用 Containers 运行容器(绑定为 Durable Object)
- 使用 VPC Services、VPC Networks 和 Hyperdrive 连接到私有网络
- 使用 Analytics Engine 收集指标
每个用户 Worker 只能访问明确附加到它的 bindings。为了实现完全隔离,您可以为每个用户 Worker 创建并附加一个独特的资源(如 D1 数据库或 KV 命名空间)。
本示例逐步说明如何创建 KV 命名空间并将其附加到用户 Worker。可以使用相同的过程附加其他绑定(bindings)。
使用 Cloudflare API 创建 KV 命名空间。
使用 上传用户 Worker API 将 KV 命名空间绑定附加到 Worker。您可以在首次上传 Worker 脚本或更新现有 Worker 时执行此操作。
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'现在,用户 Worker 可以通过 env 参数使用 env.USER_KV.get()、env.USER_KV.put() 和其他 KV 方法访问 USER_KV 绑定。
注意:如果您计划向 Worker 添加新 bindings,请使用 keep_bindings 参数,以确保在添加新 bindings 时保留现有的 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"]
}'