설명
Amazon Elastic Compute Cloud(Amazon EC2)
사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한 관리
사전 용어
인스턴스
가상 서버.
Amazon Machine Images (AMIs)
•
서버에 필요한 구성 요소(운영 체제와 추가 소프트웨어 포함)를 패키징하는 인스턴스용 사전 구성 템플릿.
•
EC2 인스턴스를 시작하는 데 필요한 정보가 들어있는 이미지 == EC2 복사본
•
사용 할 수 있는 대표적인 OS
◦
Amazon Linux2
◦
CentOS
◦
Red Hat Enterprise Linux
◦
Windows Server
◦
Ubuntu
인스턴스 타입
•
인스턴스의 다양한 CPU, 메모리, 스토리지, 네트워킹 용량 및 그래픽 하드웨어 구성.
Amazon Elastic Block Store (EBS) 볼륨
•
Amazon Elastic Block Store(Amazon EBS)를 사용하는 데이터에 대한 영구 스토리지 볼륨.
•
데이터를 저장하는 역할 (가상 저장 장치)
•
개념
◦
볼륨 ( volume ) : EBS의 가장 기본적인 형태로 OS에서 바로 사용 가능한 형태이다.
◦
이미지 ( Image ) : AMI(Amazon Machine Image)를 줄여 부르는 말. OS가 설치된 형태이며 이 AMI로 EC2 인스턴스를 생성한다
◦
스냅샷( Snapshot ) : EBS 볼륨의 전체 내용 중 특정 시점을 그대로 복사해 저장한 파일을 뜻한다. 따라서 EBS 볼륨의 백업 파일 성격을 가지고 있다. EBS 스냅샷은 EBS 볼륨을 백업하고 이전 내용으로 복원하고 싶을 때, 나만의 AMI를 생성하고 싶을 때, EBS 볼륨을 다른 리전으로 이전하고 싶을 때 사용한다.
◦
IOPS(Input/Output Operation Per Second) : 저장 장치의 성능 측정 단위. AWS에서는 추가 비용을 지불하고 높은 성능(IOPS)의 EBS를 생성할 수 있다
인스턴스 스토어 볼륨
•
인스턴스를 중단, 최대 절전 모드로 전환 또는 종료할 때 삭제되는 임시 데이터용 스토리지 볼륨.
키 페어
•
인스턴스에 대한 보안 로그인 정보.
•
AWS는 퍼블릭 키를 저장하고 사용자는 프라이빗 키를 안전한 장소에 저장합니다.
보안 그룹
•
인스턴스에 도달할 수 있는 프로토콜, 포트 및 소스 IP 범위와 인스턴스가 연결할 수 있는 대상 IP 범위를 지정할 수 있는 가상 방화벽.
인스턴스 생명 주기 ( Instance Life Cycle )
AMI로부터 실행이 되고나서 종료될 때까지 EC2가 거치는 과정
1) pending state
•
제일 처음 AMI가 실행이 되었을 때의 준비 상태
•
EC2를 가동하기 위해서 가상머신, ENI, EBS 등이 준비되는 과정이다.
2) running state
실제로 EC2를 사용할수 있는 상태를 말한다.
running 상태에서 할수 있는 것 3가지가 있는데 다음과 같다.
•
중지
◦
인스턴스를 잠깐 멈춰두는 것
◦
중지 중에는 인스턴트 요금 미청구
◦
단 EBS 요금, 다른 구성 요소(Elastic IP 등)은 청구
◦
중지 후 재 시작 할때 퍼블릭 IP가 변경됨 (프라이빗IP는 변경X, 해결하려면 탄력적 IP 사용)
◦
EBS를 사용하는 인스턴스만 중지 가능
•
재부팅
◦
인스턴스를 다시 시작 하는 것
◦
중지하고 다시 시작과는 달리, 재부팅 시 퍼블릭IP 변동 X
•
최대 절전모드
◦
메모리 내용을 보존해서 재 시작시 중단지점에서 시작할 수 있는 정지모드
◦
어떤 프로그램을 실행시켰을 때 데이터를 하드디스크에서만 가져오는 것이 아니라 메모리에 올려놓는 것
◦
컴퓨터/노트북의 최대 절전 모드와 같은 원리라고 보면 된다. 우리가 만일 프로그램을 이용하다 만일 프로그램이 켜 상태를 유지하면서 잠시 노트북을 꺼야한다면 최대 절전을 한다. 그리고 다시 노트북을 켰을때 아예 OS 재부팅되는게 아니라, 프로그램이 이어서 돌아가게 된다.
3) shutting-down state
인스턴스 종료 중
설정에 따라 EBS도 같이 종료 시킬 수도 있고 EBS는 남기고 인스턴스만 종료 할 수 있다.
4) terminated state
완전히 종료, 인스턴스가 영구적으로 삭제된다
인스턴스 미사용시 중지시켜두기만 해도 많은 비용 절감 할수 있다.
인스턴스 생성
1.
단계1: ec2 접속
2.
단계2: Launch Instance
3.
단계3: Namge and tags
생성될 인스턴스 이름
4.
단계4: Application and OS Images
생성될 인스턴스에 설치될 OS
•
select Ubuntu Server
•
결과 확인
5.
Instance type
생성될 인스턴스의 스펙(CPU & RAM 등)
•
t2.micro: 무료 인스턴스(컴퓨터)
6.
Key pair
생성될 인스턴스에 접속할 열쇠
•
Create key pair
•
생성된 key pair로 세팅됨
•
다운로드된 파일 확인
7.
Network settings
•
Inbound Security Group Rules: ssh 확인
8.
Configure storage & Launch instance
9.
생성된 인스턴스 및 Running 상태 확인
보안 그룹
인스턴스 연결
AWS 인스턴스에서 연결
•
인스턴스 연결
•
키페어는 필요없음
◦
프라이빗 IP 주소와 해당 접속 IP가 일치하는지 확인
CLI에서 연결
1.
Git Bash/Powershell 열기
2.
identity 폴더 생성
mkdir -p ~/identity # 폴더 생성
ls ~/identity # 폴더 확인
Bash
복사
3.
key pair 파일 확인
ls ~/Downloads/*.pem
Shell
복사
4.
key pair 파일 이동
# 파일 이동
mv ~/Downloads/hello-ec2-keypair.pem ~/identity/hello-ec2-keypair.pem
# 결과 확인
ls ~/identity
Shell
복사
•
맥 - 권한 변경
# pem 키 권한 변경 -> 600이 아닐 경우 보안 취약으로 판단
chmod 600 ~/identity/hello-ec2-keypair.pem
Shell
복사
5.
인스턴스 Public IP 복사
인스턴스 Public IP는 서버를 stop할때마다 변경됨!!
6.
ssh key 만들기
ssh-keygen -t rsa
# enter 세 번 탁! 탁! 탁!
Shell
복사
7.
ssh config 생성
# ssh key 확인
ls ~/.ssh
# ssh config 생성 및 작성
vim ~/.ssh/config
Shell
복사
8.
ssh config 작성 후 저장
# 아래 내용 추가 후 저장
Host hello-ec2
HostName 43.202.33.26 # 인스턴스의 Public IP 복사해서 넣기
User ubuntu
IdentityFile ~/identity/hello-ec2-keypair.pem
Shell
복사
9.
ssh config 생성
# ssh config 확인
ls ~/.ssh
Bash
복사
•
맥 - 권한 변경
# config 파일 권한 수정
chmod 440 ~/.ssh/config
Shell
복사
10.
접속
# hello-ec2 접속
ssh hello-ec2
# 진짜 연결하시겠습니까? yes 입력 후 Enter
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Shell
복사
11.
접속 확인
•
Private IP와 Shell에 표시된 IP가 같은지 확인
12.
접속 종료
exit
Shell
복사
VS Code에서 연결
1.
ssh/config파일 존재 여부 확인
2.
Dev Containers 설치
3.
Connect to Hos
4.
접속 Host 선택
5.
OS 선택
6.
접속 확인
7.
home 디렉토리 선택
8.
접속 인가
9.
IP 확인
10.
접속 종료
보안 그룹(Security Group)
1.
Instance의 Security Group 확인
2.
Inbound rules 확인
•
외부에서 내부(ec2)에 접속할 수 있는 Rule 정의
3.
Outbound rules 확인
•
내부(ec2)에서 외부로 접속할 수 있는 Rule 정의
NGINX
1.
ec2 접속
2.
apt-get update(ubuntu) / yum update(redhat - Centos, amazon)
~$ sudo apt-get update
Shell
복사
3.
install nginx
sudo apt-get install nginx -y
Shell
복사
4.
nginx server 실행 확인 및 시작
systemctl status nginx
sudo systemctl start nginx
Shell
복사
5.
Public IP 확인 (아직은 접속 안됌)
6.
Inbound rules 변경
•
Nginx Server(http TCP) Port: 80
•
apachi port : 8080
7.
nginx 접속