[AWS] EC2 인스턴스 생성 및 접속
AWS

[AWS] EC2 인스턴스 생성 및 접속

728x90

 

 

EC2란?

EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다. 보통 "AWS에서 리눅스 서버 혹은 윈도우 서버를 사용한다."라고 하면 이 EC2를 이야기하는 것이다.

 

인스턴스 생성하기

인스턴스를 생성하려면 우선 AWS에 로그인을 해야한다.

 

로그인을 하면 콘솔 화면으로 들어가진다. EC2 인스턴스를 생성하기 위해 검색창에 EC2라고 검색을 한 뒤 클릭한다.

 

EC2 대시보드가 나오면, 중앙에 있는 [인스턴스 시작] 버튼을 클릭한다.

 

인스턴스를 생성하는 첫 단계는 AMI(Amazon Machine Image)를 선택하는 것이다. AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것을 이야기한다. 여기서는 아마존 리눅스 1 AMI를 선택할 것이다.

 

인스턴스 유형을 선택하는 단계이다. 현재는 프리티어를 사용 중이기에 t2.micro를 선택한다.

 

다음은 세부 정보 구성 단계이다. 기업에서 사용할 경우 화면상에 표기된 VPC, 서브넷 등을 세세하게 다루지만, 지금은 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.

 

다음은 스토리지 추가 단계이다. 서버의 용량을 얼마나 정할지 선택하는 단계이다. 기본값은 8GB인데, 프리티어로 30GB까지 가능하다. 따라서 30GB로 변경한 후 다음으로 넘어가자.

 

다음은 태그 추가 단계이다. 태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록한다. 태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다. EC2의 이름을 붙인다고 생각하면 된다. 여러 인스턴스가 있을 경우 이를 태그별로 구분하면 검색이나 그룹 짓기 편하므로 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록한다.

 

 

다음은 보안 그룹 구성이다. 우선 보안 그룹 이름과 설명을 유의미한 이름으로 변경한다. 유형 항목에서 SSH이면서 포트 번호가 22인 항목은 AWS EC2에 터미널로 접속할 때 사용한다. 이때, pem 키가 없으면 접속이 안 되니 전체 오픈(0.0.0.0/0) 하는 경우가 종종 있다. 하지만 pem 키가 노출되는 경우 보안상으로 문제가 될 수 있으니 안전하게 지정된 IP에서만 ssh 접속이 가능하도록 구성한다. 카페와 같은 집 외에 장소에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하면 된다. 또한 스프링 부트를 사용할 예정이므로 8080 포트 또한 오픈해준다. ( EC2 보안 그룹에 외부 IP ssh 규칙에 추가하기 )

 

검토 화면에서 보안 그룹 경고가 뜬 것을 확인할 수 있다. 이는 8080이 전체 오픈되어서 발생하는 경우로, 8080을 열어 놓는 것은 위험한 일이 아니니 넘어가도록 하자.

 

인스턴스로 접근하기 위해서는 pem 키가 필요하다. 인스턴스는 지정된 pem 키(비밀키)와 매칭 되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않는다. pem 키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장한다. [새 키 페어 생성]을 누른 후 이름을 적고 [키 페어 다운로드]를 누르도록 하자. 

 

pem 키를 다운로드한 후 [인스턴스 시작]을 누르면 인스턴스 생성 시작 페이지로 이동하고 인스턴스 id를 클릭하면 EC2 목록으로 넘어가진다.

 

아래 그림과 같이 인스턴스가 생성된 것을 확인할 수 있다. 

 

인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시에 항상 새 IP를 할당하는데, 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다. 이렇게 되면 인스턴스를 재실행할 때마다 IP가 변경돼서 접근할 때마다 IP 주소를 확인해야 한다. 굉장히 귀찮은 일이므로 고정 IP를 할당해주어야 한다.

왼쪽 카테고리에서 탄력적 IP를 선택하고 [탄력적 IP 주소 할당] 버튼을 클릭하자.

 

다음 화면에서 [할당] 버튼을 누르면 탄력적 IP가 발급된다.

 

방금 생성한 탄력적 IP와 EC2 주소를 연결한다. 

 

인스턴스 목록으로 다시 돌아와서 탄력적 IP가 잘 연결되었는지 확인한다.

 

여기서 주의할 점은 방금 생성한 탄력적 IP는 생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다. 즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 하며 만약 더는 사용할 인스턴스가 없을 때는 탄력적 IP도 삭제해야 한다. 

 

 

EC2 서버에 접속하기

방금 생성한 EC2에 접속하려면 우선 pem 키를 ~/.ssh 폴더에 넣어줘야 한다. 아래 명령어로 ~/.ssh 폴더에 pem 키를 복사한다.

cp [pem 키를 내려받은 위치] ~/.ssh

cp ~/Downloads/spring-boot.pem ~/.ssh

 

정상적으로 복사되었는지 ~/.ssh 디렉토리로 이동해서 확인한다.

cd ~/.ssh

ll

 

복사되었다면 pem 키의 권한을 변경한다.

chmod 600 ~/.ssh/[pem 키 이름]

chmod 600 ~/.ssh/spring-boot.pem

 

이제 아래의 명령어를 입력하여 인스턴스에 접속한다.

ssh ec2-user@[IP 주소] -i [pem 키 이름]

ssh ec2-user@xxx.xxx.xxx.xxx -i spring-boot.pem

 

정상적으로 접속이 되는 것을 확인할 수 있다. 하지만 매번 서버에 접속할 때마다 위의 명령어를 치려면 매우 귀찮고 번거로울 것이다. 따라서 쉽게 ssh 접속을 할 수 있도록 설정을 해주자.

 

pem 키가 있는 ~/.ssh 디렉토리에 config 파일을 생성한 후, 내용을 작성해준다.

vim ~/.ssh/config

 

Host [본인이 원하는 서비스명]
	HostName [ec2의 IP주소]
    User ec2-user
    IdentityFile ~/.ssh/[pem 키 이름]
    
Host spring-boot
	HostName xxx.xxx.xxx.xxx
    User ec2-user
    IdentityFile ~/.ssh/spring-boot.pem

 

생성한 config 파일은 실행 권한이 필요하므로 아래와 같이 권한을 설정해준다.

chmod 700 ~/.ssh/config

 

실행 권한까지 설정했다면 다음의 명령어로 접속해준다.

ssh spring-boot

 

정상적으로 접속이 되는 것을 확인할 수 있다. 이제는 터미널에서 ssh 서비스명만 입력하면 접속할 수 있게 되었다.

 

참고

스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

728x90