Run a Notebook with Synapse Spark Pool within the Virtual Network via Synapse Studio using Windows Virtual Machine and Bastion
仮想ネットワークのみと通信が可能な Synapse Apache Spark プールでノートブックを実行する (Windows 仮想マシンと Bastion を利用)
本記事では、パブリックネットワークアクセスを無効にして仮想ネットワークとプライベートエンドポイントで接続されている Synapse ワークスペースのノートブックを実行する方法を示します。Synapse Studio を操作するクライアント端末の配置にはいくつかパターンがありますが、本記事では仮想ネットワーク内にデプロイした仮想マシンに Bastion を使ってリモートデスクトップをし、そこから Synapse Studio を利用することを想定しています。
前提
- Microsoft Azure に利用可能なサブスクリプションを持っており、かつ、所有者のロールが割り当てられている
- リソースグループが既に作成されている
- 3つ前の記事 (Construct Azure Synapse Analytics without Public Network Access) に基づき Azure Syanpse Analytics が パブリックネットワークアクセス無効 で構築されている
- 3つ前の記事に基づき 仮想ネットワーク が構築されている
- 2つ前の記事 (Attach Virtual Network on Azure Synapse Analytics using Private Endpoint and Private Link Hubs) に基づき Azure Synapse Analytics が プライベートエンドポイントおよびプライベートリンクハブ経由で仮想ネットワークに接続されている
- 1つ前の記事 (Construct a Virtual Machine with Azure Bastion) に基づき、Synapse ワークスペースがプライベートエンドポイント経由で接続している仮想ネットワーク上に、仮想マシンと Bastion が構築されている
免責
- 本手順は Azure Portal からの操作によるものです。
手順
Bastion を使って仮想マシンにブラウザから RDP 接続する
まず、コマンドプロンプトで IP アドレスが仮想ネットワークのものであることを確認します。

仮想マシン上でブラウザを開き、Synapse Studio にアクセスする
Azure Portal から Synapse ワークスペースを開きます。

Synapse Studio を立ち上げます。
パブリック側からアクセスした場合には以下のようなエラーが表示されますが、
1 | Failed to load |
1 | Failed to load one or more resources due to forbidden issue, error code 403. |
仮想ネットワーク側からアクセスした場合には表示されません。

Apache Spark プールを用意する
Synapse Studio の [Manage ブレード] > [Analytics pools] > [Apache Spark pools] から、[+新規] をクリックして、Apache Spark プールを作成します。

なお、この操作はパブリック側からのアクセスでも実行可能です。
ノートブックを作成して実行する
Synapse Studio の [Develop ブレード] > [+] > [ノートブック] から、ノートブックを新規作成します。


Apache Spark プールをアタッチして、コードを記述し、実行します。

問題無く実行できました。

インターネットへのアクセスをテストするために、pip コマンドを実行します。結果は成功です。

また、任意のURLに対するインターネットアクセスもテストしてみましたが、こちらも成功しました。

まとめ
パブリックネットワークアクセスを無効にして仮想ネットワークとプライベートエンドポイントで接続されている Synapse ワークスペースのノートブックを実行する方法を示しました。
仮想マシンと Bastion を使うことで、クライアント端末をとても簡単に用意することができました。
本環境では Apache Spark プールからインターネット側に対する通信はできていますが、ExpressRoute 経由でオンプレミスのクライアント端末から接続する構成で、DNSサーバーがオンプレ側にある場合や、インターネットに抜けるためのプロキシがあって、証明書によるクライアント認証がかかっている場合など、追加の検討が必要なケースはありえます。
こういった構成での応用についても、機会があれば執筆したいと思います。