EC2 Instance Connectでコスト削減!プライベートサブネットのEC2に接続してみたよ

だいち

2025.03.09

31

AWSではEC2インスタンスに接続する方法として、

  • SSH(公開鍵認証)
  • SSM Session Manager など、いくつかの手段があります。

今回紹介する EC2 Instance Connect(EIC) は、特にAmazon LinuxやUbuntuの環境で利用できる接続方法で、SSHの鍵管理を不要にしつつ、EC2へのアクセスを簡単にする手段の一つです。

コストを抑えつつ、鍵の管理や漏洩リスクを減らせるので「めっちゃいいじゃん!」と思い記事にしてみました!

前提

本記事では、以下の前提で解説します。

  • プライベートサブネット内にEC2インスタンスが配置されている
  • AWS Identity and Access Management (IAM) の適切な設定がされている


EC2 Instance Connectを利用するメリット

1. コストを抑えられる

EC2 Instance Connectを使用すれば、踏み台サーバーや有料のVPCエンドポイントを作成する必要がありません。

よってコストを削減することができます(個人的にこれが一番嬉しい)


プライベートサブネットにあるEC2にEICを利用するには、EC2 Instance Connect Endpoint を作成する必要がありますが、インターフェース型のVPCエンドポイントとは異なり、料金は発生しません。



2. SSH鍵の管理が不要

従来のSSH接続では、秘密鍵の管理が必要ですが、EICでは一時的なSSHキーを使用するため、鍵の管理や漏洩リスクを減らすことができます。

3. 簡単なIAM権限管理

IAMポリシーを利用して、どのユーザーがどのEC2にアクセスできるかを制御できます。これにより、必要な権限を持つユーザーだけがEC2に接続できるようになります。

比較表

踏み台サーバーによるSSH接続、SSM Session Manager、EC2 Instance Connectの比較をするとこんな感じです。

EC2 Instance Connectの痒いところ

先に言っておくと、使いづらいところもあります。

  • 一つのVPCに対して1つのEICエンドポイントしか設定できない
    • 複数サブネットにEC2がある場合は不便です。。
  • DBeaverなどのデータベース管理ツールでSSHトンネルでのDBインスタンスへの接続はできない
    • 上記を実現するには踏み台サーバー一択かも?

設定手順

1. EC2 Instance Connect エンドポイント用のセキュリティグループを作成

プライベートサブネットにあるEC2にEICを利用するには、EC2 Instance Connect Endpoint (以下、EICエンドポイント) を作成する必要があります。

ただその前に、EICエンドポイントにアタッチするセキュリティグループを作成します。

  • インバウンドルール
    • 特に設定する必要なし。
  • アウトバウンドルール
    • EC2インスタンスのセキュリティグループを許可します。

上記ルールを設定すればOK。


2. EICエンドポイントを作成

次に、先ほど作成したセキュリティグループを使ってEICエンドポイントを作成します。

  • VPCマネジメントコンソールで「エンドポイント」を選択し、「エンドポイントを作成」をクリック
  • タイプ:「EC2 インスタンス接続エンドポイント」を選択
  • ネットワーク設定
    • EC2インスタンスが配置されているVPCを選択します。
  • セキュリティグループ
    • 1で作成したセキュリティグループをアタッチします。
  • サブネット
    • EC2インスタンスが配置されているサブネットを選択します。
  • ※見落としがち!クライアントIPの保持
    • SSH接続先のEC2にIP制限を設けたい場合は「クライアントIPの保持」にチェックを入れてください!有効化するとEICエンドポイントは、クライアントIPのアドレスを保持する様になるため、インバウンドルールにて、特定のクライアントIPを許可する設定が可能になります。

上記設定で「エンドポイントを作成」を押せばEICエンドポイントの作成が完了します。

3. セキュリティグループの設定

EC2側のセキュリティグループ(インバウンドルール)を設定します。特定のIPアドレスのみSSH(ポート22)を許可するように設定します。

接続してみた

マネコンから

  • 該当のインスタンスを選択
  • 「接続」をクリック
  • EC2 Instance Connectのタブから「EC2 Instance Connect エンドポイントを使用して接続する」を選択して接続。
  • じゃーん

ローカルからCLIで接続

インスタンスIDがわかっていればローカル端末から接続することも可能です。

$ aws ec2-instance-connect ssh --instance-id i-0e5e0f3e85568e95e --connection-type eice


じゃーん

終わりに

AWSの運用コストに関してシビアなプロジェクトであれば、少しでも運用コストは下げたいところ。

今回のEC2 Instance Connectが一つの選択肢になれば幸いです。

この記事をシェアする