EC2 Instance Connect Endpoint を試してみた。

2023.08.29

概要

Amazon EC2 Instance Connect エンドポイントを使用すると、パブリック IP アドレスを必要とせずに EC2 インスタンスへの SSH および RDP 接続が可能になります。EC2 Instance Connect エンドポイントにより、プライベート サブネット内のインスタンスへのリモート接続が可能になるため、バスティオンサーバーが不要になります。

EC2 Instance Connect エンドポイントを作成すると、Amazon EC2 サービス用にサービスにリンクされたロールが自動的に作成されます。EC2 はこのロールを使用してネットワーク インターフェイスをプロビジョニングします。

この記事では、EC2 Instance Connect エンドポイントを使用してプライベート サブネットのインスタンスに接続してみました。

やってみた

セキュリティグループの作成

  • EC2 Instance Connect Endpoint にアタッチするためにセキュリティグループを作成して、インバインド ルールを追加する必要はなく、SSH アウトバウンドルールを追加しておきます。

  • プライベートサブネットに EC2 インスタンスを作成し、以下のインバインド ルールを追加しておきます。
    • Type : SSH
    • Protocol : TCP
    • Port : 22
    • Source : 前の手順で作成した EC2 Instance Connect Endpoint セキュリティ グループ [test-instance-connect-endpoint-sg]。

 

コンソールで EC2 Instance Connect Endpoint を作成する

  • VPC コンソールで、[Endpoints] を選択し、[Create endpoint] を選択しておきます。
  • エンドポイントの名前タグを入力し、サービス カテゴリとして [EC2 Instance Connect Endpoint] を選択しておきます。

 

  • エンドポイントを作成する VPC、サブネットを選択しておきます。
  • 前の手順で作成したセキュリティ グループを選択し、エンドポイントを作成しておきます。

 

  • エンドポイントが利用可能になると、そのエンドポイントを使用して EC2 に接続できます。

 

AWS CLIで EC2 Instance Connect Endpoint を作成する

  • サブネット ID と 前の手順で作成したセキュリティ グループ ID を指定して、[create-instance-connect-endpoint] コマンドを実行してエンドポイントを作成しておきます。

 

//command
% aws ec2 create-instance-connect-endpoint --region us-east-1 --subnet-id subnet-00000000000 --security-group-ids sg-0000000000000 

//Output
{
    "InstanceConnectEndpoint": {
        "OwnerId": "xxxxxxxxxxxx",
        "InstanceConnectEndpointId": "eice-0000000000000",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:xxxxxxxxxxxx:instance-connect-endpoint/eice-0000000000000",
        "State": "create-in-progress",
        "StateMessage": "",
        "NetworkInterfaceIds": [],
        "VpcId": "vpc-0000000000000",
        "CreatedAt": "2023-08-29T05:44:26+00:00",
        "SubnetId": "subnet-0000000000000",
        "PreserveClientIp": false,
        "SecurityGroupIds": [
            "sg-000000000000"
        ],
        "Tags": []
    },
    "ClientToken": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
}

 

  • エンドポイント ID を指定して [describe-instance-connect-endpoints] コマンドを実行し、エンドポイントの詳細を表示します。

 

//command
% aws ec2 describe-instance-connect-endpoints --region us-east-1 --instance-connect-endpoint-ids eice-00000000000

//Output
{
    "InstanceConnectEndpoints": [
        {
            "OwnerId": "xxxxxxxxxxxxx",
            "InstanceConnectEndpointId": "eice-00000000000",
            "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:xxxxxxxxxxxxx:instance-connect-endpoint/eice-00000000000",
            "State": "create-complete",
            "StateMessage": "",
            "DnsName": "eice-00000000000.xxxxxx.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
            "FipsDnsName": "eice-00000000000.xxxxxx.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
            "NetworkInterfaceIds": [
                "eni-00000000000"
            ],
            "VpcId": "vpc-00000000000",
            "AvailabilityZone": "us-east-1b",
            "CreatedAt": "2023-08-29T05:44:26+00:00",
            "SubnetId": "subnet-00000000000",
            "PreserveClientIp": false,
            "SecurityGroupIds": [
                "sg-00000000000"
            ],
            "Tags": []
        }
    ]
}

 

確認する

  • EC2 インスタンスを選択し、[Connect] を選択しておきます。

 

  • 接続タイプとして [Connect using EC2 Instance Connect Endpoint] を選択し、前の手順で作成したエンドポイントを選択し、[Connect] をクリックして EC2 インスタンスに接続します。

 

  • プライベートサブネットのEC2に接続が出来ました。

 

まとめ

EC2 Instance Connect エンドポイントを使用してプライベート サブネット内のインスタンスに簡単に接続できます。

EC2 Instance Connect エンドポイントは便利です。

Reference : EC2 Instance Connect Endpoint