フォーム読み込み中
IBM Watsonをインターネットを経由させず、プライベートネットワークで利用する方法について紹介します。
IBM Watsonは、IBMが開発し提供する、AIサービス名に使われるブランド名です。
Watsonは役割ごとにサービスが分かれています。目的にあわせたWatsonサービスを組み合わせて、柔軟なアプリケーション開発が可能となっています。
例えば、Watsonサービス内の、Speech to Text(STT)で音声をテキスト化し、Natural Language UnderStanding(NLU)で自然文を分類する、Assistantを利用して質疑応答システムを組み上げる、などです。
IBM Cloudの環境から、使いたいWatsonサービスをインスタンスとして立ち上げれば、CRUDLに沿ったHTTPリクエスト用のAPIエンドポイントも払い出されます。
このAPIエンドポイントを、パブリックなインターネットからではなく、プライベートなネットワークで利用したいと相談を受けることがあります。
専用線やVPNを引くのでしょうか。そういった手段も提供されており利用できるのですが、、IBM Cloud上でVPCを構築している場合は、非常に手軽な方法があるので、本記事ではIBM Cloud上でVPCを構築している環境でプライベートネットワークで接続する方法を紹介したいと思います。
大きなステップは2つです。
① VPC内にVirtual Server(VM)を立てる
※IBMでは、Virtual Server Instanceの略としてVSIと表現することもあります
② 利用するWatsonサービスのサービスエンドポイントをプライベートに指定する
手順①は終わっているものとし、②の手順を解説します。
例として、WatsonのNLUでの手順を記載しますが、他サービスでも同様です。
※本手段が利用できるサービス一覧と詳細は以下をご確認くださいhttps://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&interface=ui
IBM Cloudへログイン後、Natural Language Understandingのインスタンスを立ち上げる画面です。
リージョンとプランを選びます。任意のサービス名なども決めます。
最下段にサービスエンドポイントの選択項目が出てきます。
この選択項目をPrivate Networkにするだけで、プライベート化は終わりです。
Createボタンを押すと通常の流れでエンドポイントのURLとAPIキーが発行されます。
今回はプライベートネットワークを選択したので、プライベート用のエンドポイントが払い出されました。
https://api.private.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx
パブリックネットワークを指定した場合は、このようなエンドポインになります。
https://api.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx
非常に簡単にプライベート化できたのですが、どういう構成になってるでしょうか。
下図の赤枠内にサーバであるVSIがあります。右箱のIBM Cloud ServiceがWatsonなどのサービスです。サーバからWatsonへの通信は、IBM Cloud内のエンドポイントを経由するようになっています。
https://cloud.ibm.com/docs/account?topic=account-service-endpoints-overview
インターネットを介した通信は発生せず、IBM内で完結した内部ルーティングです。帯域課金も発生しなくなります。
本当にパブリックからはアクセスできないのか心配ですね。
先ほど作成したNLUのアクセスポイントをcurlで確認してみましょう
(インターネットからアクセス)
$ url=’https://api.private.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx $ apikey='***' $ version="2022-04-07" $ curl -v -u "apikey:${apikey}" "${url}/v1/models?version=${version}" * Trying 166.9.*.*:443... * connect to 166.9.*.* port 443 failed: Connection timed out
タイムアウトしました。
接続先の166.9.0.0/16のIPアドレスレンジは、同じLANセグメント内のデバイスのみで通信できる、リンクローカルアドレスのようなIPです。ような、と書いたのは、IETFが定める、アドレスブロックのレンジ(169.254.0.0/16)には入っていないためです。IBMが確保し、プライベートエンドポイントサービスのみで使用するために予約しているレンジです。MPLS Layer-3 VPN (RFC 4364) として規格化されています。
https://datatracker.ietf.org/doc/html/rfc4364
IPアドレスがグローバルテーブルでオーバーラップすることはありません。IBM Cloud内のアベイラビリティーゾーン(AZ)で、仮想プライベート・クラウド(VPC)からのみ、VRF(Virtual Routing and Forwarding)と呼ばれるルーティングテーブルを通して通信されます。テナント単位の専用論理ネットワークであり、マルチテナント分離されているため、顧客間で通信が紛れることもありません。
(VSIからアクセス)
IBM CloudのVPC内のVSIサーバへログインします。そこから上と同じ環境変数を設定し、同じコマンドを実行します。
ちゃんと応答が返ってきます。
-snip- < HTTP/2 200 -snip-
インターネットを経由しない、セキュアで帯域保証された経路でWatsonサービスを使いたいという要望を、簡単に実現できる手段について解説しました
IBM CloudにはIAM(Identity and Access Management)の機能も備わっています。利用するサービスをリソースグループとして管理し、それを呼び出すサービスアカウントを設定し、アクセスの権限を付与、または限定する、など細やかな管理も可能です。ネットワークのプライベート化とあわせて、このあたりの機能も交えて構成を検討ください。
条件に該当するページがございません