LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

JetBrains GatewayをSSM経由でEC2インスタンスに接続して、IDE(IntelliJ IDEA,PhpStorm, Go Land...)を使う

この記事は「弁護士ドットコム 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などの細かい設定は入れられません。)

サンプルとして以下の記述を想定して進めます。

.ssh/config
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をクリックしてください。
スクリーンショット 2021-12-01 22.18.41.png

SSH設定画面を開く

スクリーンショット 2021-12-01 22.21.49.png
スクリーンショット 2021-12-01 22.22.38.png

.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をクリックします。
スクリーンショット 2021-12-01 22.48.01.png


ここからはSSMを利用しない通常のSSHと同様のフローになります。
ウィザードに従ってポチポチするだけです。

作成した設定を選択してCheck Connection and Continueをクリックします。
スクリーンショット 2021-12-01 22.49.33.png


利用したいIDEと、IDE起動時に開きたいフォルダのパスを選択します。
選択できたらDownload and Start IDEをクリックします。

クリックするとサーバー側にIDE関連の諸々がインストールされ、問題なければ、JetBrains Clientという名前のIDEがよろしく立ち上がり、接続完了です。
スクリーンショット 2021-12-01 22.57.23 2.png

最後に

JetBrains GatewayをSSM経由で利用する方法の紹介でした。

VSCodeでSSM経由でのRemoteSSHはできましたが、Gatewayでも同様に接続できるので、これからはJetBrains系IDEでも同様の開発体験が得られるかもしれません。

Fleetも控えているので今後のJetBrainsの動きが楽しみです。

明日は @datsukan さんです!


  1. 名前的に動作しそうですが、2021/12/02時点では動かないようです。
    似たような状況でIssueが立っており、type:Bugとなっているようなので、そのうち修正されるかもしれません。 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2