이지은님의 블로그
250320 - AWS 사용하기(EC2): EC2 인스턴스 생성, 탄력적 IP(Elastic IP), 추가터미널에서 SSH 클라이언트로 EC2 접속, 보안 그룹 설정 본문
250320 - AWS 사용하기(EC2): EC2 인스턴스 생성, 탄력적 IP(Elastic IP), 추가터미널에서 SSH 클라이언트로 EC2 접속, 보안 그룹 설정
queenriwon3 2025. 3. 21. 02:30▷ 오늘 배운 것
AWS설정을 하면서 배운 내용을 정리하고자한다.
AWS관련 내용은 3개의 블로그 포스팅을 하고자하는데, (1) AWS와 EC2 개념, (2) RDS의 개념을 정리하고 EC2와 Spring 프로젝트를 연결하는 방법(프로젝트), (3) S3에 이미지저장하기 로 포스팅을 할 계획이다.
<<목차>>
1. 배포와 AWS
1) 배포
2) AWS
3) 온-프레미스와 오프-프레미스
2. EC2
1) EC2(Elastic Compute Cloud)
2) 리전(Resion)
3) EBS(Elastic Block Store)
3. EC2 인스턴스 생성하기
1) 인스턴스 생성
2) EC2 세팅하기(인스턴스 생성)
3) 인스턴스 확인
4) 인스턴스 연결
5) 탄력적 IP연결하기
1. 배포와 AWS
1) 배포
: 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 것
개발을 할때는 localhost라는 주소로 테스트 및 개발을 하게 되는데, 이 주소는 다른 사용자들이 접근 불가능한 주소이다.
따라서 다른 사용자들이 개발자가 개발한 서비스를 사용할 수 있도록 만드는 것이 배포이다.
2) AWS
: 아마존 닷컴이 제공하는 클라우드 컴퓨팅 플랫폼.
AWS의 주요 서비스
- 컴퓨팅: EC2 (Elastic Compute Cloud), Elastic Beanstalk 등
- 데이터베이스: RDS (Relational Database Service) 등
- 스토리지: S3 (Simple Storage Service), EBS (Elastic Block Store)등
- 네트워킹: VPC (Virtual Private Cloud), CloudFront, Route 53 등
- 보안: IAM (Identity and Access Management) 등
Identity Access Management
- Elastic Cloud Compute : 클라우드 위의 서버 Elastic Load Balancer : 트래픽 관리
- Relational Database Service : 클라우드 위의 DB Route 53: 도메인(주소) 관리
- Virtual Private Cloud : 클라우드 위의 나만의 네트워크
- Simple Storage Service : 클라우드 위의 데이터저장소
- Cloudfront : 세계각지에 캐시 서비스
- Elastic Beanstalk : 많은 서비스들을 하나로
3) 온-프레미스와 오프-프레미스
온-프레미스(on-premise)란?
조직 내부에 설치되고 유지보수되는 서버
서버가 조직의 물리적인 위치에 있으며 조직의 IT 인프라를 관리하는 팀이 해당 서버를 관리하고 유지보수한다.
클라우드 서비스(오프프레미스(off-premise))와 대조적인데,
클라우드 서비스는 일반적으로 인터넷을 통해 액세스할 수 있는 외부 데이터 센터에서 호스팅되기 때문에 조직은 자체 IT인프라를 보유하고 있지 않는다. 따라서 서비스 운영에만 집중할 수 있다.
2. EC2
1) EC2(Elastic Compute Cloud)
컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스(주로 백엔드 서버 배포)
내가 가진 컴퓨터에서 서버를 배포해 다른 사용자들이 인터넷을 통해 접근할 수 있도록 만들 수 있다. 하지만 컴퓨터를 계속 켜놓아야하는 문제나 보안 등의 문제로 내 컴퓨터를 사용하지 않고 AWS EC2라는 컴퓨터를 빌려서 사용한다. 이 외에도 AWS EC2는 여러 부가 기능들을 가지고 있다.(로깅, 오토스케일링, 로드밸런싱 등)
2) 리전(Resion)
- AWS 리전(Region)이란, 세계 각지에 있는 AWS 데이터 센터의 물리적인 위치이다. (인프라를 지리적으로 나누어 배포한 각각의 데이터 센터)
- 각 리전은 여러 개의 가용 영역(Availability Zone, AZ)으로 구성되어 있으며, 가용 영역은 독립적인 데이터 센터로 구성, 네트워크 연결로 연결되어 있다.(리전> 가용영역 > 데이터 센터)
- 여러개의 AZ를 씀으로써 데이터센터가 재해상황에 빠졌을때도 서비스를 유지할 수 있는 고가용성 확보
고가용성이란?
여러 가용 영역에 애플리케이션 및 인프라를 배포함으로써
자연 재해, 정전, 네트워크 장애 또는 기타 유형의 장애로 인해 하나 이상의 가용 영역이 사용 불가능해져도 서비스가 계속해서 이용 가능하도록 보장한다.
👉 고객에게 높은 서비스 가용성을 유지하고 업무 중단의 영향을 최소화
💬 리전은 어떤 기준으로 선택할까?
사용자의 위치와 애플리케이션을 실행시키고 있는 컴퓨터와 위치가 멀수록 속도가 느리기 때문에,
👉 애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전을 선택
(리전과 EC2가 따로 관리되고 있기 때문에 리전에 따라 EC2 사용)
3) EBS(Elastic Block Store)
EBS란,
EC2 인스턴스에 붙여서 쓰는 블록 스토리지 볼륨이다. 데이터를 저정할 수 있고, 인스턴스를 끄더라도 EBS 데이터는 존재한다.
EBS 특징
- 블록 수준 스토리지 → 파일 단위가 아닌 블록 단위로 저장
- 네트워크로 EC2에 연결
- 데이터 지속성 → 인스턴스 꺼도 데이터 남아있음
- AWS 내부에서 자동으로 백업 및 복제
- 하나의 EBS는 하나의 인스턴스에만 연결 가능, 하나의 인스턴스에는 여러 개의 EBS 연결 가능
- 특정 AZ영역(가용영역)에 한정됨
- USB처럼 다른 인스턴스로 옮길 수 있음
EBS Snapshot이란,
EBS 볼륨을 백업하는 기능. 스냅샷을 만들면, EBS 볼륨의 전체 데이터를 S3에 복사해서 저장한다.
EBS 스냅샷의 기능
- 백업 및 복원
- 볼륨 확장
- 데이터 마이그레이션 및 다른 리전으로 이동 가능
- 자동 스케줄링 가능
- 변경된 부분만 감지하여 저장(델타 방식) -> 스토리지 비용 절감
- 이전 상태로 복원할 때는 새로운 EBS 볼륨 생성
3. EC2 인스턴스 생성하기
1) 인스턴스 생성
IAM계정에서 EC2를 검색한다.
1️⃣ 이후 인스턴스 시작 버튼을 눌러서 인스턴스를 생성한다.
2️⃣ 이름 작성 및 os 선택
Utbuntu 사용: 서버를 만드는데 제일 가볍고, 서버 배포에 정말 필요한 부분만 가져갈 수 있다.
인스턴스란? EC2에서 빌리는 서버를 가동하는 컴퓨터 1대 (가상화된 컴퓨터 환경)
인스턴스 유형이란? 서버에 할당되는 CPU, 메모리, 스토리지 및 네트워크 리소스와 같은 기본 성능 특성.
https://aws.amazon.com/ko/ec2/instance-types/?nc1=h_ls (인스턴스 유형)
클라우드 컴퓨팅 인스턴스 - Amazon EC2 인스턴스 유형 - AWS
aws.amazon.com
(프리티어 - t2.micro를 연습용으로 선택)
(컴퓨터 인스턴스 유형)
3️⃣ 키 페어란?
ec2컴퓨터에 접근할 때 사용하는 비밀번호 키(직관적으로 알아볼 수 있는 이름이 좋음)
EC2 인스턴스에 대한 SSH 액세스를 허용한다. 키 페어를 만들면 EC2 인스턴스를 시작할 때 키 페어를 선택할 수 있다.
다른 사람한테 배포시 서버 열람 가능(ec2에 접속하는 용도)
네트워크 설정 > 편집
4️⃣ 보안그룹이란? AWS 클라우드에서 네트워크 보안, 방화벽 역할
보안 그룹은 인바운드 및 아웃바운드 트래픽을 제어하는 방화벽 규칙이다. 각 보안 그룹은 포트 범위, 프로토콜 및 허용되는 IP 주소 범위를 정의할 수 있다.
인바운드 트래픽: 외부에서 EC2 인스턴스로 보내는 트래픽
아웃바운드 트래픽: EC2 인스턴스에서 외부로 나가는 트래픽
보안그룹을 설정할 때는 허용할 IP와 포트를 설정한다.
인바운드 규칙에 다음과 같이 HTTP 80번 포트를 사용하는 불특정 사용자에 대한 접근을 허용할 수 있다.
(백엔드 서버를 80번 포트에 띄울 예정)
IP란? 특정 컴퓨터의 주소
Port란? 한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소(프로그램끼리 어떤 통로를 통해 통신을 할 것인지)
외부에서 특정 컴퓨터 내부에 있는 Spring Boot라는 서버에 통신을 하고 싶다고 가정하면, 외부에서 IP주소만 알아서는 실행되고 있는 여러 프로그램 중 어던 프로그램과 통신을 해야할지 알 수가 없다. 그래서 특정 서버와 통신을 할때는 IP주소와 Port 번호를 알아야한다.
잘 알려진 포트?
규약을 통해 역할이 정해져 있는 포트 번호(권장)
22번 (SSH, Secure Shell Protocol) : 원격 접속을 위한 포트 번호, EC2 인스턴스에 연결할 때 22번 포트를 사용한다.
80번 (HTTP) : HTTP로 통신을 할 때 사용
443번 (HTTPS) : HTTPS로 통신을 할 때 사용
5️⃣ EBS(Elastic Block Storage)란?
EC2 안에 부착되어있는 일종의 하드디스크(파일을 저장할 공간)
스토리지 옵션 (Storage Options) - EC2 인스턴스에는 인스턴스 스토어, Amazon EBS 및 Amazon S3와 같은 다양한 스토리지 옵션
아후 인스턴스 시작
3) 인스턴스 확인
생성한 인스턴스의 정보는 다음을 확인하면 된다.
1️⃣ 인스턴스 정보
2️⃣ 인스턴스 보안그룹 확인
인바운드 규칙: 설정한것
아웃바운드 규칙: 기본적으로 모든 포트에 대해서 허용하겠다는 것이 디폴트
(보안그룹설정은 다음 번호에서 확인가능)
로컬에서 ec2를 연결할 때는 다음과 같은 보안그룹을 사용했다.
3️⃣ 모니터링
: 서버를 운영할때 자주 확인
4) 인스턴스 연결(접속)
1️⃣ EC2 인스턴스 연결을 통해 AWS에서 프롬프트 창을 열어 ubuntu에 접속하는 방법
2️⃣ SSH 클라이언트로 로컬 프롬프트 창을 열어 ubuntu에 접속하는 방법
$ chmod 400 "[키페어 pem 파일]"
$ ssh -i "[키페어 pem 파일]" [퍼블릭 DNS]
다음 코드를 작성하면서 프롬포트 창을 열어 ec2서버에 접속할 수 있다.
5) 탄력적 IP연결하기
EC2 인스턴스를 생성하면 IP를 할당받는다. 하지만 임시적인 IP이기 때문에 EC2 인스턴스를 잠깐 중지시켰다가 다시 실행시켜보면 IP가 바뀌어 있기 때문에 다시 실행시킬때마다 IP가 바뀌어 불편하다. 따라서 고정적인 IP를 할당받기 위해 단력적 UP연결이 필요하다.
기본값 사용>할당
작업 > 연결> 인스턴스 연결로 탄력적 IP주소 연결 가능(과금될 가능성이 있음)
▷ 참고한 블로그
https://bcp0109.tistory.com/356
AWS 1편: EC2 생성 후 Spring Boot 띄우기
Overview AWS EC2 인스턴스를 생성하고 Spring Boot 서버를 띄워보는 것까지 진행합니다. 주 목표는 서버를 외부에 제공하는 거라서 따로 배포 시스템을 구축하지 않고 단순히 빌드 파일을 복사해서 수
bcp0109.tistory.com