🔥

仕事で使うための Cloudflare Workers 入門 Day 5 - ServiceBinding

に公開

Service Binding

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "worker_a",
  "main": "src/index.ts",
  "compatibility_date": "2025-04-21",
  "observability": {
    "enabled": true
  },
  "services": [
    {
      "binding": "B",
      "service": "b"
    }
  ]
}
type Env = {
  B: Service;
};
export default {
  async fetch(request, env) {
    const b = await env.B.fetch(request);
    return new Response("Hello A <-> " + (await b.text()));
  },
} satisfies ExportedHandler<Env>;

env.B に別のサービスを登録します

src/
  worker.ts
b/
  index.ts
  wrangler.jsonc
wrangler.jsonc

Service B

b/index.ts
type Env = {};
export default {
	async fetch(_request: Request, _env: Env) {
		return new Response('Hello B!', { status: 200 });
	},
};
{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "b",
  "main": "index.ts",
  "compatibility_date": "2025-04-21",
  "observability": {
    "enabled": true
  }
}

name と service 名を一致させる必要があります。

これをまとめて起動。

$ wrangler dev -c wrangler.jsonc -c servcice-b/wrangler.jsonc
$ pnpm wrangler dev -c wrangler.jsonc -c b/wrangler.jsonc

 ⛅️ wrangler 4.12.0
-------------------

Your Worker and resources are simulated locally via Miniflare. For more information, see: https://developers.cloudflare.com/workers/testing/local-development.

worker_a has access to the following bindings:
- Services:
  - B: b
No bindings found.
❓ Your types might be out of date. Re-run `wrangler types` to ensure your types are correct.
⎔ Starting local server...
[wrangler:inf] Ready on http://localhost:8787
Hello A <-> Hello B!

発展型 better micro frontend

https://blog.cloudflare.com/better-micro-frontends/

  • 異なる 5 つの Qwik アプリで構成して SSR/Hydration

Discussion