Azure OpenAI Service使ってみた#3 ~OCXを用いた閉域アクセス編~

はじめに

こんにちは、BBSakura Networks株式会社(以降BBSakura)にてOCXのクラウド直接接続サービスの運用を担当している太田と申します。

「OCXを用いた閉域網でのAzure OpenAI Service活用」3部作もいよいよ最終回となりました。

Azure OpenAI Service | Microsoft Azure

第1部ではAzure OpenAI Serviceの基本的な利用方法を第2部では閉域接続のための基盤となるAzure側ネットワークリソースの準備について解説しました。まだご覧になっていない方は、ぜひそちらもご確認ください。

本記事(第3部)では、これまでの準備を踏まえ、Azure側の最終的な接続設定とOCX側の設定を行い、お客様環境(今回はGoogle Cloud上に構築したUbuntu Desktop環境を想定)からAzure OpenAI Serviceへ実際に閉域接続を確立し、Webアプリケーションにアクセスするまでの手順を詳細にご説明します。

第1部はこちら: Azure OpenAI Service使ってみた#1 ~インターネット接続編~

第2部はこちら: Azure OpenAI Service使ってみた#2 ~閉域接続のためのAzureネットワーク設定編~

構成図

Google Cloud上のUbuntu DesktopからOCXを経由してAzure OpenAI Serviceに閉域接続するシステム構成図
構成図

Google Cloud上の仮想マシンにUbuntu Desktopを立てて、それをPCとして使用します。 そのため本記事ではGoogle CloudとAzure間をOCXを用いて閉域接続しますが、Google Cloud側はお客様環境に合わせて変更することができます。

  • 前提
    • Azureポータルにてリソースの作成ができる状態
    • OCXポータルにてリソースの作成ができる状態
    • PC側環境の整備が終わっている状態

手順目次

<注釈>
・前回の記事(第2部)の続きからの手順となります
・Google Cloud側の作業は省略します

 

  1. ExpressRoute Circuit作成
  2. OCX Cloud Connectionを用いた閉域接続
  3. ExpressRoute Circuit詳細設定
  4. PCにてDNS設定変更&Webアプリに閉域アクセス

1. ExpressRoute Circuit作成

1-1. 作成画面へ

Microsoft Azure ホーム画面の上の検索欄で [ExpressRoute circuits] と検索の上、 「ExpressRoute circuits」 画面を開きます。その後、[作成]を押下します。

1-2. 構成設定

[構成] タブにて以下項目を入力して [確認および作成] を押下します。

Azure ExpressRoute Circuit作成画面の「構成」タブ。サブスクリプション、リソースグループ、回復性、リージョン、回線名、ポートの種類、プロバイダー、ピアリングの場所、帯域幅、SKU、課金モデルの設定項目が表示されている。
1.1 構成タブ

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
回復性 標準の回復性
リージョン Japan East
回線名 任意
ポートの種類 プロバイダー
ピアリングの場所 Tokyo2
プロバイダー BBIX
帯域幅 任意
SKU 任意
課金モデル 任意

1-3. サービスキーのメモ

作成したリソースを確認し、サービスキーをメモしておきます

Azure ExpressRoute Circuitの概要画面。作成されたExpressRoute Circuitのサービスキーが表示されている箇所が示されている。
1.2 作成したリソース

2. OCX Cloud Connectionを用いた閉域接続

2-1. Cloud Connectionの作成

2-1-1. 作成画面へ

OCXポータルにログインし、[Cloud Connections]→ [作成]を押下します(以降Cloud ConnectionのことをCCと呼ぶ)。

OCXポータルのCloud Connections一覧画面。「作成」ボタンが強調表示されている。
2.1.1 CC作成画面へ

2-1-2. Azure CC作成

以下項目を入力して [作成] を押下します。

OCXポータルのCloud Connection作成画面(Azure向け)。名前、速度、Cloud NNI PoP名、CPEへの転送方法、サービスキーの入力項目が表示されている。
2.1.2 CC作成

項目 パラメータ
名前 任意
速度(帯域) 50Mbps
Cloud NNI PoP名 BBIX (Tokyo AT-Tokyo CC1 node1) <====> Azure (Primary, AT-Tokyo "Tokyo2", Japan East)
CPEへの転送方法 シングルタグ(dot1q)
サービスキー 1-3でメモしたもの
<注釈>
・Azure CCはAzure仕様により自動でPrimary, Secondaryの2つ作成されます
・本記事ではSecondaryは使用しません

 

2-1-3. VLAN IDをメモ

作成したリソースを確認し、VLAN IDをメモしておきます

OCXポータルのCloud Connection詳細画面。作成されたAzure CCのVLAN IDが表示されている箇所が示されている。
2.1.3 VLAN IDの確認

2-1-4. PC側CC作成

<注釈>
・本記事ではPCをGoogle Cloud上に用意するため、本工程を行います。PCをどこに用意するかによって、本作業の内容は変わります。

 

2-1-2と同様の手順で、Google Cloud用のCCを作成します。詳細は以下をご参照ください。

Cloud Connection(Google Cloud)の作成 | Open Connectivity eXchange

2-2. OCX-Router(v1)の作成

2-2-1. 作成画面へ

OCXポータルにログインし、[OCX-Router(v1)]→ [作成]を押下します。

OCXポータルのOCX-Router(v1)一覧画面。「作成」ボタンが強調表示されている。
2.2.1 OCX-Router(v1)作成画面へ

2-2-2. OCX-Router(v1)作成

以下項目を入力して [作成] を押下します。

OCXポータルのOCX-Router(v1)作成画面。名前、ロケーション、ローカルASNなどの入力項目が表示されている。
2.2.2 OCX-Router(v1)作成

項目 パラメータ
名前 任意
ロケーション Tokyo
ローカルASN 65001
その他 任意
<注釈>
・自動で2インスタンス(Primary, Secondary)作成されます
・本記事ではSecondary Routerは使用しません

 

2-2-3. Primary Interface 作成画面へ

作成したリソースの状態が[activated]になったことを確認し、[+]→ [+Primary Interface作成]を押下します。

OCXポータルのOCX-Router(v1)詳細画面。Primaryルーターの「+Primary Interface作成」ボタンが強調表示されている。
2.2.3 Primary Interface作成へ

2-2-4. Primary Interface 作成

以下項目を入力して [作成] を押下します。

OCXポータルのOCX-Router(v1)のPrimary Interface作成画面。インターフェース名とIPv4アドレスの入力項目が表示されている。
2.2.4 Primary Interface詳細設定

項目 パラメータ
インターフェース名 任意
IPv4アドレス 192.168.1.1/30

2-2-5. BGP Parameter 設定画面へ

作成したリソースの状態が[available]になったことを確認し、[BGP Parameters]→ [BGP Parameters作成]を押下します。

OCXポータルのOCX-Router(v1)のInterface詳細画面。「BGP Parameters作成」ボタンが強調表示されている。
2.2.5 BGP Parameters作成へ

2-2-6. BGP Parameter 設定

以下項目を入力して [作成] を押下します。

OCXポータルのOCX-Router(v1)のBGP Parameter作成画面。ローカルアドレス、リモートアドレス、リモートASNなどの入力項目が表示されている。
2.2.6 BGP Parameter設定

項目 パラメータ
ローカルアドレス 192.168.1.1
リモートアドレス 192.168.1.2
リモートASN 12076
その他 任意

2-2-7. PC側InterfaceとBGP Parameter設定

2-2-3〜2-2-6を繰り返し、PC側(本記事ではGoogle Cloud環境)用のInterfaceとBGP Parameterを設定します。

OCXポータルのOCX-Router(v1)詳細画面。Azure側とPC側(Google Cloud)のインターフェースおよびBGPパラメータが設定完了した状態が示されている。
2.2.7 設定後

2-3. VCの作成、アタッチ

2-3-1. 作成画面へ

OCXポータルで、[Virtual Circuits (VCs)]→ [作成]を押下します。

OCXポータルのVirtual Circuits (VCs)一覧画面。「作成」ボタンが強調表示されている。
2.3.1 VC作成画面へ

2-3-2. VC作成

以下項目を入力して [作成] を押下します。

OCXポータルのVirtual Circuit (VC)作成画面。名前の入力項目が表示されている。
2.3.2 VC作成

項目 パラメータ
名前 任意

2-3-3. VCにAzure CCとRouter Interfaceをアタッチ

作成したVC を選択し、[Cloud Connections]欄で2-1-2で作成したCCの[アタッチ]を押下します。

OCXポータルのVirtual Circuit (VC)詳細画面。「Cloud Connections」セクションでAzure CCをアタッチする「アタッチ」ボタンが強調表示されている。
2.3.3 VCアタッチ

同様に[Router Connections]欄で2-2-4で作成したRouter Interfaceの[アタッチ]を押下します。

2-3-4. PC側用VC作成、アタッチ

2-3-1~2-3-3と同様にしてPC側アタッチ用のVCを作成し、該当リソースをアタッチします(本記事では、手順2-1-4で作成したPC側CCと、手順2-2-7で設定したPC側インターフェースを指します)。

3. ExpressRoute Circuit詳細設定

3-1. プライベートピアリング設定へ

1-2で作成したExpressRoute Circuitリソース画面に戻り、[Azure プライベート]を選択します。

Azure ExpressRoute Circuitの概要画面。「ピアリング」セクションの「Azure プライベート」が選択されている状態。
3.1 プライベートピアリング設定へ

3-2. プライベートピアリング設定

以下項目を入力して [保存] を押下します。

Azure ExpressRoute Circuitのプライベートピアリング設定画面。ピアASN、IPv4プライマリサブネット、VLAN IDなどの入力項目が表示されている。
3.2 プライベートピアリング設定

項目 パラメータ
ピアASN 65001
サブネット IPv4
IPv4 プライマリサブネット 192.168.1.0/30
IPv4 セカンダリサブネット 任意(使用しません)
VLAN ID 2-1-3でメモした値

3-3. ルートテーブル確認

ExpressRoute Circuitリソース画面に戻り[Azure プライベート]の右側にある[•••]を押下し、[ルートテーブルを表示する]を押下します。

Azure ExpressRoute Circuitのプライベートピアリング詳細画面。右側の「•••」メニューから「ルートテーブルを表示する」が選択されている状態。
3.3 ルートテーブルへ

PC側ネットワークへのルートが受信できていることを確認します。本記事ではGoogle Cloud のVPCサブネットのネットワークアドレスを受信しています。

Azure ExpressRoute Circuitのルートテーブル表示画面。プライマリパスのルートテーブルにPC側ネットワークへのルートが学習されている状態が示されている。
3.4 ルートテーブル

<注釈>
・PC側ネットワークへのルートを受信するには、PC側ネットワーク(本記事ではGoogle Cloud)⇔OCX-Router(v1)区間のBGPセッションが確立されている必要があります。

 

3-4. 接続設定へ

ExpressRoute Circuitリソース画面に戻り、[設定]→[接続]→[追加]を押下します。

Azure ExpressRoute Circuitの「接続」設定画面。「+追加」ボタンが強調表示されている。
3.5 接続設定へ

3-5. 基本タブ

以下項目を入力して、 [次へ] を押下します。

Azure ExpressRoute Circuitの接続作成画面の「基本」タブ。サブスクリプション、リソースグループ、接続の種類(ExpressRoute)の入力項目が表示されている。
3.6 基本タブ

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
接続の種類 ExpressRoute

3-6. 設定タブ

以下項目を入力して、 [確認および作成] を押下します。

Azure ExpressRoute Circuitの接続作成画面の「設定」タブ。回復性、仮想ネットワークゲートウェイ、接続名、ExpressRoute回線、ルーティングの重みなどの設定項目が表示されている。
3.7 設定タブ

項目 パラメータ
回復性 標準の回復性
仮想ネットワークゲートウェイ 前回記事、5-2で作成したものを選択
名前 任意
ExpressRoute 回線 1-2で作成したものを選択
ルーティングの重み 任意
その他 任意

4. PCにてDNS設定変更&Webアプリに閉域アクセス

4-1. パブリックアクセスができないことを確認

作成したWebアプリのドメインにインターネット経由でアクセスできないことを確認します

WebブラウザでAzure Webアプリのドメインにアクセスしようとし、「このサイトにアクセスできません」というエラーメッセージが表示されている画面。
4.1 インターネット経由アクセス

4-2. DNSクエリの送信先を変更

PCにてDNSクエリの送信先を前回記事、4-4でメモしたIPアドレスに変更します。 下図はUbuntu Desktopでの例です。

Ubuntu Desktopのネットワーク設定画面。DNSサーバーのアドレスをAzure DNS Private Resolverの受信エンドポイントIPアドレスに変更している様子。
4.2 DNSクエリ送信先変更

4-3. 閉域アクセスできることを確認

作成したWebアプリのドメインに閉域アクセスできることを確認します。

WebブラウザでAzure Webアプリのドメインにアクセスし、前回記事(第一部)で作成したChatGPT風UIが正常に表示されている画面。
4.3 閉域アクセス

おわりに

3回にわたり、OCXを用いた閉域網経由でのAzure OpenAI Service利用手順をご紹介しました。設定項目が多く大変だったかもしれませんが、これで安全なAI活用環境を構築する一例がお分かりいただけたかと思います。

Azure OpenAI Serviceは、社内データを活用した専用AIの構築など、様々な応用が可能です。ぜひ本シリーズでご紹介した内容を参考に、お客様の環境やニーズに合わせたセキュアなAIソリューションの実現にOCXをお役立ていただければ幸いです。

最後までお読みいただき、誠にありがとうございました。

Azure OpenAI Service使ってみた#2 ~閉域接続のためのAzureネットワーク設定編~

はじめに

こんにちは、BBSakura Networks株式会社(以降BBSakura)にてOCXのクラウド直接接続サービスの運用を担当している太田と申します。

このシリーズでは、OCXを用いた閉域網でのAzure OpenAI Service(以降OpenAI Service)活用法をご紹介しています。

Azure OpenAI Service | Microsoft Azure

前回の第1部では、OpenAI Serviceの基本的な利用方法として、インターネット経由でWebアプリケーションと連携する手順をご紹介しました。まだご覧になっていない方は、そちらも併せてご確認ください。

本記事(第2部)では、第1部で作成した環境への閉域接続を実現するため、Azure側で基盤となるネットワークリソースの作成と設定手順を詳しく解説します。

第1部はこちら: Azure OpenAI Service使ってみた#1 ~インターネット接続編~

構成図

Azure OpenAI Serviceに閉域接続するためのシステム構成図。Azureの必要リソースが書かれている。
構成図

前回の記事からやや複雑になりました。しかし、この手順を完了すれば閉域接続の準備は万端ですので、頑張って進めていきましょう。

  • 前提
    • Azureポータルにてリソースの作成ができる状態

手順目次

<注釈>
・前回の記事(第1部)の続きからの手順となります。

 

  1. VNetとサブネット作成
  2. Webアプリの閉域設定
  3. OpenAI Serviceの閉域設定
  4. DNS Private Resolver作成
  5. 仮想ネットワークゲートウェイ作成

1. VNetとサブネット作成

1-1. 作成画面へ

Microsoft Azure ホーム画面の上の検索欄で [仮想ネットワーク] と検索の上、 「仮想ネットワーク」 画面を開きます。

1-2. 基本設定

開いた画面で [作成] を押下すると、以下のような 「仮想ネットワークの作成」 画面が表示されます。

Azureポータルの「仮想ネットワークの作成」画面の基本設定タブ。サブスクリプション、リソースグループ、仮想ネットワーク名、リージョン入力欄が表示されている。
1.1 仮想ネットワーク作成画面

以下項目を入力して [次へ] を押下します。なお、 [セキュリティ] タブではそのまま何も入力せず [次へ] で結構です。

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
仮想ネットワーク名 任意
リージョン Japan East

1-3. IPアドレス設定と仮想ネットワークゲートウェイ用サブネット作成

[IPアドレス] タブで、VNetに割り当てる任意のIPアドレス(本書では172.16.1.0/24)を入力します。また、「default」 サブネットの鉛筆マークを押下して、仮想ネットワークゲートウェイ用サブネットを作成します。

Azureポータルの「仮想ネットワークの作成」画面のIPアドレス設定タブ。VNetのIPアドレス空間入力と、仮想ネットワークゲートウェイ用サブネットの編集画面が表示されている。
1.2 IPアドレス設定&Gateway Subnet作成

以下のパラメータで仮想ネットワークゲートウェイ用サブネットを作成します。

項目 パラメータ
サブネットの目的 Virtual Network Gateway
開始アドレス お客様環境に従い設定
サイズ /27以上で任意(本書では/26)
その他 お客様環境に従い設定

1-4. 残り3つのサブネット作成

さらに、 [IPアドレス] タブで、 [+ サブネットの追加] を押下し、 「サブネットの追加」 画面から 3つ(EndPoint用、VNet統合用、DNS用)のサブネットを、以下の項目を参考に追加します。

Azureポータルの「サブネットの追加」画面。サブネットの目的、開始アドレス、サイズなどの入力項目が表示されている。
1.3 サブネットの追加

項目 パラメータ
サブネットの目的 Default
開始アドレス お客様環境に従い設定
サイズ お客様環境に従い設定
その他 お客様環境に従い設定

1-5. 確認&作成

4つのサブネット(仮想ネットワークゲートウェイ用、EndPoint用、VNet統合用、DNS用)を設定したことを確認したら、[レビューと作成] から作成します。

2. Webアプリの閉域設定

2-1. Webアプリへ

Microsoft Azure ホーム画面の上の検索欄で [App Services] と検索の上、 「App Services」 画面を開きます。その後、前回の記事で作成したWebアプリを開きます。

2-2. パブリックアクセスの無効化

該当リソース画面にて [ネットワーク] を選択して以下の項目を押下し、各種設定を行います。各項番のクリック箇所は、以下の画像のとおりです。

Azure App Serviceのネットワーク設定画面。受信トラフィックのアクセス制限、プライベートエンドポイント、仮想ネットワーク統合などの設定項目が表示されている。
2.1 ネットワーク設定画面

[公衆ネットワークアクセス]にて[無効]を選択し、[保存]を押下します。

Azure App Serviceのアクセス制限設定画面。パブリックアクセスを無効にするための設定と、確認のチェックボックスが表示されている。
2.2 アクセス制限

「このチェックボックスをオンにするとアクセス制限の更新に同意したことになります」のチェックボックスにチェックを入れて[続行]を押下します。

2-3. プライベートエンドポイント作成

ネットワーク画面より、[プライベートエンドポイント] を押下し、[追加]→[簡易]から以下項目を入力してPrivate Endpointを作成します。

Azure App Serviceのプライベートエンドポイント作成画面。名前、サブスクリプション、仮想ネットワーク、サブネット、プライベートDNSゾーンとの統合設定項目が表示されている。
2.3 プライベートエンドポイント作成

項目 パラメータ
名前 任意
サブスクリプション 該当のサブスクリプションを選択
仮想ネットワーク名 作成した仮想ネットワークを選択
サブネット 作成したEndPoint用サブネットを選択
プライベートDNSゾーンと統合する はい

2-4. 仮想ネットワーク統合の追加

ネットワーク画面より、[仮想ネットワーク統合] を押下し、[仮想ネットワーク統合の追加]から以下項目を入力して[接続]を押下します。

Azure App Serviceの仮想ネットワーク統合の追加画面。サブスクリプション、仮想ネットワーク、サブネットの選択項目が表示されている。
2.4 仮想ネットワーク統合の追加

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
仮想ネットワーク名 作成した仮想ネットワークを選択
サブネット 作成したVNet統合用サブネットを選択

3. OpenAI Serviceの閉域設定

3-1. 作成済みのOpen AI Serviceリソースへ

Microsoft Azure ホーム画面の上の検索欄で [Azure OpenAI] と検索の上、 「Azure OpenAI」 画面を開きます。その後、前回の記事で作成したリソースを開きます。

3-2. 許可するアクセス元の変更

[ネットワーク]→[Firewalls and virtual networks]→[許可するアクセス元]にて無効を選択し、[Save]を押下します。

Azure OpenAI Serviceのネットワーク設定画面。「Firewalls and virtual networks」タブで「許可するアクセス元」を「無効」に設定する箇所が示されている。
3.1 パブリックアクセス設定

3-3. プライベートエンドポイント作成 基本タブ

引き続き [ネットワーク] タブで、 [プライベートエンドポイント接続] →「+プライベート エンドポイント」 を押下します。以下項目を入力して、 [次へ] を押下します。なお、 [リソース] タブではそのまま何もせず [次へ] で結構です。

Azure OpenAI Serviceのプライベートエンドポイント作成画面の「基本」タブ。サブスクリプション、リソースグループ、名前、ネットワークインターフェース名、リージョンの入力項目が表示されている。
3.2 基本タブ

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
名前 任意
ネットワークインターフェース名 任意
リージョン Japan East

3-4. プライベートエンドポイント作成 仮想ネットワークタブ

[仮想ネットワーク] タブで、以下項目を入力して、 [次へ] を押下します。

Azure OpenAI Serviceのプライベートエンドポイント作成画面の「仮想ネットワーク」タブ。仮想ネットワークとサブネットの選択項目が表示されている。
3.3 仮想ネットワークタブ

項目 パラメータ
仮想ネットワーク名 作成した仮想ネットワークを選択
サブネット 作成したEndPoint用サブネットを選択
その他 任意

3-5. プライベートエンドポイント作成 DNSタブ

[DNS] タブで、以下項目を選択します。手順に沿って[次へ]を押下し、リソースを作成します。

Azure OpenAI Serviceのプライベートエンドポイント作成画面の「DNS」タブ。「プライベートDNSゾーンと結合する」を「はい」に設定し、関連するサブスクリプションとリソースグループを選択する項目が表示されている。
3.4 DNSタブ

項目 パラメータ
プライベートDNSゾーンと結合する はい
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択

4. DNS Private Resolver作成

4-1. 作成画面へ

Microsoft Azure ホーム画面の上の検索欄で [DNS Private Resolver] と検索の上、 「DNS Private Resolver」 画面を開きます。その後、[DNS Private Resolverの作成]を押下します。

4-2. 基本設定

[基本] タブにて以下項目を入力して [次へ] を押下します。

Azure DNS Private Resolver作成画面の「基本」タブ。サブスクリプション、リソースグループ、名前、リージョン、仮想ネットワークの選択項目が表示されている。
4.1 基本タブ

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
名前 任意
リージョン Japan East
仮想ネットワーク名 作成した仮想ネットワークを選択

4-3. 受信エンドポイント設定

[受信エンドポイント] タブで、 [+ エンドポイントの追加] を押下し、以下項目を入力して [保存] を押下します。その後[確認および作成]を押下し、リソースを作成します。

Azure DNS Private Resolver作成画面の「受信エンドポイント」タブ。「エンドポイントの追加」画面でエンドポイント名、サブネット、IPアドレスの割り当て方法を設定する項目が表示されている。
4.2 受信エンドポイントタブ

項目 パラメータ
エンドポイント名 任意
サブネット 作成したEndPoint用サブネットを選択
IPアドレスの割り当て 動的

4-4. 受信エンドポイントのIPアドレスをメモ

作成したリソースの受信エンドポイントを確認し、IPアドレスをメモしておきます

Azure DNS Private Resolverの概要画面。作成された受信エンドポイントのIPアドレスが表示されている箇所が示されている。
4.3 IPアドレス確認

5. 仮想ネットワークゲートウェイ作成

5-1. 作成画面へ

Microsoft Azure ホーム画面の上の検索欄で [Virtual network gateways] と検索の上、 「Virtual network gateways」 画面を開きます。その後、[Virtual network gatewaysの作成]を押下します。

5-2. 基本設定

[基本] タブにて以下項目を入力して [確認および作成] を押下します。

Azure 仮想ネットワークゲートウェイ作成画面の「基本」タブ。サブスクリプション、名前、リージョン、ゲートウェイの種類、SKU、仮想ネットワーク、パブリックIPアドレスなどの設定項目が表示されている。
5.1 基本タブ

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
名前 任意
リージョン Japan East
ゲートウェイの種類 ExpressRoute
SKU Standard
仮想ネットワーク名 作成した仮想ネットワークを選択
サブネット GatewaySubnetが自動で選択
パブリックIPアドレス 新規作成
パブリックIPアドレス名 任意
パブリックIPアドレスにSKU Standard

おわりに

Azure OpenAI Serviceへの閉域接続に向けたAzure側ネットワーク基盤の準備、お疲れ様でした。本記事では、閉域接続に不可欠な仮想ネットワークやプライベートエンドポイントなどの設定を行い、Azureとお客様環境を接続するための重要な準備が整いました。

次回はいよいよ最終回です。Azure側の最終的な接続設定とOCX側の各種設定を行い、お客様環境(次回記事ではGoogle Cloud上の仮想マシンをPCとして利用する想定)からAzure OpenAI ServiceがデプロイされたWebアプリへ、実際に閉域接続を確立するまでの一連の手順をご紹介します。どうぞご期待ください。

最後までお読みいただき、ありがとうございました。

Azure OpenAI Service使ってみた#1 ~インターネット接続編~

はじめに

こんにちは、BBSakura Networks株式会社(以降BBSakura)にてOCXのクラウド直接接続サービスの運用を担当している太田と申します。

このブログシリーズでは、OCXを用いた閉域網でAzure OpenAI Service(以降OpenAI Service)を利用する構成例を3回にわたってご紹介します。

Azure OpenAI Service | Microsoft Azure

第1部となる本記事では、OpenAI Serviceの基本的な使い方を体験するため、まずはインターネット経由でOpenAI Serviceを利用し、Webアプリケーションと連携させる手順をご説明します。

続く第2部では、今回作成したWebアプリケーションへの閉域接続に必要となるAzure側のネットワーク設定について解説します。そして最後の第3部では、Azureとお客様環境をOCX経由で接続し、実際に閉域アクセスを実現する手順をご紹介しますので、ぜひ最後までお付き合いください。

第2部はこちら: Azure OpenAI Service使ってみた#2 ~閉域接続のためのAzureネットワーク設定編~

構成図

ユーザーPCからインターネットを経由してAzure App Service上のWebアプリにアクセスし、そのWebアプリがAzure OpenAI Serviceと連携するシステム構成図
構成図

上記のような構成図でまずはOpenAI Serviceに触れてみようと思います。

  • 前提
    • Azureポータルにてリソースの作成ができる状態

手順目次

  1. OpenAI Serviceの作成
  2. AIモデルのデプロイとAzure App Serviceへのデプロイ
  3. WebアプリケーションにてAIと対話

1. OpenAI Serviceの作成

1-1. 作成画面へ

Microsoft Azure ホーム画面の上の検索欄で [Azure OpenAI] と検索の上、 「Azure OpenAI」 画面を開きます。

1-2. 基本設定

開いた画面で [作成] を押下すると、以下のような 「Azure OpenAI の作成」 画面が表示されます。

Azure OpenAI Service作成画面の「基本」タブ。サブスクリプション、リソースグループ、リージョン、名前、価格レベルの各入力項目が表示されている。
1.1 OpenAI Service基本タブ

以下項目を入力して [次へ] を押下します。

項目 パラメータ
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
リージョン Japan East
名前 任意
価格レベル 任意

1-3. ネットワーク設定

[ネットワーク]タブで「インターネットを含むすべてのネットワークがこのリソースにアクセスできます。」を選択します。

Azure OpenAI Service作成画面の「ネットワーク」タブ。「インターネットを含むすべてのネットワークがこのリソースにアクセスできます。」のオプションが選択されている状態。
1.2 OpenAI Service ネットワークタブ

1-4. リソースの作成

手順に沿って[次へ]を押下し、最後に[作成]を押下すると、OpenAIリソースが作成されます。

2. AIモデルのデプロイとAzure App Serviceへのデプロイ

<注釈>
・本記事では簡素にするため、参考例として本方式でのデプロイを採用させていただいています。
・選択するAIモデルによってはAzure App Service(以降App Service)へのデプロイができない場合があります。

 

2-1. Azure AI Foundryへ

作成した以下のようなAzure OpenAIリソース画面を開き、 [Go to Azure AI Foundry portal] を押下します。

Azure OpenAI Serviceのリソース画面。「モデルデプロイ」セクションにある「Go to Azure AI Foundry portal」ボタンが示されている。
2.1 作成後のOpenAI Service

2-2. AIモデル設定画面へ

Azure AI Foundry(以降AI Foundry)画面にて[チャット]を選択して、[新しいデプロイの作成]→[基本モデルから]を選択して押下します。

Azure AI Foundryのポータル画面。「作成」メニューの「チャット」が選択され、「新しいデプロイの作成」から「基本モデルから」を選択するドロップダウンが表示されている。
2.2 AI Foundry

2-3. AIモデルの選択

[gpt-35-turbo]を選択し、[確認]を押下します。

Azure AI Foundryのモデル選択画面。「gpt-35-turbo」モデルが選択され、「確認」ボタンが表示されている。
2.3 AIモデル選択

2-4. 詳細設定

詳細設定画面が表示されます

Azure AI FoundryのAIモデルデプロイ詳細設定画面。デプロイ名、デプロイの種類、デプロイの詳細といった入力項目が表示されている。
2.4 AIモデル詳細設定

以下項目を入力して [次へ] を押下します。

項目 パラメータ
デプロイ名 任意
デプロイの種類 Standard
デプロイの詳細 任意

2-5. Webアプリデプロイ画面へ

AI Foundry画面に戻り、[チャット]を選択して、[デプロイ]→[...Webアプリとして]を選択して押下します。

Azure AI Foundryのチャットモデル一覧画面。作成されたデプロイ済みモデルの「デプロイ」メニューから「...Webアプリとして」を選択する箇所が示されている。
2.5 AIモデル デプロイ後

2-6. Webアプリデプロイ設定

以下のような 「Webアプリにデプロイ」 画面が表示されます。

Azure AI Foundryの「Webアプリにデプロイ」画面。「新しいWebアプリを作成する」が選択され、名前、サブスクリプション、リソースグループ、場所、価格プラン、チャット履歴有効化の各設定項目が表示されている。
2.6 Webアプリにデプロイ

[新しいWebアプリを作成する]を選択し、以下項目を入力して [展開] を押下します。

項目 パラメータ
名前 任意
サブスクリプション 該当のサブスクリプションを選択
リソースグループ 作成済みのリソースグループを選択
場所 Japan East
価格プラン Free以外で任意
Webアプリでチャット履歴を有効にする 任意

2-7. Webアプリデプロイ確認

10~15分程度待つとWebアプリがデプロイされます。確認は[デプロイ]を選択して、[アプリのデプロイ]→[デプロイ状態]から行えます。

Azure AI Foundryの「デプロイ」タブ内、「アプリのデプロイ」セクション。「デプロイ状態」の確認箇所が示されている。
2.7 デプロイ状況確認

3. WebアプリケーションにてAIと対話

3-1. 「App Services」へ

Microsoft Azure ホーム画面の上の検索欄で [App Services] と検索の上、 「App Services」 画面を開きます。

3-2. デプロイされたWebアプリへ

デプロイされたWebアプリを選択し、[ドメイン]→[既定のドメイン]に書かれたドメインを押下します。

AzureポータルのApp Services一覧画面。デプロイされたWebアプリが選択され、その「既定のドメイン」URLが示されている。
3.1 App Services

3-3. AIと対話

アクセス許可が求められるので[承諾]を押下すると、アプリが表示されます。AIと対話してみましょう。

デプロイされたWebアプリケーションのチャット画面。「今日の天気は?」というユーザーの質問に対し、AIが「今日の東京の天気は晴れです」と回答している対話の様子。
3.2 WebアプリでAIと対話

おわりに

今回は、Azure OpenAI Serviceをインターネット経由で利用し、Webアプリケーションと連携させる手順をご紹介しました。比較的簡単にAIサービスに触れられることを実感いただけたのではないでしょうか。

次回はいよいよ、本題であるOCXを用いた閉域接続の準備段階として、Azure側でのネットワーク基盤の構築と設定について詳しく解説していきます。

最後までお読みいただき、ありがとうございました。

MWC2025 JAPAN Pavilion出展について

はじめに

こんにちは。昨年12月からBBSakuraのBeyond 5G推進室で従事している栢森と申します。 この記事では、当社として初めてMWC2025における総務省主催のJAPAN Pavilionに出展し、その出展に向けてやってきたこと、感じたことをお話しさせていただきます。他ブースの展示視察の内容・感想についてはまたの機会とさせていただき、今回はエンジニアBlogという感じの技術要素があるわけではないですが、ご容赦ください。

MWC JAPAN Pavilionとは?

MWC(Mobile World Congress)とは、毎年スペイン・バルセロナで開催される世界最大級のモバイル関連展示会で、世界中のモバイル通信事業者や端末メーカー、コンテンツ事業者などが出展し10万人以上の来場者が見込まれている一大イベントです。今回のMWC2025でも11万人以上の来場者が来たと言われています。 Japan Pavilionとは、当該イベントにおいて日本のICT関連製品及びサービスに係る企業のブースを設けることで、日本企業の取組を世界に広く情報発信し、その海外展開を支援する総務省による取り組みになります。 出展選定は「通信インフラに係るハードウェアやデバイスからソフトウェアやアプリケーションまでを含む、5G及びBeyond 5G、OpenRAN、AI、没入型テクノロジー等、MWCのテーマに添ったICT技術の国際展開を視野に入れた日本企業等」を対象とされ、昨年7月から募集が始まり、BBSakura Networksは親会社であるBBIXと共に提供しているクラウド型ネットワークサービス「Open Connectivity eXchange」(以下「OCX」)の展示を題材に、総務省の審査と選考を経てブース出展の獲得に至りました。

MWC2025展示会場内におけるJAPAN Pavilionを入り口正面から撮った画像。右側にBBSakura Networksのブースと、赤いハッピを来たBBSakura Networks社員がブース来場者を迎えている姿を映し出しています。
MWC JAPAN Pavilionの写真

出展の目的と成果

出展の目的は、もちろん弊社サービスであるOCXの世界に向けたアピールというのもありますが、出展(準備、展示、プレゼン、協議、他展示視察など)を通した若手社員の成長機会提供の度合いが強かったと感じています。 JAPAN Pavilionへの参加はBBSakuraとしてはもちろん初。親会社のBBIXとしても出展経験はなく、私自身もそもそもMWC自体への参加も初めてだったのですが、昨年11月に出展に向けたリード役の任を授かった当初はまずはチーム編成から開始してプロジェクト的に体制確立を実施。その後は総務省事務局から次々に依頼される、出展に向けた提出物をチーム皆んなで手分けして作成して提出していきました。 BBSakuraのチームメンバーは、担当業務ではない、やったことない、知らない、という言い訳は一切なしで、基本は一つ一つのアクションに挙手または稼働バランス見ながらでの指名制で、手探りながらも周囲の担当者や上長に聞きながら短納期にも迅速に柔軟に対応していきました。基本は自分が担当した部分はやり切る、というところを意識してくれていたように思います。 また、国際展示であるため、もちろん現地ではブース来訪者に英語でのプレゼン・説明を実施。来訪者はJAPAN Pavilionという企画展示に惹かれてくる人も多く、必ずしも当社が展示しているサービスそのものに興味・関心がある人はむしろ少なかったですが、日本にはBBSakuraという会社があり、そういうサービスを海外でも展開しようとしているんだ、ということを知ってもらう機会にはなり、何よりも若手にとっては展示ブースで自分たちで調べて準備してきた資料を英語で説明する、という経験が自信につながったように思えます。 まぁそれにしても、立ちっぱなしのブース出展・運営と、巨大な展示会での他展示視察の両立はめちゃくちゃしんどく、なんか体力もついたように感じます。

おわりに

出展企業は当社のような初出展企業もいれば、出展経験豊富な企業様もおり、経験と改善を重ねるごとに良い出展ができ、良い成果が得られるように感じました。また、同様の機会を今後の若手メンバーにも提供することで、経験値向上とモチベーションアップにもつながるのではないかと思います。MWCへの継続的な視察はもちろん、今後もチャンスがあれば、JAPAN Pavilion出展にも是非参加していくのが良いと感じました。

プログラミング未経験からのフロントエンド開発

はじめに

 こんにちは、FY24 新卒エンジニアの脇坂です。 私は高専のロボット専攻出身で、主に材料や力学を学んでいたためプログラミングはほぼ未経験でした。 ひょんなことから SB にエンジニアとして就職し、気がつけば BBsakura でフロントエンドの開発をすることになっていました。 この記事ではそんな私が開発に向けてやったことや感じたことをお話ししようと思います。

ウェブアプリ研修

 冒頭でも述べた通り全くもってプログラムを触ってこなかったので、「大丈夫かな?」と不安だった私に最初に課されたのはエンジニア向け研修でした。 開発の基本である GitHub を使ってみよう、という初歩的なものから、簡単な Web アプリを開発する少し高度なものまで、段階的な研修が用意されていました。

 最初の壁は知らない単語だらけということでした。 "GitHub"、"Docker"、"buf"……。「なんか魔法の呪文みたいだな」と思いながらドキュメントを開いてみるも、そこに待っていたのは英語の壁。"エンジニアなら英語は避けて通れない" と言われますが、避けるどころか最初の一歩から躓きました。「英語ができることがプラスなんじゃなくて、できないことがマイナスなんだな……」と、学生時代にもっと英語を勉強しておけばよかったと後悔しつつ、翻訳ツールに頼りながら研修を進めました。とはいえ、検索すれば何とかなる!と思っていたのですが、いざ検索すると知らない単語が連鎖的に出てきて、「調べてもわからないことを調べるためにまた調べる」という無限ループに突入。気づけば Chrome のタブが何十個と開いている状態になり、「私は一体何を調べていたんだ……?」と宇宙猫になったのも良い思い出です。

フロントエンド

HTMLとCSS

 ウェブアプリ研修をなんとか終え、会社としての研修が終わっていよいよ配属先での業務が始まりました。 フロントエンドのフの字も知らない私は勉強からする必要があるため、まずはフロントエンドについて自己学習をし簡単な Web ページを作ることを目標にやってみようと言われました。 まずは HTML と CSS から始め、基本的なレイアウトの作り方やスタイリングの方法を学習しました。Udemy の講座やネットの記事を参考にしながら、簡単なページを作ることで少しずつ理解を深めました。初めは「難しそう...」と構えて勉強を始めたのですが、自分が書いたコードがページとして目に見えるのでとっつきやすくゲーム感覚で楽しく進めることができました。 と、思ったのも束の間、CSS のレイアウトで悪戦苦闘。「margin と padding の違いは?」「flexbox?grid?」「なぜか要素が動かない!!」1 つ修正すると別の場所が崩れる、いわゆる「CSS 沼」にどっぷりハマりました。

JavaScript

 その後JavaScript の基本を学びつつ、次に出会ったのが「DOM(Document Object Model)」。「HTML は静的なもの」と思っていた私にとって、「JavaScript で HTML を書き換えられる!」という事実は衝撃で面白いなと感じました。 しかし、JavaScript が入ってくることでだんだんコードが複雑になっていき難しくなっていく感覚があり、初めは楽しんで進められていた勉強が少し苦になったタイミングがこの辺りでした。

 勉強がかなり億劫になっていたのでリフレッシュも兼ねて学んだことを使って todo リストを作ってみることにしました。 まずは「タスクの追加・編集・削除ができるシンプルなもの」を目標にし、HTML と JavaScript で試行錯誤しながら作成しました。 途中で「データの保持はどうしたらいいんだろう」と思いつき、調べながら実装しました。勉強ではとりあえずコードを書くだったけど、実際に自分で機能を考えてやってみることで どうすればより便利になるかを考えられるようになってきたかもと自分の成長を感じました。 こうして学んだことを形にすると、今までバラバラだった知識がつながっていく感覚があり、インプットだけではなくアウトプットも大事だと改めて思いました。

 ある程度勉強ができた段階で実際に業務に入ってみようということになり、簡単なテキスト修正などの issue をやることになりました。 初めは実際に使われているリポジトリを眺めてみてどんなファイル構造になっているのかなどをみてみたのですが、勉強で作ってみたtodoリストとは比べもの位ならない量のファイル、コード量に圧倒されました。 少し不安になったのですが、先輩もファイル全てを理解できてるわけではないとおっしゃっていて少し安心しました(笑)

おわりに

 現在は issue や簡単な実装を中心に少しずつフロントエンドエンジニアとしての力をつけようと頑張っている段階で少しずつ開発に参加することも増えてきました。 しかし、まだまだ 1 人前のエンジニアには遠くおよびません。 UI チームの先輩にたくさんアドバイスをもらい絶賛成長中で、色々な課題を乗り越えて少しでも早く追いつけるように頑張りたいと思っています!!

新卒JANOG体験記

初めまして、BBSakura Networksの牧野です。1月に京都で開催されたJANOG55に参加してきました。この記事では、新卒1年目で初めてのJANOG参加して感じたことを中心に、簡単にですが綴らせていただこうと思います。

所感

今回、JANOGに初参加して一番印象に残ったのは、参加者同士のつながりの強さです。 ネットワーク関連の方々の集まるイベントなので顔見知りが多いのは当然なのかもしれませんが、とにかく、さまざまなところで意見交換をしたり、最近の技術などについて議論している場面が多くあり、とても驚きました。また私は懇親会にも参加させていただいたのですが、そこでも参加者の方々は熱く議論をされていたりしており、ネットワークに対する熱気や情熱、JANOGというものの歴史を感じることができたような気がしました。自分も数年後にはこの雰囲気に馴染み、議論できるようになりたいと思いました。

参加イベント

プログラム参加

www.janog.gr.jp

 JANOGでは、登壇者が大勢の聴衆に向かって特定のテーマを元に語りかけ、聴衆の質問を受けながら議論を深めていくミーティング形式のプログラムが複数開催されており、その中でも私は仮想基盤についてやRPKIのプログラムを中心に参加してきました。
ある仮想基盤のプログラムの話の中での、ルーターを2段構成で設計することで、設定や管理がシンプルになり、障害や変更の範囲を局所化することで、運用性を重視し柔軟なリソースの分割ができる。という話があったのですが、それが自分にとってそんな構築ができるのかと一番印象的でした。もちろん自分の知識が少なく、知らなかっただけということもあると思いますが、もっともっと詳しくなりたい、勉強したいなと感じた瞬間でした。
また、ROV導入を広げるためのBoFでは、RPKIのことは技術的な面においては多少知っていると思っていたのですが、実際その技術をどのように普及させるのか、までを考えたことがなかったなということに気付かされました。当たり前のことなのですが、世の中を良くする技術が進歩、確立されても、その技術が普及しないと意味がありません。そのようなネットワークの技術を共有したり、普及させる方法をみんなで考え、よりよい未来にしていくためのイベントこそがJANOGなんだなと、このBoFを聴いて気づくことができました。

NETCON

www.janog.gr.jp

NETCONは、実際にトラブルが起きているネットワーク環境を提供していただき、トラブルシューティングを問題形式で解くコンテストです。JANOG参加者は誰でも参加できるというものだったので参加してみたのですが、正直自分のネットワークの知識で大丈夫なのかとても不安でした。ですが、ハンズオンに参加しとところ、チュートリアルから解くことが出来たのでほっとしました。さまざまな難易度の問題があり、実際に手を動かしてトラブルシューティングをするのは思った以上に楽しく、時間があればもっと解きたかったです!

NOCツアー

bakuchiku.freshdesk.com

三日目のお昼にはNOCツアーにも参加させていただきました。NOCツアーはJANOGのネットワークがどのように動いているか見学できるツアーでした。JANOGのNOCメンバーの方々は各分野ごとに、イベント開始までに構築して三日間運用し、終了後に壊すまでの一連の流れを自分たちで全て行なっており、特に学生のスタッフも多く驚きました。自分たちで一から構築し、壊すという経験はなかなか出来なさそうだしおもしろそうだなと思いました。実際のイベント会場ではどのようにネットワークが動いてるかの裏側が見ることができてとてもいい経験になりました。

おわりに

今回初めてJANOGに参加させていただき、たくさんの刺激を得ることが出来ました。それと同時に自分の知識の少なさ、エンジニアとしての未熟さを再確認しました。はやく自分も先輩方に追いつき、ネットワークの技術を共有、普及に貢献できるようになれるように頑張りたいと思います!

初めてのJANOG体験記

初めまして、BBSakura Networksの儀同です。1/22~1/24に京都で開催されたJANOG55に参加してきました。新卒1年目で今回が初めてのJANOG参加となります。この記事では、私が今回参加して感じたことを中心に綴らせていただこうと思います。

所感

今回JANOGに参加して感じたことがいくつかあります。

1つ目は、参加者の距離が近い!ということです。ネットワーク関連の多種多様な立場の方が参加しているにも関わらず、活発に意見を交換したりする場面が多くあり、立場は違うけど一緒に盛り上げていこうという雰囲気が多くの場面から伝わってきました。ネットワーク業界ならではの空気感に早く馴染めるようになりたいと思います。

2つ目は、自動化の話が多かったということです。生成AIの発展や人材不足を背景に、今後ネットワーク業界全体でも自動化の動きが活発になりそうだなと感じました。

プログラム

JANOGでは多くのプログラムが開催されていました。アーカイブ配信を視聴可能なプログラムがあるのも嬉しいですね!

www.janog.gr.jp

その中でも私は自動化の話やネットワーク設計のプログラムを中心に参加してきました。自動化の話では、作業の手順書をパラメータと雛形の部分に分けてそれらを組み合わせて作成するものや、保守運用を生成AIを用いて行うものなど様々でした。

また、講演以外にも様々なイベントが開催されており、その中で私は若者ランチ企画に参加しました。

www.janog.gr.jp

企画内で新卒で自分と同じような境遇の方と話す機会があり、ベンダーごとにコマンド違くて覚えるの大変だよねーみたいな話で共感し合えたのがなんとなく嬉しかったのと同時に、もっと勉強しなくては、、、と思いました。

そのほか、NETCON企画にも参加しました。

www.janog.gr.jp

あまり手をつけられなかったのが残念ですが、今後の業務でも、実際に手を動かすことを大切にしていきたいと思います!

終わりに

今回参加させていただいて、ネットワーク業界は会社とか立場は違うけど一緒にやってこうという空気感のある業界であること、また業界全体のトレンドとして自動化の話が盛り上がっているということを肌で感じることができました。

現在は様々な分野で生成AIの活用が注目を集めていますが、ネットワーク業界も例外ではないと感じました。ネットワーク業界でAI技術を活用できるようになるためにも、まずはネットワークの知識、技術を身につけるために精進したいと思います。その上で、ネットワーク業界ならではの人の繋がりなどの良さを大切にしながら、今後のネットワーク業界を盛り上げられる人材になれるよう、頑張りたいと思います!