본문 바로가기
  • 개발 삽질 블로그
데이터/클라우드 엔지니어링

[AWS] EC2 인스턴스 생성하기

by 갹둥 2024. 8. 13.

제가 참여한 사이드 프로젝트에서 서비스 개선&확장을 계획중이었는데요

팀원분의 프리티어 계정이 만료되기 전에 서버를 옮기게 되었습니다😊

저도 원래 예전에 팠던 계정은 프리티어 기간이 끝나서 여분의 계정으로 진행하였습니다

 

운영용 EC2 인스턴스 +RDS(private subnet에), 개발용 EC2 인스턴스 1로 구성했고

일단 가볍게 개발용 인스턴스 먼저 생성했습니다...나머지는 너무 많아서 다음에 쓰겠습니다ㅎㅎ

 

 

 

*미리 Root 계정 만들고 Admin용 IAM 계정 만들어서 진행하였습니다

 

 

 


EC2

  • Amazon Elastic Compute Cloud(Amazon EC2)는 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스
  • AWS 클라우드의 On-Demand 확장 가능 가상 서버
  • 아래의 이미지와 같이 구성되어 있습니다.

출처: AWS 공식 문서

 

(https://docs.aws.amazon.com/ec2/ aws 사이트에 공식 문서들이 잘 정리되어있어요)

 

 


인스턴스를 생성해봅시다

일단 저는 다른 분들 블로그 보고 호다닥 빠르게 만들고 싶었지만

뭔지 알아야 좀 다음 스탭으로 넘어갈 수 있는 타입이라...🥹

클릭하나 할 때 마다 개념 정리를 넣겠습니다...

 

 

1. 인스턴스의 이름이나 태그를 입력해줍니다

  • 태그는 키-값 쌍으로 이루어진 메타데이터로, 각 리소스에 부가적인 정보를 추가할 수 있습니다
            ex) 환경(예: 개발, 테스트, 프로덕션), 팀 등에 따라 리소스를 그룹화하거나 식별할 수 있음

 

 

 

2. 다음 단계로 AMI를 골라야 해요 

AMI(Amazon Machine Image)?

  • EC2 인스턴스를 시작하는 데 필요한 모든 정보(운영 체제, 애플리케이션, 환경 설정 등)를 포함하는 템플릿
  • AMI는 루트 볼륨 템플릿, 런치 퍼미션, 블록 디바이스 매핑으로 구성됨
  • 사용자는 AWS에서 EC2 인스턴스를 생성할 때 필요한 모든 구성을 미리 정의하고, 이를 바탕으로 동일한 환경을 빠르게 배포할 수 있음
  • 가상머신으로 치면 가상머신 이미지와 비슷한 개념
  • Amazon Linux와 Ubuntu가 프리 티어로 사용 가능합니다. 저는 좀 더 익숙한 Ubuntu로 골랐어요

  • 우분투 OS 선택하면 프리 티어 사용 가능 옵션 두 가지가 있네요
  • CPU 아키텍처는 x86을 선택했씁니다

 

 

3. 그 다음으로는 인스턴스 유형 선택

  • 프리 티어 사용 가능한 t2.micro로 선택했습니다
  • vCPU: 1개, 메모리: 1GB
  • 가볍고 작은 테스트 서버용으로 나쁘지 않을 것 같습니다

 

 

4.  키 페어 세팅

Key Pair?

  • EC2 인스턴스의 키 페어는 SSH 키
    • 공개 키: EC2 인스턴스에 저장됨
    • 개인 키: 사용자가 보관하며, EC2 인스턴스에 SSH를 통해 로그인할 때 사용됨
  • 기존의 key를 사용할 수도 있고 새 키 페어를 생성할 수 있습니다.
  • 새 키 페어 생성을 누르면 ssh 키 쌍이 생성할 수 있습니다. 

  • RSA 혹은 ED25519 암호화 알고리즘 중 선택해주시고
  • pem vs ppk(PuTTY에서 사용하는 개인 키 파일 형식)인데 PuTTYgen이라는 도구로 변환 가능
  • 근데 저는 putty 안써서 pem으로 다운 받았어요
  • 생성된 private key는 [본인 PC 홈디렉토리]/.ssh에 넣어두세욤
    • 생성 후 ssh key 백업까지 완료했습니다, 탈취당하거나 잃어버리지 말 것!!

 

5. 네트워크 설정

  • 네트워크 설정 탭에는 VPC, 서브넷, 퍼블릭 IP, 방화벽(보안그룹)에 대한 내용이 있네요, 편집 누르면 편집 가능합니다
  • AWS 계정 생성 시 자동으로 기본 VPC(네트워크)가 생성되어 있습니다
  • 서브넷 또한 기본 VPC 밑에 기본 서브넷 4개 있더라구요 (이거 2월인가 바뀐 public ipv4 정책 때문에 모르고 있다가 나중에 적절한 조치를 취하지 않으면 돈나갑니다;;)
  • 퍼블릭 IP 자동 할당은 EC2 인스턴스에 퍼블릭 IP를 할당할거냐는 거고 비활성화 하면 이 인스턴스는 사설 ip만 부여받습니다
    • https로 외부에서 바로 접근할 것이기 때문에 활성화를 선택했습니다
    • 그 다음 보안그룹을 생성해줍니다

 

보안 그룹(Security Group)?

  • AWS에서 EC2 인스턴스와 같은 리소스에 대한 네트워크 트래픽을 제어하는 가상 방화벽 역할
  • 보안 그룹을 통해 특정 IP 주소나 포트(ex 80, 22)에 대해 인바운드(들어오는 트래픽)와 아웃바운드(나가는 트래픽)를 허용하거나 차단할 수 있음

일단, 내 ip에서만 ssh로 접속할 수 있도록 보안 그룹 규칙을 추가해줍니다...

추후 http, https도 추가해주겠습니다 

 

6. 마지막으로 스토리지 구성을 해줍니다

  • 프리 티어는 초대 30GB EBS 범용(gp2 or gp3) 또는 마그네틱 스토리지(sc1, st1)를 사용할 수 있다고 합니다, 근데 지원 안하네요
  • 이게 줄이는거는 안되는데 늘리는거는 되더라구요, 적절히 산정해서 사용하시길 추천드립니다.
  • 15GiB * 프리티어로 쓸 수 있는 범용 SSD(gp3)로 구성하고 

EBS(Elastic Block Store)?

  • AWS에서 제공하는 블록 스토리지 서비스
  • EBS는 블록 단위로 데이터를 저장
  • 기존의 하드 디스크 드라이브(HDD)나 SSD와 유사하게 작동하며, 데이터베이스, 파일 시스템, 로그 스토리지 등 지속적인 데이터를 저장할 수 있는 디스크 볼륨을 제공
  • EBS 볼륨은 EC2 인스턴스에서 분리하거나 다시 연결할 수 있으며, 필요에 따라 크기를 조정하거나 성능을 업그레이드할 수 있음
  • GP3는 초당 최대 16,000 IOPS와 1,000 MB/s의 읽기/쓰기 성능을 제공합니다. 이는 GP2보다 더 높은 성능을 제공하며, 더 많은 IOPS와 스루풋을 필요로 하는 애플리케이션에 적합

 

 

 

7.  + 아직 세부 세팅이 남았네요

    • 저는 EC2에서 클라우드 워치에 대한 접근 권한이 필요해서 IAM 인스턴스 프로필을 만들었습니다
    • IAM 인스턴스 프로필: IAM 역할을 EC2 인스턴스에 연결하기 위한 컨테이너, EC2 인스턴스가 AWS 리소스에 접근할 수 있도록 필요한 권한을 부여
      1) IAM Role(역할) 생성 > AWS 서비스, 사용 사례 > EC2, CloudWatchAgentServerPolicy 권한 추가
      2) IAM 인스턴스 profile 생성
      3) 다시 돌아가 인스턴스와 연결

 

'데이터 > 클라우드 엔지니어링' 카테고리의 다른 글

클라우드 컴퓨팅  (2) 2024.01.03