はじめに
本記事では、Pythonのデータサイエンス特化IDEであるSpyderで、AWSのEC2インスタンスにリモートアクセスする手順を説明します。
これにより、Spyderの素晴らしい操作性の下でAWSの豊富な計算リソースを使用することができます。
手順の全体的な流れとしては目次の通りです。
- AWSのEC2インスタンスを起動する
- ローカルPCのターミナルでEC2インスタンスに接続する
- Spyderと接続するためのPython仮想環境を作成する
- ローカルPCのSpyderでリモートアクセスする
ローカル環境は以下の通りです。
- Windows 11
- Spyder 6.1.6 (standalone)
Macでも手順に大差はありません。
1. AWSのEC2インスタンスを起動する
AWSコンソールにログインし、EC2のアプリを立ち上げた画面で「インスタンスを起動」を押します。
インスタンスの設定
続く画面ではインスタンスの性能を設定できます。
今回の構成は以下にします。
- インスタンスの名前: spyder_remote
- OS: Ubuntu
キーペアの作成
続いてキーペアの作成です。
「キーペア(ログイン)」とある箇所の「新しいキーペアを作成」を押すと下のような画面が表示されます。
今回は以下の構成にします。
- キーペア名: spyder_key
- キーペアのタイプ: RSA
- プライベートキーファイル形式: .pem
これで「キーペアを作成」を押下すると、自身のPCに「spyder_key.pem」というファイルがダウンロードされます。
このファイルは後で使用しますが、ひとまずダウンロードフォルダに置いたままにします。
ネットワークの設定
同じ画面を下にスクロールすると、ネットワークの設定ができます。
今回は、セキュリティグループを作成し、トラフィックを許可するIPアドレスは自分のIPアドレスに限定します。
ここまで設定したら、画面右側にある「インスタンスを起動」を押します。
そうすると下の画像のページに遷移するので、真ん中の「インスタンスに接続」を押します。
すると下の画像のページに遷移します。
一旦ブラウザ上での操作はここで終わりです。
このページの「SSHに関する情報」はアクセス手順の中で後ほど訪れるため、すぐに確認できるようにしておくとスムーズです。
SSHに関する情報
- ユーザー名: ubuntu
- パブリックDNS: ec2-192-0-2-1.ap-northeast-1.compute.amazonaws.com
2. ローカルPCのターミナルでEC2インスタンスに接続する
ターミナルのスクショは、セキュリティに関わる箇所を一部AIで加工しています。
そのため表記が不自然な箇所がありますが、ご了承ください。
コマンドプロンプトを開きます(Macだとターミナル)。
まず、先ほどダウンロードしたspyder_key.pemファイルをカレントディレクトリに移動させます。
次に、先ほどのブラウザの画面で「接続方法」の箇所にある、「インスタンスに、そのパブリックDNSを使用して接続する」のコマンドをコピペして実行します。
(Macだとこのとき、先にchmod 400のコマンドを実行します。)
コマンド実行でエラーが起きなければ、EC2インスタンスへの接続は成功です。
lsやpwdをすると、コマンドがローカルではなくAWSサーバー上で実行されていることが分かります。
move "Downaloads\spyder_key.pem" .
ssh -i "spyder_key.pem" ubuntu@ec2-192-0-2-1.ap-northeast-1.compute.amazonaws.com
3. Spyderと接続するためのPython仮想環境を作成する
ここからはEC2上でPythonの仮想環境を構築します。
pipのインストール
まずは以下のコマンドでpipをインストールします。
sudo apt update && sudo apt install python3-pip
インストール終了後は、python3 -m pip listなどでpipコマンドが使えるようになっていることが確認できます。
この時点でpip installコマンドを使おうとすると、下の画像のようにexternally-managed-environmentというエラーが出るので、venvをインストールして仮想環境を構築します。
仮想環境の作成
以下のコマンドでvenvをインストールします。
sudo apt install python3.14-venv
次に、spyder_envという名前の仮想環境を作成して、アクティベートします。
python3 -m venv spyder_env && source spyder_env/bin/activate
上の画像のように、ユーザー名(ubuntu)の左に(spyder_env)と表示されれば成功です。
Spyderと接続する準備
続いてこの環境にspyder-kernelsをインストールします。
このとき、ローカルのSpyderのバージョンに合わせたバージョンを指定してください。私の場合Spyder6.1.6なので、spyder-kernels==3.1を指定します。
pip install spyder-kernels==3.1
次に以下のコマンドを実行してリモートアクセスに必要なjsonファイルを作成します。
python -m spyder_kernels.console
下の画像のkernel-31426.jsonがファイル名になります。
この辺りのリモートアクセスの準備の手順は、Spyderの公式ドキュメントに記載されています。
次に、新しくコマンドプロンプトを立ち上げます。
ここからの一連の手順は、先に画像を貼って、順にコマンドを説明していきます。
まず、以下のコマンドを実行して、EC2上のjupyter runtimeディレクトリのパスを取得しています。
ここでubuntu@ec2...の箇所は、「SSHに関する情報」のユーザー名@パブリックDNSという構成になっているので、適宜変更してください。
ssh -i "spyder_key.pem" ubuntu@ec2-192-0-2-1.ap-northeast-1.compute.amazonaws.com "source spyder_env/bin/activate && jupyter --runtime-dir"
コマンドを実行した結果、以下のパスが出力されています。
/home/ubuntu/.local/share/jupyter/runtime
ここで、先ほどのkernel-31426.jsonファイルは、jupyter runtimeディレクトリ下に存在するので、以下のコマンドでローカルPCにこのファイルをコピーしています。
scp -i "spyder_key.pem" ubuntu@ec2-192-0-2-1.ap-northeast-1.compute.amazonaws.com:/home/ubuntu/.local/share/jupyter/runtime/kernel-31426.json .
実行後は、dir kernel-31426.jsonでファイルがローカルにコピーされていることを確認しています。
これでコマンドプロンプトを用いた操作は終了です。
4. ローカルPCのSpyderでリモートアクセスする
ローカルPCのSpyderを立ち上げ、「コンソール」から「既存のカーネルに接続」を選択します。
そうすると以下の画像のポップアップが表示されるので、「リモートカーネル(SSH経由)を設定する」と認証方法の「SSHキーファイル」のチェックボックスを選択します。
その後、以下の情報を入力してOKを押します。
- 接続情報ファイル: scpでコピーしたjsonファイルのパス
- ホスト名: パブリックDNS
- ポート: 22
- ユーザー名: ユーザー名
- SSHキーファイル: ローカルPC上の.pemファイルのパス
パブリックDNSとユーザー名は「SSHに関する情報」からコピペします。
そうするとコンソールペインに、EC2インスタンスに接続されたコンソールが立ち上がります。
これで完了です。
lsやpwdなどで実際に接続されていることを確認します。
後はpip installで必要なライブラリをインストールしたり、ローカルに保存されているPythonスクリプトを実行したり、自由にSpyderを使えます。
もちろん変数エクスプローラーも有効です。
Spyderのコンソールは、コマンドが上手く実行できないことがしばしばあります。
ライブラリのインストールなども、基本的にはターミナル経由で行った方がトラブルが少ないです。
不要になったEC2インスタンスは停止するのを忘れずに。
それではSpyderで快適なデータサイエンスライフを!


















