21-04-20 AWS 웨비나 첫날 노트정리
[AWS Builders 프로그램] 클라우드 기초교육 및 실습
- 교육 일자 : 2021. 04. 20(화)
- AWS에서는 컴퓨팅, 스토리지, 데이터베이스 및 여러 개발 관련 서비스들을 제공함
- 이 강의에서는 AWS의 서비스를 훑어보고 AWS의 보안 모델 등에 대해 배움
오전 강의 : AWS 서비스 톺아보기
열어보기
1. Amazon EC2
- 웹 호스팅, 인증 서비스 등을 지원
- 컴퓨팅 자원을 탄력적으로 이용 가능 (Instance Stop을 통해 비용 절감 가능)
- 다양한 AWS 내 다른 모듈들과 혼용 가능
2. Amazon EBS(Elastic Block Store)
- 인스턴스용 영구 블록 스토리지로 복제를 통해 보호됨
- 데이터 소실을 대비해 두 개 이상의 가용영역을 사용하는 것을 권장함
3. Amazon S3
- One Drive, Dropbox와 유사한 서비스
- 데이터는 버킷 내에 객체로 저장됨 (파일 시스템이 아님)
- 무제한 스토리지(단일 객체는 5TB로 제한됨)
- 객체에 대해 빠르고 내구성과 가용성이 높은 키 기반 액세스
- CLI가 S3 API를 통해 RESTful 요청을 전송하면 S3 버킷이 객체를 반환
- 백업 및 스토리지, 애플리케이션 및 미디어 호스팅, 소프트웨어 전송 등에 사용 가능
- Glacier 클래스는 매우 저렴하게 데이터를 보관할 수 있고 장기 백업이 가능함 (보관용이기 때문에 읽기에는 비싼 요금이 듦)
아키텍처 구성 예시: EC2 웹 어플리케이션에 S3 버킷을 통해 정적 콘텐츠를, EBS 볼륨을 통해 파일을 저장하는 DB로 사용, EC2를 호스팅하는 인스턴스 스토어를 사용
4. Amazon VPC(Virtual Private Cloud)
- 인스턴스 수준에서 작용하는 보안 그룹을 설정하여 인/아웃바운드 규칙을 따로 설정 가능
- 보안 그룹은 화이트 리스트 방식으로 거부 규칙을 지정할 수는 없음
- 기본 값으로 인바운드 허용 안 함 / 아웃바운드 허용을 가짐
5. AWS CloudWatch
- AWS 리소스, 실행중인 어플리케이션등에서 지표등을 수집하거나 추적하며 사용자에게 알림을 전송할 수 있음
6. Amazon Relational DB service
- 클라우드에서 RDBMS의 설정, 운영 및 확장을 손쉽게 해주는 DB 서비스
- Amazon Aurora, PostgreSQL, MariaDB, ORACLE 등 6가지의 DB를 사용 가능
7. Amazon SNS(Simple Notification Service)
- 분산/서버리스 어플리케이션을 위한 완전 관리형 게시/구독 메시징(푸쉬)
8. Amazon CloudFront
- 빠르고 안전한 글로벌 콘텐츠 전송 네트워크(CDN)
- 사용자가 요청한다면 엣지 로케이션으로 라우팅하고 캐시에 있다면 사용자에게 바로 반환, 없다면 S3 버킷에 원본 파일을 요청해 캐싱하고 사용자에게 반환
예시) 미디어 스트리밍 서비스
- 인코딩된 비디오 수집 → 여러 형식의 비디오 코드 변환 → 카탈로그 비디오 메타 데이터 → 클라이언트로 비디오 스트리밍
- AWS Lambda에 코드를 업로드 → 이벤트 소스에서 코드가 트리거되도록 설정 → 트리거된 경우에만 Lambda에서 코드 실행 → 사용한 컴퓨팅 시간에 대해서만 비용 지불
오전 강의 : AWS의 보안
열어보기
1. 클라우드 자체의 보안
- 호스트, 네트워크, 소프트웨어, 시설
- AWS 글로벌 인프라 보호는 최고 우선 순위
- 타사 감사 보고서 제공
2. 클라우드 내부의 보안
- 무엇을 저장해야하는가
- 어떤 AWS 서비스를 사용해야 하는가
- 어느 리전에 저장해야 하는가
- 콘텐츠 형식과 구조는 어떻게 되는가
- 누가 액세스 할 수 있는가
3. 인증 및 권한 관리
- IAM(Identity and Access Management)를 통해 AWS 리소스에 대한 액세스를 안전하게 제어 (추가비용 없음)
- IAM 사용자, 그룹, 역할을 나누어 적용할 수 있음
- IAM 정책을 통해 IAM 사용자, 그룹 또는 역할이 AWS CLI나 S3 버킷에 접근하거나 조작할 수 있게 된다
- AWS 계정 루트 사용자는 모든 AWS 서비스에 대한 완전한 액세스 권한을 가짐 → 루트 사용자 액세스 키를 삭제, IAM 사용자를 생성하여 관리자 액세스 권한을 부여하고 IAM 자격 증명을 사용하여 AWS와 상호작용하도록 권장됨
오전 강의 : AWS의 요금 정책
열어보기
- 사용량에 따라 지불, 예약을 통한 비용 절감, 사용량이 많을수록 비용 절감
- 온디맨드, NURI(No up-front), PURI(Partial up-front), AURI(All up-front)
- 서비스마다 요금이 다름
EC2의 네 가지 구매 유형
- 온디맨드 인스턴스 (시간/초당 청구, 단기)
- 예약 인스턴스 (1~3년 약정 할인)
- 스팟 인스턴스 (최대 90% 할인되는 예비 AWS 용량, 시작 및 종료 시간이 자유로은 애플리케이션)
- 전용 호스트 (고객 전용 물리서버, 특정 규정 준수 요구사항이 있는 애플리케이션)
S3의 요금 모델
- 사용된 스토리지 양
- 리전
- 스토리지 클래스
- 요청 수 및 유형 (GET, PUT, COPY)
- 리전 외부로 전송된 데이터의 양
Trusted Advisor
- 비용 절감 및 성능 개선 가능
AWS Support
- Basic, Developer, Business, Enterprise 클래스로 나뉘며 모든 사용자는 기본값으로 Basic에 해당됨
오후 강의 : AWS 실습
열어보기
실습 과정
- 네트워크 구성
- 웹 서버 생성
- 로드 밸런서 구성
- 모니터링 (옵션)
- 오토 스케일링 (옵션)
- 정적 웹 사이트 호스팅 (옵션)
AWS 시작하기
- 10분 자습서로 AWS 빠르게 시작
- AWS 프리 티어 (12개월 무료)
AWS 실습
- 네트워크 구성하기
- VPC 콘솔에서 VPC 마법사 시작
- 단일 퍼블릭 서브넷이 있는 VPC
- 해당 서브넷에 대한 CIDR 블록을 지정
- CIDR이란? 참고자료
CIDR(Classless Inter-Domain Routing)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한 최신의 IP주소 할당 방법으로 CIDR는 기존의 IP 주소 할당 방식이었던 네트워크 클래스를 방법을 대체한 방식.
CIDR는 IP Address의 영역을 나눌 때 기존방식보다 유연하게 자신이 원하는 Network Address와 Host Address를 나눌 수 있다.
서브넷 메뉴에서 서브넷 생성으로 추가 서브넷 생성 시작
VPC 아이디에서 방금 생성한 VPC를 선택(추가 서브넷이므로)
CIDR는 기존 서브넷의 IP와 앞자리 두 블럭(고정 범위의 네트워크 주소)이 같도록 하고 뒷 두 블럭(가변 범위의 호스트 주소)이 다르게 설정
VPC 라우팅 테이블을 통해 방금 생성한 VPC의 라우팅 테이블 ID와 동일하도록 설정
- 보안 그룹 생성하기
- 보안 그룹 메뉴에서 보안 그룹 생성
- 보안 그룹 이름과 설명을 작성하고 1번에서 생성한 VPC ID로 설정
- 인바운드 규칙에 HTTP/SSH을 위치 무관(소스)으로 설정
- 웹 서버 생성하기
- EC2 콘솔에서 인스턴스 시작으로 인스턴스를 생성
- Amazon Machine Image(AMI) 선택에서 Amazon Linux 2 AMI를 선택
- t2.micro(프리 티어 사용 가능)를 선택한 후, 다음: 인스턴스 세부 정보 구성 버튼을 클릭
- 네트워크와 서브넷을 선택하고 퍼블릭 IP 자동 할당을 활성화로 설정
- 고급 세부 정보에
#include https://s3.amazonaws.com/immersionday-labs/bootstrap.sh
를 입력 - 태그 추가까지 넘어가 키와 값을 입력
- 보안 그룹 구성에서 기존 보안 그룹 선택을 통해 2번에서 만든 보안 그룹을 선택하고 검토 및 시작
- 새 키 페어 생성을 선택하고 키 페어 이름을 입력한 후 키 페어 다운로드
- 인스턴스 시작으로 인스턴스를 생성(인스턴스 연결로 연결하여 CLI를 볼 수 있음)
- AMI 생성하고 AMI 기반 인스턴스 생성하기
- Amazon Machine Image(AMI)는 인스턴스를 시작하는데 필요한 정보를 제공
- 인스턴스를 선택하고 우측 상단 작업 메뉴에서 이미지 및 템플릿 → 이미지 생성
- 이미지 생성 페이지에서 이미지 이름을 입력하고 우측 하단의 이미지 생성 버튼을 클릭
- 왼쪽 AMI 메뉴에서 상태가 available인지 확인하고 시작하기
- 단계 3에서 VPC 네트워크를 선택하고 추가 서브넷을 서브넷으로 설정 및 퍼블릭 IP 자동 할당을 활성화로 설정
- 단계 5에서 태그를 추가하여 값을 입력하고 보안 그룹을 설정(3번의 보안 그룹 설정 과정과 동일)
- 키 페어는 위에서 생성한 키 페어를 사용
- 로드밸런서(Elastic Load Balancing) 구성하기
- 로드밸런서는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킴
- 로드 밸런서 메뉴에서 Load Balancer 생성
- Load Balancer 유형 선택에서 Application Load Balancer를 선택
- 1단계에서는 로드 밸런서 이름과 ip 주소 유형으로 ipv4를 선택, 리스너로는 HTTP가 선택되었는지 확인
- 가용 영역 파트에서 VPC를 선택하고 가용 영역을 체크하여 서브넷들을 선택
- 단계 3 보안 그룹 구성에서 새 보안 그룹 생성 선택하고 이름과 설명을 작성한 후 HTTP 유형의 위치 무관(소스)를 선택
- 단계 4 라우팅 구성에서 이름을 작성하고 인스턴스를 대상으로 하는 HTTP 프로토콜로 설정
- 단계 5 대상 등록에서 두 개의 인스턴스를 선택하고 등록된 항목에 추가
- 검토 및 생성
- 보안 그룹 메뉴 → 인바운드 규칙 편집
- 로드밸런서의 트래픽만 받을 수 있도록 소스 부분에서 사용자 지정 → 로드 밸런서 보안 그룹을 선택
- 밑의 HTTP 규칙을 삭제
- 로드밸런서가 active로 상태가 변하면 DNS로 접속 해 보기