Private Subnet に構築した EC2 インスタンス（Amazon Linux 2023）に接続する方法

# 背景
AWS Workspaces への RPA 構築のプロジェクトを進める中で、
AWS Workspaces を構築する Private Subnet から別の AWS アカウントに存在する Active Directory との疎通確認を事前に実施が必要となりました。

そこで、通信元 Private Subnet 内に EC2 インスタンスを作成し、疎通確認用のコマンドの実行を考えました。

それには Private Subnet 内への EC2 インスタンスへの接続が必要で、VPC エンドポイントは料金がかからないかつ、Private で接続したい考えから、今回、『EC2 Instance Connect EndPoint』を選択しました。

また、SSM Agent を導入し、セッションマネージャーでの接続は経験済みで、別の方法も実際にやってみて経験したいという思いもありました。

疎通確認を行った際の手順や重要点について記載します:pencil2:

# 参考資料
+ [Amazon EC2 Instance Connect Endpoint が発表されました！](https://dev.classmethod.jp/articles/ec2-instance-connect-endpoint/)
+ [踏み台サーバー不要でパブリック IP のない EC2 に SSH・RDP できるようになりました！](https://dev.classmethod.jp/articles/ec2-instance-connect-endpoint-private-access/)
+ [EC2 Instance Connect Endpoint（EIC Endpoint）を使って EC2 に接続！](https://zenn.dev/bamtech1904/articles/20230702_eic-endoint)
+ [EC2 Instance Connect Endpoint と Session Manager の違いをまとめてみた！](https://dev.classmethod.jp/articles/compare-eic-endpoint-and-session-manager/)


# 利用料金

無料ですが、データの転送料金はかかりますのでご注意ください！


# 注意するポイント

:::note alert
- AWS アカウントごとに作成できる EC2 Instance Connect Endpoint は 5 つまでです。執筆時点(2024年10月)では上限緩和できないようですのでご注意ください
:::

[EC2 Instance Connect エンドポイントのクォータ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/eice-quotas.html)
| 名前 | デフォルト | 引き上げ可能 |
|:------|:------:|:------:|
| AWS アカウント ごとの AWS リージョン あたりの EC2 Instance Connect Endpoint の最大数 | 5 | なし |
| VPC あたりの EC2 Instance Connect Endpoint の最大数 | 1 | なし |
| サブネットあたりの EC2 Instance Connect Endpoint の最大数 | 1 | なし |
| EC2 Instance Connect Endpoint あたりの同時接続の最大数 | 20 | なし |

ただし、VPC ピアリングを利用することで、1 つの EC2 Instance Connect Endpoint で複数の VPC 上の EC2 Instance に接続できるようですので参考情報を掲載します。

https://dev.classmethod.jp/articles/ec2-instance-connect-endpoint-vpcpeering/


# 概要図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/3978695f-c955-4f4e-d01f-7e0165435792.png)

### 重要点
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/6d0f700d-e936-4799-d398-21cf07110457.png)


# 設定手順
## 【01】EC2 Instance Connect EndPoint 用 SecurityGroup 作成

『アウトバウンドルール』に EC2 インスタンス用 SecurityGroup への SSH を許可します。
| タイプ | プロトコル | ポート範囲 | 送信先 |
|:------:|:------:|:------:|:------:|
| SSH | TCP | 22 | sg-xxxxxxxxxxxxxxxxx |
## 【02】EC2 Instance 用 SecurityGroup 修正
『インバウンドルール』に EC2 Instance Connect Endpoint 用 SecurityGroup からの SSH を許可します。
| タイプ | プロトコル | ポート範囲 | 送信先 |
|:------:|:------:|:------:|:------:|
| SSH | TCP | 22 | sg-xxxxxxxxxxxxxxxxx |
## 【03】EC2 Instance Connect Endpoint 作成
（01）『VPC』をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/3437edbf-ac23-5062-35ab-e18ec117a809.png)

（02）『エンドポイント』をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/3b66f225-9e89-59d2-0f62-e61a65a78211.png)

（03）［エンドポイントを作成］をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/a1f58012-e179-9428-765c-b5637fd722b8.png)


（04）『名前タグ - オプション』を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/567cbc16-dac3-d5d2-8a68-76f0f4ecce10.png)


（05）『EC2 インスタンス接続エンドポイント』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/001c0dd8-91d3-c7da-8c18-0bb9d3d64cbc.png)


（06）『VPC』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/2c469a61-3fce-ba6a-43f6-1d23b79e9109.png)


（07）【01】で作成した EC2 Instance Connect EndPoint 用の SecurityGroup を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/aac2e8b6-104c-f590-8a21-c331973cc988.png)


（08）接続する EC2 Instance が構築されている subnet を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/909f6dca-4ec3-d2c8-40e1-240ded8e7e7d.png)

（09）『タグ』に『Name』の『キー』と『値』を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/93f0cda1-c6fc-6172-3b7f-dd50f894ebe8.png)


（10）［エンドポイントを作成］をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/7aefa557-ec8d-fcce-3143-5a79a77f61a9.png)


（11）『VPC エンドポイントが正常に作成されました』

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/cb88743f-8ab4-de2d-6546-5197f6b14654.png)


（12）『サービス名』が設定され、『ステータス』が『保留中』から『使用可能』に変更されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/cd594642-ce7b-a8c2-9ed3-6d62f9eec5b7.png)


## 【04】EC2 Instance 接続

（01）『EC2』をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/1a7d3da7-7662-d9c5-2a5b-f9d6bbcd8c1d.png)

（02）『インスタンス』をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/c5962690-33d6-10b2-e8e0-bcea17b817b1.png)


（03）接続する EC2 Instance を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/e72fa0a6-23f9-a489-0c25-e204628ffb79.png)


（04）［接続］をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/e2216af3-50f9-319a-94e6-1664664e6905.png)


（05）『EC2 Instance Connect エンドポイントを使用して接続する』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/c47387da-5e95-6ce1-9719-c48ce2a1be77.png)


（06）［接続］をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/9df68361-832b-fce2-03fe-e9f04fb8a87e.png)


（07）Amazon Linux 2023 のコンソール画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/6d112db1-3f85-6aea-c9d1-128575d64d90.png)


# さいごに
Private Subnet 内に存在している EC2 Instance に接続する方法は踏み台 Server 経由や、下記セッションマネージャー等、いくつかの方法があるので、用途や運用を考えて選択する必要があると感じました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3333262/3812f733-34d2-dcd3-2f62-253fba43b40c.png)


+ [［AWS SSM］セッションマネージャーで EC2 に接続してみた](https://zenn.dev/fujimoto/articles/ea24e275a4f50c)
+ [EC2 インスタンスへのシェルアクセスサービスを雑にまとめてみた](https://dev.classmethod.jp/articles/choosing-the-right-shell-access-solution-to-aws-ec2/)

# 弊社では一緒に働く仲間を募集中です!
現在、様々な職種を募集しております。
カジュアル面談も可能ですので、ご連絡お待ちしております！

募集内容等詳細は、是非採用サイトをご確認ください。

https://engineer.po-holdings.co.jp/