i-Vinci TechBlog
株式会社i-Vinciの技術ブログ

EC2インスタンスにSystems Manager Session Managerを使用して接続してみた!

こんにちは!入社3年目の筋トレ大好きi-Vinci Rです。
前回のブログの執筆が2年前だったことを知って、時の流れの速さを痛感しております。
最近インフラ環境でAWSを使用しているプロジェクトに参画することが増えてきたので、AWS認定資格を取ろうと日々学習をしております。
学習の中でよく目にするのが、題名にもなっているEC2インスタンスにSystems Manager Session Manager(以降、セッションマネージャー)でログインすること。
あまりにもよく目にして、実際にどのように接続するか気になって夜も眠れなくなってきたので今回実際にやってみたいと思います!

Systems Manager Session Managerとは?

Session Manager はフルマネージド AWS Systems Manager 機能です。Session Manager を使用すると、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) を管理できます。インタラクティブ・ワンクリック ブラウザ ベースのシェル、または AWS Command Line Interface (AWS CLI) を使用できます。Session Manager は安全かつ監査可能なノード管理を実現し、インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーの管理したりする必要はありません。
(公式ドキュメントより引用)

上記の記載にある通りセキュリティ面で安全なアクセスができ、またアクセスキー等の管理も不要になるため運用面でも楽になります。
では実際にEC2インスタンスからセッションマネージャーを利用して、コンソールからアクセスする手順を紹介します!

作成手順

  1. 前提として

    • 今回はEC2インスタンスにセッションマネージャーを利用して接続する所をメインとしたいので、下記の手順は省略させていただきます。
      • VPCの作成
      • サブネットの設定(今回はプライベートサブネットへ接続を行います)
      • EC2の作成(EC2インスタンスにはSSMエージェント(公式ドキュメント)がインストールがされている必要があります)
  2. 手順一覧

    • セッションマネージャーからEC2インスタンスに接続するためのIAMロールの作成
    • IAMロールのアタッチ
    • VPCエンドポイント用のセキュリティーグループを作成
    • VPCエンドポイントの作成
    • 接続確認

やってみる!

  1. セッションマネージャーからEC2インスタンスに接続するためのIAMロールの作成

    • まずはIAMロールの作成を行います。

      1. AWSのマネージコンソールにログインして、"IAM" → "ロール" → "ロールを作成"の順に開いて行きます。
        1-1

      2. "AWSのサービス"と"EC2"を選択し、"次へ"をクリックします。
        ポリシー選択画面の検索窓に"AmazonSSMManagedInstanceCore"と入力しチェックを入れ"次へ"をクリックします。
        1-2
        1-3

      3. ロール名を任意の名前で入力し、"ロールの作成"をクリックし、これでロールの完成です。
        1-4

  2. IAMロールのアタッチ

    • 次にEC2に作成したIAMロールをアタッチします。

      1. "EC2"サービスを開き、"インスタンス"をクリックして該当のインスタンスをにチェックを入れます。
        その後アクションタグを開き、"セキュリティ" → "IAMロールを変更"をクリックします。
        2-1

      2. 先ほど作ったIAMロールを選択し、"IAMロールの更新"をクリックし、これでIAMロールをアタッチできました。
        2-2

  3. VPCエンドポイントの用のセキュリティーグループを作成

    • 次にVPCエンドポイントの用のセキュリティーグループを作成します。

      1. "VPC"サービスを開き、"セキュリティグループ"をクリックして"セキュリティグループの作成"をクリックします。
        3-1

      2. セキュリティグループ名に任意の名前を入力し、EC2が配置されているVPCを選択します。
        さらに、インバウンドルールに"HTTPS"のポートを追加して"セキュリティグループを作成"をクリックします。これでセキュリティーグループの完成です。
        3-2

  4. VPCエンドポイントの作成

    • 次にEC2とセッションマネージャーが通信できるように、下記の3つのエンドポイントを作成していきます。

      • com.amazonaws.ap-northeast-1.ssm
      • com.amazonaws.ap-northeast-1.ec2messages
      • com.amazonaws.ap-northeast-1.ssmmessages
      1. VPCダッシュボードから、"エンドポイント"をクリックして"エンドポイントの作成"をクリックします。
        4-1

      2. 名前タグに任意の名前を入力、サービスの検索枠に"com.amazonaws.ap-northeast-1.ssm"と入力して該当のサービスを選択します。
        4-2

      3. 該当VPCの選択、接続するEC2が配置されているサブネットを選択し、先ほど手順No.3で作成したセキュリティーグループを選択します。最後に"エンドポイントの作成"をクリックします。
        4-3

      4. "com.amazonaws.ap-northeast-1.ec2messages"と"com.amazonaws.ap-northeast-1.ssmmessages"も同じ手順で作成し、これでエンドポイントの完成です。

  5. 接続確認

    • 最後に接続できるか確認をしていきます。

      1. EC2ダッシュボードから、該当のインスタンスを選択してアクションタグを開き"接続"をクリックします。
        5-1

      2. "セッションマネージャー"を選択し、"接続"をクリックします。
        5-2

      3. コンソールの画面が表示され、EC2に接続することができました!
        5-3

まとめ

今回はプライベートサブネットに配置されているEC2インスタンスに、セッションマネージャーから接続する方法を紹介しました。
AWS上で気になっていて試したい事が山ほどあるので、今後も寝不足の日々が続きそうです...(笑)
今後もAWS関連の記事を出して行きたいと思っておりますので、引き続きよろしくお願いいたします!