SuperAPI AI 工具集

cloudflare-3

部署与运维

查看项目

更新于 10-16 07:45

技能介绍

用途

该技能用于通过 Wrangler CLI 管理 Cloudflare Workers 及其关联服务,包括 KV、D1、R2、Queues 和 Secrets。适合在部署 Worker、管理数据库、存储对象或配置绑定时使用。

前置条件

  • 需要 Node.js v20+。
  • 安装:npm install -g wrangler,或使用项目本地的 npx wrangler。
  • 认证:wrangler login(打开浏览器进行 OAuth)。
  • 验证:wrangler whoami。

主要能力

Workers

  • 初始化新 Worker:wrangler init <name>
  • 本地开发:wrangler dev [script]
  • 部署:wrangler deploy [script]
  • 列出部署:wrangler deployments list
  • 查看部署:wrangler deployments view [deployment-id]
  • 回滚:wrangler rollback [version-id]
  • 删除 Worker:wrangler delete [name]
  • 实时日志:wrangler tail [worker]

Secrets

  • 交互式添加/更新密钥:wrangler secret put <key>
  • 从 stdin 添加:echo "value" | wrangler secret put <key>
  • 列出密钥:wrangler secret list
  • 删除密钥:wrangler secret delete <key>
  • 从 JSON 文件批量上传:wrangler secret bulk secrets.json

KV(键值存储)

  • 创建命名空间:wrangler kv namespace create <name>
  • 列出命名空间:wrangler kv namespace list
  • 删除命名空间:wrangler kv namespace delete --namespace-id <id>
  • 写入键:wrangler kv key put <key> <value> --namespace-id <id>
  • 读取键:wrangler kv key get <key> --namespace-id <id>
  • 删除键:wrangler kv key delete <key> --namespace-id <id>
  • 列出键:wrangler kv key list --namespace-id <id>
  • 批量操作(JSON 文件):wrangler kv bulk put <file> --namespace-id <id>、wrangler kv bulk delete <file> --namespace-id <id>

D1(SQL 数据库)

  • 创建数据库:wrangler d1 create <name>
  • 列出数据库:wrangler d1 list
  • 数据库信息:wrangler d1 info <name>
  • 执行 SQL:wrangler d1 execute <database> --command "SELECT * FROM users"
  • 执行 SQL 文件:wrangler d1 execute <database> --file schema.sql
  • 本地执行(开发用):wrangler d1 execute <database> --local --command "..."
  • 导出数据库:wrangler d1 export <name> --output backup.sql
  • 删除数据库:wrangler d1 delete <name>
  • 迁移:wrangler d1 migrations create <database> <name>、wrangler d1 migrations apply <database>、wrangler d1 migrations list <database>

R2(对象存储)

  • 创建存储桶:wrangler r2 bucket create <name>
  • 列出存储桶:wrangler r2 bucket list
  • 删除存储桶:wrangler r2 bucket delete <name>
  • 上传对象:wrangler r2 object put <bucket>/<key> --file <path>
  • 下载对象:wrangler r2 object get <bucket>/<key> --file <path>
  • 删除对象:wrangler r2 object delete <bucket>/<key>

Queues

  • 创建队列:wrangler queues create <name>
  • 列出队列:wrangler queues list
  • 删除队列:wrangler queues delete <name>

配置文件

Wrangler 支持 TOML 和 JSON/JSONC 两种配置格式:

  • wrangler.toml — 传统格式
  • wrangler.json 或 wrangler.jsonc — 较新格式,支持 JSON schema

重要:如果两者同时存在,JSON 优先。建议只选一种格式,避免 TOML 的修改被忽略。

JSONC 格式(带 schema 自动补全):

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2024-12-30"
}

TOML 格式:

name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-12-30"

带绑定的 TOML 示例:

name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-12-30"

# KV binding
[[kv_namespaces]]
binding = "MY_KV"
id = "xxx"

# D1 binding
[[d1_databases]]
binding = "DB"
database_name = "my-db"
database_id = "xxx"

# R2 binding
[[r2_buckets]]
binding = "BUCKET"
bucket_name = "my-bucket"

# Environment variables
[vars]
API_URL = "https://api.example.com"

# Secrets (set via `wrangler secret put`)
# Referenced as env.SECRET_NAME in worker code

静态资源(用于 Next.js 等框架):

name = "my-site"
main = ".open-next/worker.js"
compatibility_date = "2024-12-30"
compatibility_flags = ["nodejs_compat"]

[assets]
directory = ".open-next/assets"
binding = "ASSETS"

常见模式

  • 按环境部署:wrangler deploy -e production、wrangler deploy -e staging
  • 自定义域名:必须在 Cloudflare 仪表盘的 Worker Settings > Domains & Routes 中配置,或通过 Cloudflare API 配置。Wrangler 不直接管理自定义域名。
  • 带绑定的本地开发:wrangler dev --local(为开发创建本地 D1/KV/R2)
  • 检查部署状态:wrangler deployments list、wrangler deployments view

Wrangler 不负责的内容

  • DNS 管理 — 使用 Cloudflare 仪表盘或 API 管理 DNS 记录
  • 自定义域名 — 通过仪表盘(Worker Settings > Domains & Routes)或 API 配置
  • SSL 证书 — 添加自定义域名时由 Cloudflare 自动管理
  • 防火墙/WAF 规则 — 使用仪表盘或 API

如需 DNS/域名管理,请参考 cloudflare 技能(直接使用 Cloudflare API)。

故障排查

问题 解决方案
"Not authenticated" 运行 wrangler login
Node 版本错误 需要 Node.js v20+
"No config found" 确保配置文件存在(wrangler.toml 或 wrangler.jsonc),或使用 -c path/to/config
配置修改被忽略 检查是否存在 wrangler.json/wrangler.jsonc — JSON 优先于 TOML
找不到绑定 检查 wrangler.toml 中的绑定是否与代码引用一致

适用场景

  • 部署和管理 Cloudflare Workers
  • 管理 KV 键值存储、D1 SQL 数据库、R2 对象存储和 Queues 队列
  • 配置和管理 Secrets 密钥
  • 本地开发与调试 Worker 及其绑定资源

限制

  • 需要 Node.js v20+ 环境。
  • 不负责 DNS 管理、自定义域名、SSL 证书和防火墙/WAF 规则,这些需通过 Cloudflare 仪表盘或 API 处理。
  • 自定义域名无法通过 Wrangler 直接管理。
  • 同时存在 TOML 和 JSON 配置时,JSON 优先,可能导致 TOML 修改被忽略。