メインコンテンツまでスキップ

5分でEC2 + Remote SSH開発環境を構築する

· 約5分
Takehiro Suzuki

開発環境の構築は慣れている人にとっては手間ではないものの、開発に不慣れな人にとっては躓きがちなポイントの一つとなります。このような場合選択肢の一つとしてCloud9 を使った方法が挙げられますが、チームの方針や好みなどでVisual Studio Code (以降 vscode と呼称) を利用したいケースもあるでしょう。ここではRemote SSH 用に、プロトタイピング用途でよく利用されるソフトウェアをプリインストールした EC2 インスタンスを手軽に構築する方法について紹介します。

背景

AWS Cloud9はプロトタイピング用途で頻繁に登場するソフトウェア (AWS CLI v2, Python, Node.js, Docker 等) がプリインストール済みのため、プロトタイプ開発用途に向いていると言えます。一方で何らかの事情により vscode を利用したいケースもあるでしょう。たとえばチーム開発でリンター・フォーマッターを導入しており、チーム共通の vscode プラグインや設定を使いたい場合などのケースが相当します。この場合ローカルに開発環境を作成する選択肢が考えられますが、主に Docker の環境構築に困難を伴うことがあるでしょう。例えば予算など組織的な事情によりDocker Desktopが利用できない場合、Windows の場合は WSL2、Mac OS の場合はlimafinchがその代替となり得ますが、開発に不慣れな場合、自力でトラブルシューティングすることが難しい場合があります。このような場合、EC2 (Amazon Linux 2) 上に環境構築し、Remote SSH で開発する選択肢が有効と考えられます。なお Docker は ECS/EKS 以外にも、CDK 開発で頻出のコンストラクタ (aws-lambda-python-alpha moduleなど) においても利用されるため、導入しておくと便利です。

構築手順

  1. AWS アカウントを用意します
  2. CloudShellを開きます
  3. CloudShell のプロンプトで下記コマンドを実行します。なおXX.XX.XX.XXは接続元の IP アドレスで置換してください
git clone https://github.com/aws-samples/ec2-setup-for-prototyping
cd ec2-setup-for-prototyping
./bin.sh XX.XX.XX.XX/32 ProtoEnvStack
  1. CloudFormation のスタック作成が完了するまで 5 分ほど待機します。完了後、下記の内容が出力されるため適当なエディタなどに控えておきます
Copy ssh key from here: ===============================
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
End of ssh key ===============================

HostPublicIP: YY.YY.YY.YY
  1. prototype.pemなどの名前で ssh key ファイルを作成します。作成後、控えた RSA PRIVATE KEY の内容を貼り付けます

  2. 作成したファイルのパーミッションを変更します

chmod 400 prototype.pem
  1. ssh コマンドでログインできることを確認します。なおYY.YY.YY.YYは 4.で控えたHostPublicIPです
ssh -i prototype.pem ec2-user@YY.YY.YY.YY
  1. (optional) インストールされている各ソフトウェアのバージョンを下記コマンドで確認します。
docker -v
python3 -V
node -v
  1. Remote Development using SSHの手順に従って、vscode をセットアップしたら完成です。

実装の詳細はGitHubを参照ください。


本記事では小規模のプロトタイプ用途を想定し EC2 インスタンスを SSH 接続先として構築しましたが、CodeCatalyst for VS Codeをお使いいただくことでも同等のことが実現できます。より大規模でマネージドなプロジェクトを取り扱う場合は CodeCatalyst も検討してみてください。