この記事は「弁護士ドットコム Advent Calendar 2021」の 4 日目の記事です。
これはなに
EC2インスタンスにSession Manager経由でJetBrains Gatewayを接続させるTipsです。
前提
- AWS CLIからSSMを利用してEC2インスタンスにログインできる
- JetBrains Gatewayがインストールされている
(補足)JetBrains Gatewayとは
JetBrains Fleetが発表されて話題になっていますが、裏でしれっと公開されていたツールです。リモート環境にJetBrains系IDEをHeadlessで立ち上げて、クライアントからはCode With Meで接続しているような状態を実現できます。別の見方では、VSCodeのRemote SSHを使った状況に近いかもしれません。
(詳細な説明はJetBrains Gatewayの公式ページを読んでもらえればと思います)
手順
.ssh/configにSSM用の設定を記述する
JetBrains Gatewayが.ssh/configを解釈できるため、.ssh/configに設定を記述します。
(逆にGateway側の設定ウィザードではProxyCommandなどの細かい設定は入れられません。)
サンプルとして以下の記述を想定して進めます。
Host hoge
HostName xxxxxxxxxxxxxx
User foo
IdentityFile ~/.ssh/xxxxxxxxx
ProxyCommand sh -c "aws --profile xxxxxx --region xxxxxxxx ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
ProxyCommandにはAWS CLIのコマンドを記述します。sshやAWS CLI向けのオプションは環境依存するので細かい値は違うと思いますので、いい感じに調整してください。ssh hoge
などで対象のEC2インスタンスにログインできる状態であれば大丈夫なはずです。
JetBrains Gatewayを起動する
インストールした方法に応じて、起動してください。起動すると以下のような画面になると思います。
起動できたらConnect via SSH
をクリックしてください。
SSH設定画面を開く
.ssh/configに記述した項目を設定に反映する
.ssh/config
に記述した内容の一部を入力します。
項目 | 値 | 補足 |
---|---|---|
Host: | hoge | .ssh/configの値から |
User name: | foo | .ssh/configの値から |
Port: | 22 | デフォルト値がないため明示的に入力 |
Authentication type: | OpenSSH config and authentication agent | Key pair はうまくいきません1
|
Test Connectionを押して問題なければOKをクリックします。
ここからはSSMを利用しない通常のSSHと同様のフローになります。
ウィザードに従ってポチポチするだけです。
作成した設定を選択してCheck Connection and Continue
をクリックします。
利用したいIDEと、IDE起動時に開きたいフォルダのパスを選択します。
選択できたらDownload and Start IDE
をクリックします。
クリックするとサーバー側にIDE関連の諸々がインストールされ、問題なければ、JetBrains Clientという名前のIDEがよろしく立ち上がり、接続完了です。
最後に
JetBrains GatewayをSSM経由で利用する方法の紹介でした。
VSCodeでSSM経由でのRemoteSSHはできましたが、Gatewayでも同様に接続できるので、これからはJetBrains系IDEでも同様の開発体験が得られるかもしれません。
Fleetも控えているので今後のJetBrainsの動きが楽しみです。
明日は @datsukan さんです!
名前的に動作しそうですが、2021/12/02時点では動かないようです。
似たような状況でIssueが立っており、type:Bug
となっているようなので、そのうち修正されるかもしれません。