olrlobt
[INFRA] AWS EC2 프리티어 인스턴스 생성하기 본문
AWS (Amazon Web Services)
AWS는 Amazon이 제공하는 클라우드 컴퓨팅 플랫폼 및 인프라 서비스 모음이다. 2006년에 시작된 AWS는 가상 컴퓨터, 스토리지, 데이터베이스, 네트워킹, 분석, 머신 러닝, 모바일, 개발자 도구, 관리 도구, IoT(Internet of Things), 보안 및 엔터프라이즈 애플리케이션과 같은 다양한 서비스를 제공한다. 이 서비스들은 모두 인터넷을 통해 제공되며, 사용자는 필요에 따라 자원을 확장하거나 축소할 수 있는 유연성을 갖는다.
EC2 (Elastic Compute Cloud)
AWS가 제공하는 가장 기본적이고 중심적인 서비스 중 하나인 EC2는 사용자가 가상 컴퓨터 인스턴스를 빌려 사용할 수 있게 해주는 서비스이다. 사용자는 운영 체제, 애플리케이션 서버, 데이터베이스 서버 등을 포함한 서버를 클라우드에서 가상으로 실행할 수 있다.
AWS에서는 무료로 EC2 프리티어를 사용할 수 있는데, AWS EC2 프리티어는 AWS 클라우드를 처음 사용하는 고객을 대상으로 하는 프로모션으로 매월 일정 시간 동안 t2.micro 또는 t3.micro 인스턴스를 무료로 사용할 수 있는 옵션을 제공한다. 하지만 사실상 매월 750시간을 제공하기 때문에, 하나의 인스턴스를 한 달 내내 계속 실행할 수 있다. 그렇다고 무제한으로 사용할 수 있는 것은 아니고, 프리티어 사용량을 초과하는 경우에는 추가 요금이 발생할 수 있으니 조심하자.
또한, AWS 프리티어는 AWS 계정을 생성한 후 12개월 동안만 유효하며, 12개월이 지난 후에는 표준 요금이 적용된다.
t2.micro와 t3.micro 인스턴스는 대략 1GB의 RAM을 제공하므로, 소규모 애플리케이션이나 학습용으로만 사용하자.
EC2 인스턴스 생성하기
먼저 AWS 계정을 생성하고 로그인을 해주자. 이 부분에서는 해외결제가 가능한 카드를 등록하는 부분 말고는 큰 어려움이 없을 거라 생각해서 과감히 생략하고 진행한다.
AWS Region 설정
AWS에는 Region이라는 개념이 있다. AWS는 전 세계에 분산하여 운영하는 위치를 뜻한다.
각 Region은 여러 개의 독립적인 데이터 센터로 구성이 되어 있는데, 이렇게 분산되어 있기 때문에 데이터 지연 시간을 최소화하고 사용자에게 더 나은 서비스를 제공할 수 있다.
첫 화면 우측 상단에서 Seoul로 바꿔주자.
또한, 우측 상단에서 한국어로 설정을 바꾸고 진행하자.
EC2 서비스 접속
상단의 검색창을 이용하여 EC2를 검색하여 대시보드에 접근한다.
EC2 인스턴스 생성
EC2 대시보드는 위와 같이 구성된다.
인스턴스 시작을 눌러 EC2 인스턴스 생성을 시작한다.
AMI 설정
인스턴스를 구분할 이름을 작성해 주고, AMI를 선택해 준다. AMI는 설명이 잘 나와있다시피 인스턴스를 시작하는 데 필요한 소프트웨어이다. 나는 Ubuntu를 선택해 주었고, 하단에 Amazon Machine Image(AMI)를 눌러 사용할 이미지 버전을 선택해 주자.
나는 적당히 작은 애플리케이션을 만들 것이기 때문에, 프리티어 지원 버전을 선택했다. 사양과 요금을 종합적으로 고려하여 선택하면 된다.
키 페어 생성
AWS에서 키 페어(Key Pair)는 EC2(Elastic Compute Cloud) 인스턴스와 같은 리소스에 안전하게 접근하기 위해 사용되는 공개키 암호화의 한 형태이다. 키 페어는 공개키와 개인키로 구성되며, 두 키는 수학적으로 연관은 있지만, 개인키로부터 공개키를 유추하는 것은 사실상 불가능하다.
여기서 만드는 키는 개인키이며, 절대 유출이 되지 않게 조심해야 한다.
새 키 페어 생성을 눌러 Pem 키를 생성한다.
만약 기존에 사용하던 키페어가 있다면 선택해 주면 된다.
키 이름 역시 구분이 가능할 이름을 적어주고, RSA 유형으로. pem키 형식으로 만들어 주자.
RSA의 보안성이 높고 널리 지원되고 있고,. pem키 역시 다양한 운영 체제에서 사용 가능하게 광범위하게 지원되기 때문에 많이 사용한다.
이제 키 페어 생성을 눌러주면, 브라우저에서 다운로드가 된다.
절대 유출되지 않는 곳에 잘 보관해 놓고, EC2 접속에 사용하자.
네트워크 설정
네트워크 설정은 위와 같이 진행한다.
보안 그룹은 기존 보안 그룹이 있다면 설정해 주고, 없다면 그대로 진행한다.
이때, SSH 트래픽 허용란에 내 IP라고 되어 있다면, pem키를 이용한 SSH 접근이 동일 IP에서만 접근 가능함에 유의하자.
스토리지 구성
AWS 프리 티어에서는 월별 30GB의 스토리지 양을 제공하는데, 여러 EBS(Elastic Block Store) 스토리지에 걸쳐 분배해서 사용할 수 있다. 예를 들어, 10GB짜리 EBS 볼륨 3개를 사용하거나, 20GB와 10GB짜리 볼륨 각각 하나씩을 사용할 수도 있다. 나는 하나만 사용할 것이기 때문에 30으로 설정해 주었다.
인스턴스 생성
이제 우측 요약란에서 내용을 확인하고, 인스턴스를 시작하자.
위 화면이 뜬다면, 정상적으로 EC2 인스턴스가 생성되었다.
보안 그룹 설정
보안 그룹(Security Groups)은 AWS에서 제공하는 가상 방화벽으로, EC2 인스턴스와 같은 AWS 리소스에 대한 인바운드(들어오는 트래픽)와 아웃바운드(나가는 트래픽) 트래픽을 제어하는 데 사용된다. 보안 그룹을 통해 어떤 소스(IP 주소나 IP 주소 범위)에서 포트 번호를 통해 리소스에 접근할 수 있는지, 리소스가 외부로 어떤 트래픽을 보낼 수 있는지 세밀하게 설정할 수 있다.
좌측 탭에서 "보안 그룹"을 선택한다.
보안 그룹 생성
해당 화면에서 기존의 보안 그룹들을 보고 관리할 수 있다.
우리는 새로 만들 거 기 때문에, 우측 상단의 보안 그룹 생성을 눌러준다.
보안 그룹 설정
- 인바운드 규칙(Inbound Rules): 특정 소스로부터 들어오는 트래픽을 허용하거나 거부할 수 있다. 소스는 IP 주소, IP 주소 범위, 또는 다른 보안 그룹일 수 있다.
- 아웃바운드 규칙(Outbound Rules): 인스턴스가 시작하는 트래픽이 특정 목적지로 나갈 수 있도록 허용한다. 기본적으로 모든 아웃바운드 트래픽이 허용되지만, 필요에 따라 이를 제한할 수 있다.
보안 그룹을 구분할 수 있는 이름을 지어주고 하단의 인바운드 규칙을 추가하자.
인바운드 규칙
인바운드 규칙은 위와 같이 설정해 주었다. 이때, SSH는 앞서 설정한 pem키로 인스턴스 접근이 가능하게 꼭 설정해 주어야 하며, 기본적으로 HTTP(80)과 HTTPS(443)을 설정해 준다. 이 외에 EC2에 올린 스프링이나 리액트도 접근할 것이라면, 인바운드 규칙에 추가해 주자.
이제 생성을 완료해 주면, 위와 같이 보안그룹이 잘 생성된다.
보안 그룹 설정
이제 생성한 보안그룹을 EC2 인스턴스에 설정해 주어야 한다.
먼저, EC2 인스턴스를 우클릭하여 "보안 그룹 변경"을 선택한다.
그리고 "보안 그룹 선택"을 눌러 이 전에 만든 보안 그룹을 선택해서 저장해 주자.
이제 생성한 인스턴스 대시보드에서 확인이 된다면, 잘 적용된 것이다.
EC2 인스턴스 접속하기
생성한 EC2 인스턴스에 접근이 잘 되나 확인할 차례이다.
생성한 EC2 대시보드에서, 연결 버튼을 눌러준다.
그러면 위와 같이 연결하는 방법에 대해 자세하게 설명이 되어 있다.
chmod 400 명령어를 사용하여. pem 키 파일에 대한 권한을 설정하는 이유는 파일의 보안을 강화하기 위함이다. chmod 400 설정은 파일 소유자에게 읽기 권한만 부여하고, 그룹 및 다른 사용자에게는 어떠한 권한도 부여하지 않는다.
또한, chmod 400 설정을 통해 파일을 읽기 전용으로 만들어, 실수로 파일을 수정하거나 삭제하는 일을 방지할 수도 있다.
설정이 끝나면, 앞서 복사한 명령어를 shell에 입력하여 EC2에 접속할 수 있다.
'Infra' 카테고리의 다른 글
[INFRA] 가비아 도메인 구매 후 EC2 서버에 적용하기 (0) | 2024.05.06 |
---|---|
[INFRA] Jenkins 설치하기 (0) | 2024.03.30 |
[INFRA] Docker에서 Nginx 컨테이너 실행과 https 설정하기 (1) | 2024.03.20 |
[INFRA] Docker와 Dockerfile, Docker-compose 구성하기 (1) | 2024.02.21 |
[INFRA] Nginx를 사용하여 HTTPS 요청 처리하기 (3) | 2024.02.20 |