kt.log

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 を利用することを想定しています。

前提

免責

  • 本手順は Azure Portal からの操作によるものです。

手順

Bastion を使って仮想マシンにブラウザから RDP 接続する

まず、コマンドプロンプトで IP アドレスが仮想ネットワークのものであることを確認します。

仮想マシン上でブラウザを開き、Synapse Studio にアクセスする

Azure Portal から Synapse ワークスペースを開きます。

Synapse Studio を立ち上げます。

パブリック側からアクセスした場合には以下のようなエラーが表示されますが、

1
2
3
4
5
6
7
Failed to load
Failed to load one or more resources due to forbidden issue, error code 403.
* Pipeline
* Dataset
* Linked service
and 9 more
Please refresh or troubleshoot the connectivity issue.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Failed to load one or more resources due to forbidden issue, error code 403.
* Pipeline
* Dataset
* Linked service
* Trigger
* Data flow
* SQL script
* Spark job definition
* Credential
* Synapse KQL scripts
* Lake databases
* Apache Spark configuration
* Managed Private Connections
Please refresh or troubleshoot the connectivity issue.

仮想ネットワーク側からアクセスした場合には表示されません。

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サーバーがオンプレ側にある場合や、インターネットに抜けるためのプロキシがあって、証明書によるクライアント認証がかかっている場合など、追加の検討が必要なケースはありえます。
こういった構成での応用についても、機会があれば執筆したいと思います。