Session ManagerからEC2に接続するためのネットワーク経路を作ってみた

# はじめに
前回の記事で、私はSession Managerを使ってプライベートサブネットにあるEC2インスタンスへ接続するときのネットワーク経路はどのようになっているのかを書かせていただきました。Session ManagerからプライベートなEC2インスタンスへの接続を実現する方法は以下の２パターンになります。
1. NatGatewayを使用した経路
1. ssm接続用のVPCエンドポイントを使用した経路

上記２つの経路の特徴については、以下の記事をご参照ください。
[Session Managerを使ってEC2に接続するにはどのような経路が必要なのか](https://qiita.com/nori0329/private/43f15603b342b2df8d8b)

今回は、ssm接続用のVPCエンドポイントを使用して、プライベートなEC2にSession Managerで接続する手順を紹介いたします。

# 前提条件
今回はssm接続に必要なネットワーク経路の作成にフォーカスするため、以下の設定は完了している前提で説明していきます。
* プライベートサブネットでEC2インスタンス (Amazon Linux2023)が起動していること
* アクセスするユーザーが使用するIAMユーザを作成していること
* EC2インスタンスに必要なIAMロールがアタッチされていること

# 今回のゴール
本記事では、以下の画像のようにssm接続用のVPCエンドポイントを作成してSession ManagerからEC2インスタンスに接続できることを目標とします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/24fbbbb6-bcd0-8490-015d-c777d387b706.png">

# 設定手順
プライベートなEC2インスタンスへssm接続をするためには、以下の3つのVPCエンドポイントが必要になります。なお、これらはインターフェースエンドポイントとなるため月額料金が発生します。
1. ssm
1. ssmmessages
1. ec2messages

以下に、各エンドポイントの設定方法について説明します。
#### 1. ssmエンドポイントの作成
①AWSマネジメントコンソールにログインし、検索窓で「VPC」と検索します。

②VPCのページに遷移したら、左のメニューから「エンドポイント」をクリックします。

③エンドポイント一覧の右上にある「エンドポイントの作成」ボタンからVPCエンドポイントを作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/e0498e81-267b-b4b8-2554-d459d472dd97.png)

④エンドポイントの設定で任意の名前を入力し、サービスカテゴリでは「AWSのサービス」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/e164578f-2609-fac1-afa6-7fda1d5424ff.png)

⑤サービスの検索窓で「ssm」と検索し、「com.amazonaws.ap-northeast-1.ssm」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/31b1cece-500d-a99f-e3aa-162c8f56a96b.png)

⑥VPCはssm接続したいEC2インスタンスがあるVPCを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/02c13e0b-269c-6046-8b46-bba32e106843.png)

⑦サブネットは接続したいEC2インスタンスがあるアベイラビリティゾーン及びサブネットを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/7013ae14-64dd-d3e8-f5f2-314f4608b13b.png)

⑧セキュリティグループは「～」なものを選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/f5664508-8fff-1fb6-f990-7f99181f9d48.png)

⑨ポリシーとタグは、特別な要件がない限り特に設定は必要ありません。ポリシーはフルアクセスを選択したままにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/c2be5ce8-770e-2fe9-6bc2-1d31ab7b9631.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/c30f53d0-a139-416d-c361-f6bd0f0045a4.png)

⑩「エンドポイントを作成」ボタンを押すとエンドポイントが作成されます。
　作成したエンドポイントは、エンドポイント一覧から確認できます。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/8d271931-ae08-8046-33cc-bc44eca84fa9.png)

#### 2. ssmmessagesエンドポイントの作成
上記と同じ手順で、「エンドポイントを作成」ボタンからssmmessagesのエンドポイントを作成していきます。
①サービスで、「com.amazonaws.ap-northeast-1.ssmmessages」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/8991759b-9af8-a0aa-88e4-262cdd3b4b05.png)

②VPC、サブネット、セキュリティグループ、ポリシー、タグは「ssm」エンドポイントと同じ値を設定します。

#### 3. ec2messagesエンドポイントの作成
上記と同じ手順で、「エンドポイントを作成」ボタンからec2messagesのエンドポイントを作成していきます。
①サービスで「com.amazonaws.ap-northeast-1.ec2messages」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/e0678f57-f7c6-c4c1-85dd-ac3098d7a547.png)

②VPC、サブネット、セキュリティグループ、ポリシー、タグは「ssm」エンドポイントと同じ値を設定します。

以上３つのエンドポイントをプライベートなEC2インスタンスがあるサブネットに作成することで、ssm接続が可能になります。

# Session ManagerからEC2インスタンスへの接続手順
ここまでの設定で、ssm接続をするために必要な設定は完了しました。
ここからはAWSマネジメントコンソール上で、ssm接続をする流れを説明いたします。

①実行中のEC2インスタンスにチェックを入れ、右上の「接続」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/3ef3bb54-449c-172c-a039-2e3a5beeea5f.png)

②セッションマネージャータブを選択し「接続」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/55b1cec8-f5c4-cd18-8ab7-305432d34570.png)

③以下のようなウィンドウが表示されると、接続成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622083/094c6f93-cac0-ec11-5b1b-42a0b06dc05a.png)

# おわりに
今回はプライベートなEC2インスタンスに、Systems Manager Session Managerを利用して接続する手順について説明しました。上記手順でEC2へ接続することで、セキュリティグループを開けずにセキュアな接続ができるようになります。
本投稿がどなたかの役に立てば幸いです。

### 参考文献
[AWS Systems Manager Session Manager](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager.html)
[Session Manager を設定する](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started.html
)