[AWS] EC2 Instance Connect

develemon·2024년 11월 12일

AWS

목록 보기
2/3
post-thumbnail

오늘은 AWS를 시작하는 기초 중의 기초인 EC2의 기본 구성을 정리한다. EC2가 브라우저 콘솔로 연결되려면 네트워크 설정이 제대로 구성되어야 한다. 그래서 우선 그 네트워크 구성을 살펴보자면 다음과 같다.

  1. VPC(Virtual Private Cloud) 구성
    VPC는 AWS 상에서 사용자가 지정하는 가상 네트워크로, EC2 인스턴스가 속할 네트워크를 정의하고, IP 주소 범위(CIDR 블록)를 설정을 통해 사용할 IP 주소의 범위를 지정한다.

  2. 서브넷(Subnet) 설정
    서브넷은 VPC 내의 IP 주소 블록을 더 작은 네트워크로 나누는 역할을 하는데, 주로 퍼블릭 서브넷과 프라이빗 서브넷으로 나누어 사용한다. 이때 퍼블릭 서브넷은 인터넷과 연결되며, 인터넷 게이트웨이와 라우트 테이블을 통해 외부와 통신할 수 있다. 반면 프라이빗 서브넷은 외부 인터넷 연결이 제한되며, 데이터베이스 서버와 같이 외부 접근이 필요 없는 리소스를 배치하는 데에 주로 사용된다.

  3. 인터넷 게이트웨이(Internet Gateway) 구성
    IGW는 VPC와 인터넷 간의 통신을 가능케 하는 가상 장치로, EC2 인스턴스가 외부 인터넷과 통신할 수 있도록 퍼블릭 서브넷에 연결된다. VPC 생성 후 IGW를 생성하고, 해당 VPC에 연결하여 사용 가능하다.

  4. 라우트 테이블(Route Table) 설정
    라우트 테이블은 트래픽 경로를 결정하는 역할을 한다. 퍼블릭 서브넷의 경우, IGW를 대상으로 하는 기본 라우팅 경로를 설정하여 인터넷으로 트래픽을 보내도록 설정한다. 예를 들어, 0.0.0.0/0를 IGW로 라우팅하여 모든 외부 트래픽을 인터넷 게이트웨이를 통해 처리할 수 있게 한다. 반면 프라이빗 서브넷은 외부 접근이 필요 없으므로 IGW로 라우팅하지 않고, 내부 통신만 허용되도록 설정할 수 있다.

  5. 보안 그룹(Security Group)네트워크 ACL(Network Access Control List) 설정
    보안 그룹은 인스턴스 단위로 적용되는 방화벽 역할을 하며, 특정 IP와 포트에 대한 인바운드/아웃바운드 트래픽을 허용한다. SSH 접속, HTTP/HTTPS 접속 등을 허용하도록 설정할 수 있다. 네트워크 ACL은 서브넷 단위로 적용되며, 추가적인 보안 계층을 제공한다. 보안 그룹보다 넓은 범위에서 트래픽을 제어하고 싶을 때 유용하다.

이로써 각 구성물들에 대해 글로나마 대략 정리되었다면, 이제 실제 인스턴스 생성과 구축, 연결을 해보자.

IAM 사용자 생성 및 권한 추가


먼저 루트 사용자로 로그인하여 IAM 사용자를 새로 생성한다. 기존에 생성한 IAM 사용자가 있다면 그대로 사용해도 상관 없다.

이때 EC2 연결을 시도할 것이고, 추가적으로 EC2에 대한 접근을 활용할 수 있게 하기 위해 AmanzonEC2FullAccess, EC2InstanceConnect 두 개의 권한 정책을 추가하여 IAM 사용자를 생성한다.

IAM 사용자를 생성한 후에는 해당 IAM 사용자의 상세 정보 화면으로 넘어갔을 때, Security credentials 탭을 확인할 수 있다. 이 탭을 클릭하여 먼저 Enable console access 버튼을 클릭하고, 원하는 방식의 패스워드 설정을 한다. 나는 여기서 직접 패스워드를 생성하였다.

패스워드를 생성한 후에는 Console sign-in link의 URL로 이동하여 IAM 사용자 이름과 지정한 패스워드를 통해 로그인한다.

IAM 사용자로 로그인하면 루트 사용자와 같은 메인 화면을 볼 수 있고, 여기서 필요한 인스턴스를 검색하여 생성해주면 된다. 먼저 VPC를 검색하여 이를 생성하도록 한다.

VPC 및 서브넷 생성


VPC는 기본값에 IPv4 CIDR를 10.0.0.0/16으로 지정하여 생성하였다.

VPC를 생성한 뒤에는 서브넷을 생성해준다. 이때 서브넷 생성 시 앞서 생성한 VPC로 연결한다. 그리고 여기서 나는 나머지 설정은 기본값으로 설정하였다.

인터넷 게이트웨이 생성 및 연결


이어서 VPC를 외부 인터넷과 통신할 수 있도록 인터넷 게이트웨이를 생성하고, 이를 앞서 생성한 VPC에 연결한다.

이로써 기본 네트워크 구성은 일단락 되었다. 이제는 EC2 인스턴스를 생성하도록 하자.

EC2 인스턴스 생성


EC2 인스턴스는 원격으로 접속해 관리할 필요가 있기 때문에, 안전을 위해 키 페어를 통해 접속을 제한함으로써 보안을 강화한다. SSH를 통해 EC2에 접근할 때 이 개인키를 사용하여 인증을 수행하게 된다. 그러므로 이 키 페어를 생성하여 키 값을 개인 파일로 잘 기록해두도록 한다.

이어서 네트워크 설정을 통해 앞서 생성한 VPC와 서브넷을 지정해준다. 그리고 원하는 방식에 따라 퍼블릭 IP 자동 할당을 Enable 할 수 있고, 이미 존재하는 보안 그룹이 있다면 그 보안 그룹을 지정해주어도 된다. 여기서 나는 새 보안 그룹을 생성하였다.

이렇게 EC2 인스턴스 생성까지 완료하였다. 그러나 이대로 바로 이 EC2 인스턴스에 연결을 시도하면 연결되지 않는다. 왜냐하면 라우트 테이블이 아직 제대로 설정되지 않았기 때문이다. EC2 상세 정보 화면에서 우측에 보면 라우트 테이블 인스턴스를 확인할 수 있다.

라우트 테이블 설정


이 라우트 테이블을 확인해보면 10.0.0.0/16 IP에 대해 local로 접근을 허용하고 있는데, 추가적인 경로 설정이 필요하다. Edit routes 버튼을 클릭하여 경로를 추가한다.

Add route를 통해 추가 경로를 설정할 수 있고, 여기서 나는 0.0.0.0/0, 즉 모든 IP 주소에 대해 앞서 생성한 인터넷 게이트웨이 인스턴스로의 접근을 허용하도록 하였다.

EC2 인스턴스 연결


이렇게 라우트 테이블 설정까지 완료하였다면 이제 EC2 인스턴스 연결을 시도해보자. Connect 버튼을 클릭하면 된다.

브라우저 콘솔에서 EC2 연결이 확인되었다.

추가. EC2 인스턴스에 퍼블릭 DNS를 생성하려면?


처음 생성된 EC2 인스턴스를 살펴보면 Public IPv4 DNS가 표시되지 않음을 확인할 수 있다. 이때 EC2 인스턴스 설정을 편집할 게 아니라, VPC 설정에서 해결할 수 있다.

VPC에서 Actions > Edit VPC settings를 통해 DNS settings에서 Enable DNS hostnames가 체크되지 않은 상태일텐데, 이를 체크하여 저장하면 퍼블릭 DNS 생성이 된다.

profile
유랑하는 백엔드 개발자 새싹 블로그

0개의 댓글