前回で作成したスポットインスタンスにローカルのVSCodeからRemote-SSHで接続していきたいと思います。今回実施するのは以下の内容です。
- 各種ツールのインストール
- AWSCLIの設定
- ssh_configの設定
- VSCodeで接続
各種ツールのインストール
接続に使用する各ツールをインストールします。接続に使用するOSに合わせてそれぞれインストールしてください。
AWSCLIの設定
AWSCLIを呼び出すためにIAMユーザを作成してアクセスキーを作成およびプロファイルの作成を行います。アクセスキーは漏洩すると不正利用される可能性があるため以下の手順などを参考になるべく安全に利用しましょう。
ssh_configの設定
VSCode Remote-SSHで接続に使うsshの設定ファイルを作成・編集していきます。OSによりますが、ホームディレクトリ/.sshなどに置かれているconfigファイルに以下のようなエントリを追加します。
注意事項は ~/.ssh/configのHostNameに記載するインスタンスIDをスポットインスタンスが起動され直すたびに書き換える必要がある という点です。
Host i-1x2x3ccccc
ProxyCommand sh -c "aws --profile hogefuga ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
User $user
HostName i-1x2x3ccccc #スポットインスタンスのインスタンスIDに書き換える
IdentityFile ~/.ssh/hoge.pem #前々回に作成した起動テンプレートで指定したキーペア
VSCodeで接続
VSCodeに以下の拡張機能をインストールし、前述の手順で作成したssh設定を使いスポットインスタンスへ接続します。
https://code.visualstudio.com/docs/remote/ssh
利用時の注意点
以上でスポットインスタンスに対してVSCode Remote-SSHを使った開発環境を構築することができましたが注意点として以下があります。
- スポットインスタンスで作成したデータは、スポットインスタンス中断時にデータ保存用EBSのファイルシステム以外は全て消えてしまう。
- ssh_configのHostNameはスポットインスタンス中断のたびに新しいインスタンスIDへ書き換えないといけない
2番目はどうしようもないですが、1番目はツール等を事前にAMIにインストールしておいて、それ以外のデータをデータ保存用EBSに保存しておくなどで対処することが可能だと思います。
まだまだ改善できる点はあると思うのでなにか思いついたら追記していきたいと思います。