💭

PyCharmでAmazon EC2上のPythonコードをデバッグする

2024/06/25に公開

今まで、Amazon EC2(Amazon Linux)上に格納されているPythonのアプリケーションコードを、Visual Studio Codeを使用して修正していました。
Visual Studio Codeでも問題ないのですが、他のエディタやIDEも使ってみたくなったので、今回はPyCharmを使ってEC2上のPythonコードをデバッグできるか試してみることにしました。

https://www.jetbrains.com/ja-jp/pycharm/

※ 以下2024年6月の情報で、macで操作しています。

PyCharmの価格

2024年6月時点では、学生・教員・コミュニティは無料、
個人利用の場合、PyCharm Professionalは年間(1年目)税込 14,157 JPYのようでした。初回30日間は体験版を無料で使えるようです。
詳細は以下公式サイトをご覧ください。

https://www.jetbrains.com/ja-jp/pycharm/buy/?section=personal&billing=yearly
https://www.jetbrains.com/ja-jp/pycharm/download/

Amazon EC2へSSH接続する

では、早速PyCharmをmacへインストールします。
インストール後、PyCharmを開くと以下の画面が表示されます。
Remote Development機能はBeta版でした。

Welcome to PyCharm

左側のRemote Developmentの下のSSHを選択し、New Projectを選択します。

Recent SSH Pojects

Connection欄の右側の歯車マークを選択します。
Connect to SSH

開いたSSH Configurations画面の左側のを選択すると以下の画面が表示されます。
SSH Configurations

Hostに、対象のEC2インスタンスのパブリック DNSをコピーして貼り付けます。

AWSコンソール - EC2 - インスタンス
AWSコンソール - EC2 - インスタンス - インスタンスに接続

Usernameec2-userAuthentication typeKey pairを選択して、SSHのキーペアの秘密鍵の格納場所を選択します。

SSH Configurations

Test Connectionボタンを押して接続テストしてみます。

Successfully connected

成功しました。

SSH Configurations画面で、Authentication typeOpenSSH config and authentication agentを選択する場合、
~/.ssh/configの設定ファイルに以下を記載し、
SSH Configurations画面のHostに、対象のEC2インスタンスのパブリック DNSの値を設定すると、接続できました。(UsernamePortは、設定ファイルに記載済みのため、自動で設定されました。)

Host <パブリック DNS>
  User ec2-user
  Port 22
  IdentityFile <秘密鍵のパス>

SSH Configurations

OKボタンを押して、次の画面のConnection欄を上記で設定したものに変更し、Check Connection and Continueボタンを押して、EC2インスタンスへ接続してみます。

Welcome to PyCharm

EC2のインスタンスタイプがt2.microだったので、以下の警告メッセージが表示されました。

The Host Doesn't Meet the Minimal Requirements

以下の公式サイトにリモート開発のシステム要件が記載されてました。

https://pleiades.io/help/idea/prerequisites.html

最小要件は、

  • x86_64 または arm64 アーキテクチャの 4 つの vCPU。また、コア数を増やすよりも、クロック周波数を高くすることをお勧めします。
  • 8GB の RAM。
  • IDE がすでにインストールされている場合でも、少なくとも 500MB の空きディスク容量。

とのことなので、(上記以外にも要件があるため、詳細は公式サイトをご覧ください。)
EC2インスタンスタイプをt2.xlargeに変更して、改めて接続してみます。

※ 私の環境はElastic IP アドレスを割り当てていないので、EC2インスタンスを停止するとパブリック DNSが変わります。SSH Configurations画面でAuthentication typeKey pairの場合、Hostを変更後のパブリック DNSに変更して再接続しています。

Successfull connected

接続に成功しました。
Project directoryを選択して、Start IDE and Connectボタンを押します。

EC2へssh

無事、Amazon EC2へSSH接続できました。

PyCharmでAmazon EC2へSSH接続すると、初回はmain.pyのsample Python scriptが自動で生成されるようです。

デバッグしてみる

任意の場所にブレイクポイントを付与してデバッグ実行してみます。

デバッグ実行1
デバッグ実行2

デバッグ実行することができました。

まとめ

今回は、PyCharmでAmazon EC2へSSH接続して、EC2上のPythonコードをデバッグできるか試してみました。
まだBeta版とのことですが、リモート開発のシステム要件を満たしていれば、問題なくEC2インスタンスへSSH接続し、EC2上のPythonコードをデバッグすることができました。
PyCharmで、EC2上のDockerコンテナ内のPythonコードをデバッグできるか確認できていないので、引き続き試していこうと思います。

Discussion