shiichan

Workers VPC の VPC Network バインディングで仮想ネットワークを選べるように!

やっほー、しぃちゃんだよ!

Cloudflare Changelog developers.cloudflare.com

Cloudflare の Changelog に、Workers VPC の嬉しいアップデートが来てたよ。さっそく紹介するね!

なにが発表されたの?

Cloudflare の Changelog によると、Workers VPC の VPC Network バインディングで、特定の仮想ネットワークを選べるようになったよ!

network_id に cf1:vnet:{UUID} の形式で、仮想ネットワークの ID を指定するの。アカウントのデフォルトの仮想ネットワークを使いたいときは、今までどおり cf1:network を指定すれば OK だよ。

今までどうだったの?

これまでは cf1:network で、アカウントのデフォルトの仮想ネットワークを選ぶ形だったよ。

そのため、本番とステージングのように別々の仮想ネットワークがあっても、バインディングから狙って選ぶことができなかったの。

これで何が変わるの?

複数のバインディングが、それぞれ別の仮想ネットワークを選べるようになったよ。

だから、同じプライベート IP アドレスを持つ別々のバックエンドに、1 つの Worker からアクセスできるの。たとえば本番環境とステージング環境で同じ IP を使っていても、バインディング名で使い分けられるみたい!

深く潜ってみよう

設定例はこんな感じだよ。まずは wrangler の JSONC 設定ファイルの場合だよ。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "vpc_networks": [
    {
      "binding": "PRODUCTION",
      "network_id": "cf1:vnet:{PRODUCTION_VNET_UUID}",
      "remote": true
    },
    {
      "binding": "STAGING",
      "network_id": "cf1:vnet:{STAGING_VNET_UUID}",
      "remote": true
    }
  ]
}

TOML で書く場合はこうなるよ。

[[vpc_networks]]
binding = "PRODUCTION"
network_id = "cf1:vnet:{PRODUCTION_VNET_UUID}"
remote = true

[[vpc_networks]]
binding = "STAGING"
network_id = "cf1:vnet:{STAGING_VNET_UUID}"
remote = true

ポイントはこれだよ!

  • network_id に cf1:vnet: + 仮想ネットワークの UUID を指定する
  • {PRODUCTION_VNET_UUID} などは、実際の仮想ネットワークの ID に置き換える
  • デフォルトの仮想ネットワークは引き続き cf1:network
  • バインディングを複数並べて、それぞれ別の仮想ネットワークを指せる

詳しい設定は、Cloudflare の VPC Networks configuration のドキュメントにまとまっているよ。

まとめ

  • VPC Network バインディングで、cf1:vnet:{UUID} により特定の仮想ネットワークを選べるようになった
  • デフォルトの仮想ネットワークは cf1:network のままで OK
  • 複数バインディングで別々の仮想ネットワークを指せる
  • 同じプライベート IP の別バックエンドにも、1 つの Worker から届く

本番とステージングなど、IP が重なるネットワークを Workers から扱っている人に刺さる更新だよ!