AWS 핵심 총정리
(참고) egoing - AWS 강의
Contents
- Intro
- S3
- CloudFront
- RDS
1. Intro
(1) 수업 소개
( 자주 사용하는 핵심 기능만 확인할 것 )
클라우드
- 남의 컴퓨터를 빌려서 원격 제어를 통해서 사용 ( 호스팅 )
- ex) AWS의 EC2 ( Elastic Compute Cloud )
왜 직접 보유안하고, 빌려서 사용…?
-
“필요한 만큼”만 사용하고 반환 ( 비용 효율성 )
-
컴퓨터를 임대해주는 것 이상으로, 필요한 소프트웨어까지 설치해서 제공
RDS ( Relational Database Service )
- AWS에서 제공하는 데이터 보관 서비스
- 높은 가용성으로 안정성 확보 가능!
(2) 수업 목적
본인 소유 컴퓨터의 OS : mac
지금 잠깐 필요한 OS : windows
\(\rightarrow\) 잠깐만 빌려쓰고, 바로 돌려주면 어떨까?
AWS에서 이를 빌려서 사용해보자!
(3) 나에게 필요한 서비스 찾기
좌측 상단의 “제품” 클릭
- 주요 서비스 : EC2, RDS, S3 …
(4) AWS 요금 및 프리티어 서비스
AWS 요금
AWS의 요금체계에 대해서 알아보자 ( Pricing / Plan )
종류
- 온디맨드
- 스팟 인스턴스
- 예약 인스턴스
- 전용 호스팅
-
사용하려는 운영체제부터 확인하자!
-
빌릴 지역(리전)을 고르자!
- AWS는 다양한 지역(리전)에 컴퓨터를 보유하고 있다
- 컴퓨터의 성능을 고르자!
- 메모리, 스토리지 등 적절한 것 고르기!
데이터 전송 비용
- 인터넷 -> EC2 : 무료
- EC2 -> 인터넷 : 유료
기타
-
컴퓨터 저장용량에 따라 다른 요금
-
고정 IP사용 시 추가 요금 부과
프리티어
12개월 무료 / 항상 무료 등등
- EC2 : 750 hours
- 빌려주는 인스턴스 : t2 micro instance
- S3 : 5Gb
- 기타 등등…
(5) 회원가입
-
해외결제 가능한 신용카드 필요!
-
회원 가입 후, 콘솔로 로그인
(6) EC2 사용
a) EC2 켜기
- 서비스 > 컴퓨팅 > EC2
- 인스턴스 = 컴퓨터 1대
- 설치하기
- step 1) 필요한 운영체제 (년도) 선택하기
- step 2) 성능 선택하기 ( free-tier 유의 )
- step 3) 시작을 누르면, 키 페어 생성
- key 이름 지정
- key 페어 다운로드 (
.pem
형식의 파일 )- 잃어버리면 재발급 불가! 잘 관리하기!
- step 4) 인스턴스 상태가 pending에서 running으로 바뀌면, 잘 실행된 것!
b) EC2 원격제어
위에서 생성한 인스턴스에 (원격으로) 접속하기
- step 1) 우 클릭 후, “연결” 클릭
- (a) “원격 데스크톱 파일 다운로드” 버튼 & (b) “암호 가져오기” 버튼있음
- (a) 버튼 : 여기서 다운된 파일을 사용하여 접속 가능!
- (a) “원격 데스크톱 파일 다운로드” 버튼 & (b) “암호 가져오기” 버튼있음
- step 2-1) mac을 쓴다면…
- 2-1-1) microsoft remote desktop mac 구글링 후 다운로드
- 2-1-2) (a)를 통해 다운로드된 프로그램을 microsoft remote desktop 통해서 실행하기
- 2-1-3) (b)에서 위의 ‘pem’키를 통해 뜨게되는 비밀번호 복붙하기
- step 2-2) window를 쓴다면..
- 2-2-1) (a)를 통해 다운로드된 프로그램을 그냥 실행
- 2-2-2) (b)에서 위의 ‘pem’키를 통해 뜨게되는 비밀번호 복붙하기
c) EC2 끄기
안 쓸때는 꺼야지…?
-
중지 : 컴퓨터의 전원 끄기 ( 데이터 유지 O )
-
상태 : stopped
-
참고로, 다시 시작하면 ip가 재할당됨
( 즉, 위의 b)를 다시 해야함 )
-
-
종료 : 컴퓨터 버리기 ( 데이터 유지 X )
- 상태 : terminated
(7) OTP 보안
IAM ( Identity & Access Management )
- 사용자 & 사용자 권한을 관리하는 서비스
보안 상태 확인 가능
- ex) 루트계정에서 MFA 활성화
Multi-Factor Authentication
- id & pw 입력으로 끝나는 것이 아니라,
- 원타임 pw 를 추가적으로 입력해야! ( 정해진 시간 내에 입력해야 )
- 가상 MFA 디바이스 선택
- ex) Google OTP 다운로드 후, 6자리 입력하기!
(8) AWS 계정 종료
-
우측 상단 > ID > 내 계정 > Close Account (계정을 닫다)
-
계정 폐쇄 후, 90일 이내에 다시 오픈할 수 있음!
2. S3 ( Simple Storage Service )
(1) 수업 소개
-
역할 : 파일 보관
- 장점 : 높은 내구성, 가용성, 확장성
- 인터넷에 연결도 되어있어서, 누구나 다운받을 수도 있음 ( 파일서버로서의 역할도 OK )
(3) 구성 요소
3인방
- 버킷 (Bucket)
- 하나의 project관련 저장소
- 폴더 (Folder)
- 하나의 버킷에 여러 폴더 존재
- 오브젝트 (Object)
- 폴더 안에는 object (파일 및 관련 정보) 존재
(4) 버킷 생성
서비스 > 스토리지 > S3
버킷 만들기
- (1) 버킷 이름 설정
- (2) 리전 설정
- (3) 기타
- 버전 관리 : 동일 버킷 내에 한 객체의 모든 버전을 보관할지 여부
- 서버 엑세스 로깅 : 보킷에 대한 엑세스 요청 기록
버킷의 퍼블릭 엑세스 설정
(5) 버킷 읽기, 수정, 삭제
[버킷 읽기] 버킷 클릭을 통해, 디렉토리/파일 확인 가능
[버킷 수정] 이름은 변경 가능, 속성은 변경 가능
- 이름 오른쪽의 빈 공간 click!
[버킷 삭제] 클릭 후 삭제 누르기!
- 버킷의 이름을 typing 후, 확인 누르기
(6) 폴더 & 객체 파일
폴더 ( 디렉토리 )
버킷 내의 디렉토리를 생성하는법은?
- 개요 > 폴더 만들기 > 폴더 명 지정 > 저장
이름 바꾸려면..?
- 원하는 이름의 새 폴더 생성
- 기존 폴더의 내용을 새 폴더로
- 기존 폴더 삭제
객체 파일
객체 생성(업로드) 방법은? ( 객체 = 파일 )
-
업로드 버튼 클릭
- 드래그 & 드랍
- 스토리지 클래스 선택
- 업로드!
업로드 파일 수정하려면?
- 우 클릭 후, 관련 속성/권한 수정 가능
업로드 파일 삭제하려면?
- 우 클릭 후 삭제
(7) 공유와 권한
위에서 업로드한 객체를 공유하기 위해서는??
- 버킷명 클릭 > (개요) 링크 복사 … 접근이 거부됨! why??
파일의 (권한)을 클릭하면, 권한을 확인할 수 있음
- “다른 AWS 계정에 대한 엑세스”
- “퍼블릭 엑세스”
- 이를 클릭 후, “객체 읽기”를 check하면, 위 방식을 통해 공유 가능!
OR…위 과정을 한번에 하려면,
- 파일 우 클릭 후, “퍼블릭으로 설정” 클릭하기!
(8) 스토리지 클래스
- 스탠다드
- 자주 엑세스 하는 데이터
- 스탠다드-IA ( = Infrequent Access )
- 수명이 길고, 자주 엑세스하지 않는 데이터
- 가용영역 \(\geq\) 3
- 단일영역-IA
- 수멍이 길고, 자주 엑세스하지 않으며, 중요하지 않은 데이터
- 가용영역 = 1
- 중복 감소 (권장안함)
- 자주 엑세스하는 중요하지 않은 데이터
- Amazon Glacier
- 법적으로 보관해야할 데이터 ( 꺼낼 일은 거의 X )
- 데이터 불러오는데에 몇 시간 걸림
3. CloudFront
(1) 수업 소개
Cache
사용자의 요청마다, 매번 데이터를 전송해줘야…? NO!
한번 전송해주고, 한 동안은 그 쪽 부근에서 저장하고 있어라!
\(\rightarrow\) Cache Server
CDN
Content Delivery Network
- 전 세계에 있는 어디든, 1초 안에 빠르게 접속할 수 있도록!
CloudFront = Cache Server + CDN
(2) CloudFront 생성
Network & CDN > Cloud Front > Create Distribution
용어 정리
-
Web Server는 Cloud Front에 정보를 제공하고,
이제 그 이후로는 Cloud Front가 전 세계로 나눠주므로,
Web Server는 origin, Cloud Front는 distribution이라고 함
Create Distribution
-
Origin Settings
-
origin domain name = 웹 서버의 주소
( ip, http말고 “도메인”명만 입력해야 )
-
http port
-
-
Distribution Setings
- CDN 관련 설정들
Cloud Front는 빠르게 보여줄 수 있으나..
Web server의 내용이 변경되도 바로바로 반영되지는 않는다!!
따라서, 이제 Cache를 컨트롤하는 방법에 대해서 알아볼 것!
(4) Cache 설정
origin의 내용이 바뀌었음에도 불구하고, distribution이 아직 이를 반영하지 못하는 문제!
Cloud Front Distributions > CDN 클릭 > Behaviors > edit
- object caching
- use origin cache headers 클릭
cache-control : max-age=60
- 60초 동안은 유효, 60초 동안은 웹서버의 내용 동일!
(5) CDN
전 세계의 유저들에게 빠르게 접속할 수 있게 해주고 싶으면?
CloudFront는 디폴트로 CDN기능을 가지고 있다!
- 전 세계에 흩어져 있는 edge location을 통해 제공
- origin server
- edge location # 1
- edge location # 2
- …
- edge location # n
4. RDS
(1) 기본 소개
Relational Database Servies ( 관계형 DB)
사용하는 이유? : “managed (관리된)”
- 데이터베이스를 빠르고 안전하게 지켜줌
다룰 내용 :
- DB 만들고, 상태를 파악하고, 설정을 변경하고, 삭제하기
(2) 데이터 베이스 생성
Database > RDS
인스턴스 : database server 컴퓨터
데이터 베이스 생성
- 엔진 옵션 선택 ( Amazon Aurora, MySQL, MaraiDB, PostgreSQL, Oracle, Microsoft SQL Server )
- DB 엔진 버전 선택
- DB 인스턴스 클래스 클래스
- db 서버 컴퓨터의 성능
- 다중 AZ 배포
- AZ = Availability Zone (가용성 지역)
- Region 내의 여러 AZ
- 컴퓨터가 여러 AZ에 걸쳐서 저장됨 ( 데이터 유실, 서비스 중지의 방지 )
- 단점 : 비용 up
- 스토리지 유형
- 범용(SSD) : 저렴하지만, 쌈
- 프로니저닝된 IOPS
- 할당된 스토리지 : 클 수록 빨라짐
기타 : 손 쉽게 Scale Up 가능
기본 정보
-
DB 인스턴스-식별자 : db 이름
-
마스터 사용자 이름 : 사용자 이름
-
마스터 암호
네트워크 및 보안
-
VPC : AWS 내에서, 외부로부터 분리된 내부 네트워크
- 같은 VPC안에 여러 ec2 등을 설치 가능
-
서브넷 그룹 : default
-
퍼블릭 엑세스 가능성
- 외부에서 직접 RDS에 접속 가능하게 할 지 결정
-
보안 그룹 :
-
같은 vpc 안에 있다고 하더라도,그 안에서 한번 더 보호해줌
( 특정 ec2만 rds에 접속할 수 있도록 묶어줄 수 있음 )
-
(3) 접속 1 : public
RDS를 통해 db server 컴퓨터를 생성하였다.
이 컴퓨터에 접속하는 2가지 방법 :
-
public : 덜 안전 / 쉬움
-
private : 안전 / 보다 어려움
public access 가능성 예/아니오 선택을 통해!
연결 > 엔드포인트 : 이 컴퓨터의 주소
연결 > 포트 : 3306
보안그룹 > 인바운드/아웃바운드
- 인바운드 : db server로 “들어옴”
- 아웃바운드 : db server에서 “나감”
( 클라이언트를 허용해주기 위해, “인바운드”를 설정해줘야 )
MySQL/Aurora
,TCP
,3306
,위치 무관
or내 IP
mysql -h 엔드포인트 -u 아이디 -p ( 엔터 후 비번 입력 )
(4) 접속 2 : 비공개
보안 그룹 내의 ec2만 접근하게 허용해주는 경우!
우선, 위에서 설정했던 “퍼블릭 엑세스”를 “아니오”로 끈다
보안그룹 > 인바운드 > 지우기 ( 아무도 접근 불가 )
ec2 생성
- 각종 유형 다 설정하고 ( 성능, 이름 등 )
- 네트워크 : RDS와 같은 vpc로 설정!!!
이렇게 설정된 컴퓨터의
- IPv4 퍼블릭 IP
- 퍼블릭 DNS
둘 중 아무거나 하나를 통해서 이 ec2 컴퓨터에 접속!
ssh ubuntu@[퍼블릭 DNS] -i [비밀번호 pem키 경로]
sudo apt update
sudo apt install mysql-client
rds 다시 들어가서 endpoint 복사
mysql -h [엔드포인트 주소] -u [유저 이름] -p ( 비번 누르고 엔터 )
현재 같은 vpc에 있기는 하나, 보안그룹 때문에 접속 실패!
rds > 보안 그룹 > 인바운드 > 특정 보안그룹 선택(or 생성) > 편집
- ec2 인스턴스 > iPv4 퍼블릭 IP ….. 를 등록
- ec2 인스턴스 > 보안 그룹 ….를 등록해도 good
- 보안 그룹 주소 copy
- 인바운드 규칙 편집을 통해, ec2의 보안그룹 주소를 붙여넣는다
(5) 모니터링
RDS > cloud watch
- CPU 사용률, DB 연결, 여유 스토리지 공간 등 확인 가능
(6) 백업과 복원
RDS > 인스턴스 > 인스턴스 및 IOPS > 백업 및 복원
- 백업 자동화 : 백업 여부 & 주기
- 백업 기간 : 언제 백업을 할지
- 최근 복원 시간 ( 5분 단위로 갱신 )
RDS > 스냅샷
- 백업된 기록들을 확인할 수 있음
인스턴스 > 인스턴스 체크 > 우측 상단의 “스냅샷 만들기”
- 이를 통해, 스냅샷을 남길 수 있음