EIC Endpoint 사용하기

TechXploreU·2023년 7월 25일
0
post-thumbnail

EIC Endpoint 사용하기

지난 re:inforce 2023을 통해 EC2 Instance Connect Endpoint (EIC Endpoint)가 공개되었는데 이에 대해 알아보도록 하겠습니다.

EIC Endpoint 의 기능 소개

기존 방법에서의 Private Instance 접속

일반적으로 VPC내의 프라이빗 서브넷에 위치한 EC2 인스턴스에 연결하려고 한다면, 다음과 같이 인프라 관리자 혹은 아키텍쳐 관리자가 VPC의 인터넷 게이트웨이(IGW)를 통하도록 설정된 Public IP주소로 배스쳔 호스트 에 연결한 다음 포트전달을 사용해서 EC2 인스턴스에 연결해야 할것입니다.

EIC Endpoint를 사용한 Private Instance 접속

하지만 EIC Endpoint를 사용한다면, 더이상 VPC리소스에 연결하기위해 인터넷 게이트웨이(IGW), 리소스의 퍼블릭 IP, 배스쳔 호스트 혹은 에이전트 등이 필요하지 않게 됩니다.

특징 알아보기

  • 무료입니다
    • EIC엔드포인트는 DTO 비용만 지불할 뿐, 서비스 자체는 무료입니다
      베스천 호스트를 사용하거나 SSM을 사용한다면, 요금이 발생합니다
  • IAM권한이 필요합니다
    • EIC엔드포인트를 생성, 삭제, 사용하기 위해선 다음과 같은 IAM 권한이 필요합니다
      • ec2:CreateInstanceConnectEndpoint
      • ec2:DeleteInstanceConnectEndpoint
      • ec2:CreateNetworkInterface
      • ec2:CreateTags
      • iam:CreateServiceLinkedRole
      • ec2-instance-connect:OpenTunnel
  • 쿼타
    • AWS 계정당 5개만 생성이 가능합니다
    • VPC당 1개만 생성이 가능합니다
    • 서브넷당 1개만 생성이 가능합니다

생성해보기

  • VPC - 엔드포인트 로 이동하여 엔드포인트 생성을 선택합니다.

  • 엔드포인트의 이름을 설정해주고 EIC Endpoint를 선택하도록 하겠습니다.

  • 엔드포인트를 생성할 VPC를 선택해 줍니다.

  • 보안그룹을 선택해줍니다.

    • 보안그룹이 없는경우 보안그룹을 생성해주겠습니다.

      • VPC - 보안그룹으로 이동하여 보안그룹 생성을 선택해줍니다.
      • 보안그룹이름과 설명을 적은 후 EIC Endpoint를 설정할 VPC를 선택합니다.
      • EIC Endpoint 의 보안그룹 인바운드는 아무것도 설정하지 않아도 됩니다.
      • 보안그룹을 생성합니다.
    • 보안그룹이 있는경우 보안그룹을 선택합니다.

    • 서브넷을 지정합니다. EIC는 프라이빗, 퍼블릭 어느곳에 두어도 동작합니다.

프라이빗 EC2 인스턴스에 접속하기

콘솔에서 접근하기

  • 퍼블릭 IP와 DNS주소없이, Private Subnet에 존재하는 EC2 인스턴스에 접속해보겠습니다.
  • 인스턴스를 선택하고 연결을 선택합니다.
  • EC2 인스턴스 연결 엔드포인트를 선택하고, 생성하였던 엔드포인트를 선택합니다.
  • 접속 완료!

Terminal에서 SSH 접속하기

  • 다음 명령어를 사용하여 SSH연결을 수립합니다.
    aws ec2-instance-connect ssh --instance-id 인스턴스아이디(i-어쩌구) --connection-type eice
  • ssh + open-tunnel 명령 조합으로도 연결이 가능합니다.
    ssh -i [키페어.pem] ec2-user@인스턴스 id \
        -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id [인스턴스 id]'

RDS 터널링처럼 사용하기

💡 AWS 측에서 이제 22번포트와 3389포트만을 지원합니다. 해당 방법은 RDS 인스턴스의 포트넘버를 3389로 지정하는 방법이므로, 권장하지는 않습니다.
  • AWS CLI를 사용합니다. ec2-instance-connect 커맨드를 사용, RDS의 프라이빗 아이피와 터널링을 시도합니다.

    • 파라미터로 EIC 아이디가 필요합니다.

      • VPC - 엔드포인트 - 조회할 엔드포인트 선택 후 엔드포인트 ID를 통해 확인가능합니다.
    • 파라미터로 RDS의 프라이빗 IP가 필요합니다.

      • EC2 - 네트워크 및 보안 - 네트워크 인터페이스 - 인터페이스 선택 후 확인 가능합니다.
    • 터널링을 진행합니다.

      aws ec2-instance-connect open-tunnel --instance-connect-endpoint-id <EIC ID> --private-ip-address <RDS Private IP> --local-port 3389 --remote-port 3389

      이제 EIC Endpoint로 3389포트를 통해 들어오는 연결은 RDS인스턴스의 3389로 터널링되어 연결이 수립되게됩니다.

    • RDS에 접속해보도록 하겠습니다.

      mysql -h 127.0.0.1 -P 3389 -u admin -p

    • 정상적으로 접속되는것을 확인 할 수 있고 터널링 로그를 확인할 수 있습니다.

profile
대학생과 함께하는 기술 탐험기

0개의 댓글