CloudFlare 工作环境创建单独的服务,每个服务有 1 个环境,而不是 1 个服务有 2 个环境

CloudFlare worker environment creates separate services with 1 env each, not 1 service with 2 environments

我对 Cloudflare Worker Environments 的预期功能感到困惑。

在 CloudFlare 仪表板中,工作人员有一个环境下拉列表,默认为“生产”。我认为通过利用我的 Wrangler 文件中的环境,我将拥有一个工作人员,但有多个环境。然而,最终发生的是我只有两个工人,最后添加了环境(my-worker-dev 和 my-worker-prod)。这些工人中的每一个都有 1 个环境(生产环境)。

我不确定是我做错了什么还是只是误解了预期的行为。

谁能帮我理解 wrangler 如何在单个 worker/service 中添加不同的名称和“环境”下拉列表之间的区别?

我的 wrangler.toml 文件

name = "my-worker"
type = "javascript"
account_id = "<redacted>"
workers_dev = true
compatibility_date = "2021-12-10"

[env.dev]
vars = { ENVIRONMENT = "dev" }

kv_namespaces = [
  { binding = "TASKS", id = "<redacted>", preview_id = "<redacted>" }
]

[env.prod]
vars = { ENVIRONMENT = "prod" }
kv_namespaces = [
  { binding = "TASKS", id = "<redacted>", preview_id = "<redacted>" },
]


[build]
command = "npm install && npm run build"

[build.upload]
format = "modules"
dir = "dist"
main = "./worker.mjs"

我认为目前在新仪表板功能中定义的“环境”的含义与 pre-existing wrangler“环境”支持之间存在一些脱节/混淆。

对于仪表板/Web UI,您定义了一个“服务”,其中有多个工作人员分组在其下(每个环境一个)。这允许将工作人员从一个环境“提升”到另一个环境(本质上是复制脚本,但具有单独的变量和路由)。

此功能有单独的文档 - https://developers.cloudflare.com/workers/learning/using-services#service-environments

如您所见,Wrangler“环境”的工作方式不同。只需创建一个 top-level “生产”工人/服务(以环境命名)。好消息是(根据上面的文档)听起来 Cloudflare 将更新 wrangler 以支持新的 Dashboard 类型环境:

As of January 2022, the dashboard is the only way to interact with Workers Service environments. Support in Wrangler is coming in v2.1

https://github.com/cloudflare/wrangler2/issues/27