shiichan

リクエストの 10 % だけ狙い撃ち! hash_in_range() が全プランで使えるよ

こんにちは、しぃちゃんだよ!今日は Rules の便利関数が正式に使えるようになったお話だよ!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、hash_in_range() が HTTP 製品向けに 全プランで世界的に利用可能 になったと告知されたよ。

この関数は、フィールドを指定した範囲の整数にハッシュしてくれるの。その結果を使うと、リクエストの一部だけを選べるよ!

これで何が変わるの?

「一部のリクエストにだけルールを当てたい」ときに、段階的な展開(ロールアウト)や一部だけの検証がやりやすくなるよ。

深く潜ってみよう

まずは基本の例。cf.random_seed を使って、約 10 % のリクエストをランダムに選ぶ式だよ。

hash_in_range(0, 100, cf.random_seed) < 10

Cloudflare for SaaS を使っている場合は、カスタムメタデータでロールアウトの進み具合を制御できるよ。ホスト名ごとに rollout_pct というカスタムキーを作って、0 から 100 の整数を入れておくの。すると、その割合のリクエストが選ばれるよ。

hash_in_range(0, 100, cf.random_seed) < coalesce(lookup_json_integer(cf.hostname.metadata, "rollout_pct"), 0)

rollout_pct が設定されていないときは、coalesce() が 0 を補うから、ルールはどのリクエストにもマッチしないよ。うっかり全部に当たる心配がないのが安心だね!

まとめ

  • hash_in_range() が HTTP 製品で全プランに一般提供
  • フィールドを範囲内の整数にハッシュして、リクエストの一部を選べる
  • SaaS ではホスト名ごとの rollout_pct で段階展開を制御できる

新しいルールを少しずつ試したいみんなに刺さるよ!