プライベートサブネットのEC2インスタンスにログインできるようにする。

はじめに

プライベートサブネットに存在するEC2に接続するため VPCエンドポイント経由でSystems ManagerのSession Managerでログインしてみました。

イメージ図

f:id:lovebeerbear:20200723134533p:plain

前提条件

今回はEC2は、初めからSSMエージェントがインストールされている Amazon Linux 2 を使用します。

手順

EC2を作成する。

プライベートサブネットにAmazon Linux2のインスタンスを作成します。

このときユーザーデータには SSMエージェントの起動および自動起動設定のコマンドを書いておきます。

#!/bin/bash
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

EC2用のIAMロールを作成する。

ポリシー[AmazonEC2RoleforSSM]を付与したロールを作成します。

f:id:lovebeerbear:20200723133645p:plain

EC2にIAMロールを追加する。

先ほど作成したロールをEC2に付与します。

f:id:lovebeerbear:20200723133714p:plain

VPCエンドポイントに付与するセキュリティグループを作成する。

VPCエンドポイントに付与するセキュリティーグループを作成しておきます。

このときインバンドとしてEC2からのHTTPS通信を許可しておきます。

f:id:lovebeerbear:20200723133742p:plain

サービス[com.amazonaws.ap-northeast-1.ssm]用のVPCエンドポイントを作成する。

VPCのコンソールを開いて左のペインにある[エンドポイント]をクリックします。

エンドポイントの作成画面になるので以下を設定します。

  • [サービス名] : com.amazonaws.ap-northeast-1.ssm
  • [VPC] : EC2の存在する VPC ID
  • [サブネット] : EC2の存在する サブネットID
  • [プライベート DNS 名を有効にする] : チェックする。
  • [セキュリティグループ] : 上で作成したセキュリティーグループを選択

VPCエンポイントを追加で二つ作成する。

以下の2つのサービスのそれぞれのエンドポイントを先ほどと同じ手順で作成します。

  • com.amazonaws.ap-northeast-1.ec2messages
  • com.amazonaws.ap-northeast-1.ssmmessages

f:id:lovebeerbear:20200723133758p:plain
作成完了後のイメージ

結果確認

Systems Managerのマネージドインスタンスに、作成したEC2が存在すれば設定成功です。

※表示されていない場合はEC2の再起動を実施してみてください。

f:id:lovebeerbear:20200723133821p:plain

Session Managerでログインしてみる。

EC2インスタンスを選んでアクションから[Start Session]をクリックすれば、EC2にアクセスできます。

f:id:lovebeerbear:20200723133835p:plain

f:id:lovebeerbear:20200723133851p:plain

参考サイト

Systems Manager を使用してインターネットアクセスなしでプライベート EC2 インスタンスを管理できるように、VPC エンドポイントを作成するにはどうすればよいですか? https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-systems-manager-vpc-endpoints/

起動時に Amazon EC2 Linux インスタンスAWS Systems Manager エージェント (SSM エージェント) をインストールする方法を教えてください。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/install-ssm-agent-ec2-linux/