LoginSignup
1
0

EC2への接続方法の整理と比較(「EC2 Instance Connect」or「Session Manager」

Last updated at Posted at 2024-03-23

従来のSSH接続(ローカル端末からEC2インスタンスにキーペアを使ってSSH接続)はあまり推奨されてなさそうなので、AWSが推奨している接続方法でEC2に接続してみました。

AWSは「EC2 Instance Connect」や「Session Manager」での接続を推奨しているようですが、どちらも、一筋縄にはいかなかったので、次からはスムーズに設定するために必要な手順をメモしておきたいと思います。

「EC2 Instance Connect」で接続する場合

「EC2 Instance Connect」の画面イメージ

スクリーンショット 2024-03-23 13.51.17.png
スクリーンショット 2024-03-23 14.31.54.png

必要な設定

  • EC2にパブリックIPが振られている必要がある(EC2 Instance Connectはパブリック通信を用いる模様)

  • EC2にアタッチするセキュリティグループにて、以下の設定を行う必要がある
     タイプ:SSH
     ソース:3.112.23.0/29(※1)
    スクリーンショット 2024-03-23 14.11.27のコピー.png

※1 AWSの サービスに発行された推奨される IP ブロック
2024/3/22時点では、EC2を東京リージョンに設置している場合、以下の情報が「EC2 Instance Connect」の接続元として可能性があるとのことだった。(時期によって変わる可能性があるので、その度に要チェック)

    {
      "ip_prefix": "3.112.23.0/29",
      "region": "ap-northeast-1",
      "service": "EC2_INSTANCE_CONNECT",
      "network_border_group": "ap-northeast-1"
    },

必要な設定はこれだけだったと思います。特に追加費用等も不要ですね。(パブリックIP代くらいでしょうか)

参考にさせてもらった記事

「Session Manager」で接続する場合

「EC2 Instance Connect」の画面イメージ

スクリーンショット 2024-03-23 13.54.02.png
スクリーンショット 2024-03-23 14.30.48.png

必要な設定

  • 以下のVPCエンドポイントを作成する必要がある
com.amazonaws.region.ssm
com.amazonaws.region.ec2messages
com.amazonaws.region.ssmmessages

スクリーンショット 2024-03-23 14.18.29.png

  • 上記のVPCエンドポイントそれぞれにアタッチされたセキュリティグループにて、以下の設定を行う必要がある
     タイプ:HTTPS
     ソース:VPC IP(※2)
    スクリーンショット 2024-03-23 14.11.27.png

※2 デフォルト設定の場合、172.31.0.0/16になると思われる。
スクリーンショット 2024-03-23 14.05.11.png

ちなみに、上記のいずれかの設定ができていない状態で、Session Managerでの接続画面を開くと、以下のようなエラーが出るようです。
スクリーンショット 2024-03-23 13.17.50.png

  • マネージドポリシー「AmazonSSMManagedInstanceCore」をアタッチしたIAMロールをEC2インスタンスにアタッチする必要がある
    スクリーンショット 2024-03-23 14.08.10.png

3つのVPCエンドポイントを作成すると1日あたり2$くらい費用がかかるようです。Session Managerで接続したいEC2が1台であろうが、100台であろうが同じVPCエンドポイントの費用がかかるので、小規模の環境の場合は割高になりますね。

スクリーンショット 2024-03-23 14.02.16.png

参考にさせてもらった記事

まとめ

小規模な環境では、「EC2 Instance Connect」を使用するのが良いと思いました。(VPCエンドポイントの設定やVPCエンドポイントの費用を支払う必要がないという理由で)

中規模以上の場合は、「Session Manager」を使用するのが良いと思いました。(Systems Managerのフリートマネージャーで管理する等、管理面が強そう、「EC2 Instance Connect」での接続のために3.112.23.0/29などからのSSH接続を許可するのがスマートではなさそうという理由で)

追記

Session Managerを使用するための「VPCエンドポイント」を削除した後も、Session Managerを用いてEC2インスタンスに接続できてしまいました。EC2インスタンスを再起動すると、接続できなくなりましたが、Systems Managerのフリートマネージャーからは依然として接続できてしまいました。

その後、フリートマネージャーから接続できていたEC2インスタンスを終了させ(※3)、新しくEC2インスタンスを起動する(※4)と、フリートマネージャーに※3のインスタンスが表示されなくなり、※4のインスタンスも表示されなくなりました。
スクリーンショット 2024-03-23 15.23.56.png
スクリーンショット 2024-03-23 15.21.15.png

この動きから、一度フリートマネージャーに登録されたEC2インスタンスは、Session Managerの接続条件が揃っていなくても、該当のEC2インスタンスを終了するまでの間は、フリートマネージャー経由で接続が可能となってしまうと理解しました。

特に問題は発生しなさそうですが、AWS側の仕組みがどうなっているか気になります。

と、思いきやしばらくすると(5分ほど?)、フリートマネージャーに新しいインスタンスが表示されており、接続もできてしまいました。
スクリーンショット 2024-03-23 15.37.00.png
スクリーンショット 2024-03-23 15.37.45.png

VPCエンドポイントは削除しているのに、接続できる理由が謎です。EC2インスタンスの「接続」画面のセッションマネージャー画面からも接続できるようになっていました。
スクリーンショット 2024-03-23 15.45.01.png

ということは、VPCエンドポイントの設定は不要と理解できます。(VPCエンドポイントを設定していない時は、フリートマネージャー経由でもEC2インスタンスの「接続」画面のセッションマネージャー画面からも接続できなかったのですが)

VPCエンドポイントの必要性が不明確になってしまいました。

歯切れの悪い結果となっていますが、VPCエンドポイントなしでSession Mangerが使用できるのは嬉しいので、様子を見ながら使用して、何か分かったら記事に残そうと思います。

1
0
1

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
  3. You can use dark theme
What you can do with signing up
1
0