Cloudflare推出远程绑定功能,助力本地开发

来源: InfoQ - 云计算

原文

最近,Cloudflare宣布正式推出面向本地开发的远程绑定功能。该功能让开发人员能够连接到在Cloudflare账户中部署的生产资源,从而不必再使用本地模拟。

得益于这项新功能,开发人员在本地机器上运行Worker代码时就可以连接到已经部署的资源,例如R2存储桶和D1数据库,从而能够使用真实数据和服务对本地代码更改进行测试。

面向本地开发的远程绑定功能在Wrangler v4.37.0、Cloudflare Vite插件和@cloudflare/vitest-pool-workers包中均提供了支持。例如,开发人员可以告诉Wrangler或Vite将所有请求发送到env.MY_BUCKET:

{
  "name": "my-worker",
  "compatibility_date": "2025-09-25",
  "r2_buckets": [
    {
      "bucket_name": "my-bucket",
      "binding": "MY_BUCKET",
      "remote": true
    }
  ]
}

尽管所有对env.MY_BUCKET的请求都将被代理到远程资源,但Worker代码将在本地执行,速度更快,而且不需要向本地数据库中填充数据。此外,开发人员可将远程绑定与环境关联,从而在本地开发过程中访问测试数据,同时确保生产数据不受影响。

Cloudflare高级系统工程师Samuel Macleod和Web开发人员Dario Piotrowicz阐释了绑定机制在生产环境中的底层运作原理。他们写道:

我们希望让开发人员能够轻松地访问远程资源,而无需更改他们生产环境中的Worker代码,因此我们找了一个解决方案,要求你在Worker中使用远程资源的地方获取数据……我们意识到,我们已经有一个现成的API——就是我们在生产中使用的那一个!Worker平台上的大多数绑定本质上都是服务绑定。

服务绑定是两个Worker之间的链接,允许它们之间通过HTTP或JSRPC通信。Macleod和Piotrowicz补充道:

我们意识到,我们可以通过那个自然的网络边界来实现远程绑定。我们可以让本地运行时(workerd)将env.KV.get()翻译成HTTP调用,然后直接发送到KV服务,从而绕过生产运行时,而不是让生产运行时将env.KV.get()翻译成HTTP调用。

有了远程KV绑定,本地Worker将不再使用本地KV模拟器。取而代之,它会与远程代理客户端进行通信,而后者会连接到与真实KV存储关联的代理服务器,从而使本地Worker能够访问实时KV数据。社区对此反应积极,Dyords Abuzo写道

不会再有这样的情况了,“它在我的机器上可以正常运行……但一到生产环境中就找不到数据?!”这是开发体验的巨大胜利,使得基于Cloudflare Workers的构建变得更加令人愉快。

Wrangler程序包现在已经导出了startRemoteProxySession等实用工具,使未采用Wrangler开发环境的工具也能支持远程绑定。自Wrangler v4.37.0版本起(对应的Vite和Vitest插件版本分别为v1.13.0和v0.9.0),所有项目均可使用远程绑定功能。开发人员只需在Wrangler配置中为任意绑定添加remote: true即可启用该功能。

原文链接:

https://www.infoq.com/news/2025/11/cloudflare-remote-bindings/