1. はじめに
PublicKeyでアクセス元の都道府県と市レベルの住所が分かるAPI、Cloudflareがエッジ上のCloudflare Workersで提供へという記事が紹介されていたので、IBM CloudのCIS(Cloud Internet Service)で実行できるか確認してみた。
※Cloudflare Workersは、CISではEdge Functionsと呼ばれている。
- CloudflareのBlog記事はこちら
- Source Codeのサンプルはこちら
- ただし、上記のSource Codeサンプルをコピペすると(私の環境だと)改行が崩れたので、GitHub上の元ソースを参照した。
2. Edge Functionsの設定
- Edge FunctionsのActionsタブにて、
Create
を選択。 - 関数名に適当な名称を入力(今回は
geolocationhelloworld
とした)し、上記のsource codeを貼り付けて保管。 - Trigger列で、どういうFQDNにアクセスした際に上記のEdge Functionsが呼び出されるかを登録する。今回は自分のドメインが、
example.com
だったとしたら、hello.example.com
でこのEdge Functionsが呼び出させるように構成したいので、Trigger URLにhello.<自分のドメイン>
と登録し、Actions欄に上記で作成したEdge Functionsを登録する。
- Reliability -> DNSで
hello.<自分のドメイン>
が名前解決できるようにレコードを登録する。この際、解決先のIPアドレスは何でもいいので、Proxyを有効化してクライアントからのリクエストがEdgeに転送されるようにProxy
を有効化する。本来は、EdgeがReverse Proxyと作動してこのDNSに登録されたIPアドレス宛にEdgeからリクエストが飛ぶはずだが、Edge FunctionsでHTMLを返すように構成しているので、このDNSに登録するIPは使われない(なので必ずしもAレコードである必要もないが、今回はシンプルなのでAレコードを利用し、8.8.8.8
を登録)。
3. テスト
https://hello.<自分のドメイン>
にアクセスすることで、無事表示された!
Publickeyでの記事中に記載のある通り、住所の正確性は郵便番号は前3桁のみ正しく、後ろ4桁は間違っているし、携帯電話を利用している時は正しい場所を取得できてないが、