【AWS初心者向け】EC2 Instance Connect Endpoint を使用した、パブリック IPv4 アドレスを必要としないインスタンスへの接続

どうも、クラ本部の黒田です。
暑くなって来ましたね。
猛暑日が続く中、皆さんはいかがお過ごしでしょうか。

さて、今回は、**VPCエンドポイント**を使って、**プライベートネットワーク**の環境で **EC2 Instance Connect Endpoint**の利用手順を解説します。



### はじめに

#####  [EC2 Instance Connect Endpointとは、パブリック IPv4 アドレスを必要とせずに、セキュアな方法で EC2 インスタンスに接続するための機能となります。](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-ec2-instance-connect-ssh-rdp-public-ip-address/ "#### EC2 Instance Connect Endpointとは、パブリック IPv4 アドレスを必要とせずに、セキュアな方法で EC2 インスタンスに接続するための機能となります。")

------------


### 構成図
![file](https://cloud5.jp/wp-content/uploads/2023/07/image-1689558225316.png)

------------


### 事前準備

**実践する前に、以下の事前準備が必要です。**

- VPC のプライベートサブネット上で EC2 インスタンスが起動している準備をしてください。
![](https://cloud5.jp/wp-content/uploads/2023/07/2A320660-F52E-41c9-986B-DA76B879BEB2.png)
![](https://cloud5.jp/wp-content/uploads/2023/07/2BD8164F-0C28-4627-B49C-221281ED3FD2.png)
![](https://cloud5.jp/wp-content/uploads/2023/07/9A61E644-1DA6-443c-9412-F3C7DF587DFF.png)
------------


### 概要
1. **セキュリティグループ作成**
EC2 Instance Connect Endpoint には、セキュリティグループが必要です。セキュリティグループを作成し、適切なインバウンドルールを設定します。これにより、EC2 インスタンスへの安全な接続が確保されます。
2. **EC2 Instance Connect Endpoint作成**
AWS Management ConsoleVPCエンドポイントを作成します。作成時には、サービスカテゴリをEC2 Instance Connect Endpointを指定し、必要な設定を行います。
3. **EC2 Instance Connect Endpoint を使用したインスタンスの接続**
EC2 インスタンスに接続する際には、SSH クライアントを使用します。SSH クライアントを起動し、EC2 Instance Connect Endpoint を使用してインスタンスに接続します。この方法により、パブリック IPv4 アドレスを持たないプライベートなインスタンスにも安全かつ簡単にアクセスすることができます。
4. **IAM アクセス許可の付与**
EC2 Instance Connect Endpoint を使用するためには、適切な IAM アクセス許可が必要です。IAM ポリシーを作成し、EC2 インスタンスへの接続に必要なアクションをユーザに許可する必要があります。

------------


#### 1. **セキュリティグループ作成**
- セキュリティグループのページに移動し、「セキュリティグループの作成」を選択します。
適切な名前と説明を設定し、インバウンドルールを構成します。
- EC2 Instance Connect Endpoint に使用されるポート 22（SSH）へのアクセスを許可する必要があります。セキュリティ要件に基づいて、必要なルールを追加します。

![](https://cloud5.jp/wp-content/uploads/2023/07/5C961C4F-5ACF-4ee9-9A63-234C4204FF01-1.png)

**EIC セキュリティグループ:**

> | セキュリティグループ     | プロトコル | ポート | 送信先                   |
|----------|------------|-------|--------------------------|
| インバウンド | なし       | なし    | なし                     |
| アウトバウンド | TCP       | 22    | EC2セキュリティグループ |

**EC2　セキュリティグループ:**

> | セキュリティグループ     | プロトコル | ポート | 送信先                          |
|----------|------------|-------|---------------------------------|
| インバウンド | TCP       | 22    | EICセキュリティグループ |
| アウトバウンド | すべて      | すべて  | 0.0.0.0/0                       |

#### 2. **EC2 Instance Connect Endpoint の作成**
- 「VPCエンドポイント」のページに移動し、「VPCエンドポイントの作成」をクリックします。
「サービスカテゴリ」セクションで、EC2 Instance Connect Endpointを選択します。
「VPC」セクションで、事前準備したVPCを選択します。
 EICセキュリティグループと関連のプライベートサブネットを選択します。
設定が完了したら、「エンドポイントの作成」または「作成」をクリックします。
![](https://cloud5.jp/wp-content/uploads/2023/07/9C8348C7-BD15-43d2-8484-AC336554F483-1.png)
![](https://cloud5.jp/wp-content/uploads/2023/07/BD1ACFFF-B5E0-46b3-83BD-92C9723BABA3.png)
![](https://cloud5.jp/wp-content/uploads/2023/07/EEC8ACAB-AB28-4ddb-8619-C93C2004C1DF.png)

#### 3. **EC2 インスタンスの接続**
- EC2 サービスに移動します。
インスタンスのページに移動し、「接続」を選択します。
「EC2 Instance Connect エンドポイントを使用して接続する」を選択します。
前の手順で作成した「EC2 Instance Connect エンドポイント名」を選択し、接続します。
![](https://cloud5.jp/wp-content/uploads/2023/07/9A61E644-1DA6-443c-9412-F3C7DF587DFF.png)
![](https://cloud5.jp/wp-content/uploads/2023/07/47381700-CD67-400e-A8B1-29FDB2777A9E.png)

**※　エラーメッセージが出て来た場合、次の手順に進んでください。**
「Failed to connect to your instance　Error establishing SSH connection to your instance. Try again later.」を調べたら、権限がないことが分かりました。

**[EC2 Instance Connect Endpoint を使用するための IAM アクセス許可の付与](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/permissions-for-ec2-instance-connect-endpoint.html "EC2 Instance Connect Endpoint を使用するための IAM アクセス許可の付与")**

![](https://cloud5.jp/wp-content/uploads/2023/07/FD36B85D-B552-4ba7-B9F3-1B4F69FBD21E.png)

#### 4. **IAM アクセス許可の付与**
- IAM サービスに移動します。
「ポリシーの作成」を選択し、EC2 インスタンスへのアクセスに必要なアクションを許可するポリシーを作成します。適切なポリシー名を設定し、以下のようなポリシードキュメントを構築します。ポリシーを保存し、IAM ユーザーやロールにアタッチします。

```json
{
    "Version": "2012-10-17",
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "60"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```
※　注意点：region、account-id、eice-123456789abcdef などの値は実際の環境に合わせて適切な値に置き換える必要があります。

### 接続確認
**■　IAMユーザーアクセス許可設定が完了した後、再度「3. EC2 インスタンスの接続」を実施し、接続出来ました！**

![](https://cloud5.jp/wp-content/uploads/2023/07/6A7F485B-C6E4-4fe2-B2BB-0CACEF49EFB4.png)


### 最後に
**以上、EC2 Instance Connect Endpoint を使用してパブリック IPv4 アドレスを必要としないインスタンスへの接続手順の詳細です。これにより、セキュアかつ便利な方法でプライベートなインスタンスに接続することができます。**


### 次回
#### 【[CRONでシェルスクリプトを実行する手順](https://cloud5.jp/logrotate-sh/ ‎ "CRONでシェルスクリプトを実行する手順")】のご紹介
**では、皆さん、また次回お会いしましょう。**