Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions content/zerofunc/1주차-섹션3. AWS 시작하기.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# AWS 클라우드 개요 - 리전 및 AZ
- AWS는 세계 여러 곳에 다양한 리전을 가지고 있습니다. 글로벌합니다.
- 프라이빗 네트워크로 리전끼리 연결되어 있습니다.

## 리전
- 리전이란? 데이터 센터의 집합입니다.
- 대부분의 서비스들은 특정 리전의 종속적입니다.
- AWS 리전 선택에 미치는 영향을 미칠 수 있는 요인들
- 법률 준수
- 간혹 어떤 정보들은 대상 국가 내에 데이터가 저장되기를 원합니다.
- 지연 시간 (레이턴시)
- 유저와 가까운 리전을 선택하여 레이턴시를 줄입니다.
- 사용 가능한 서비스
- 특정 리전에는 특정 서비스가 없을 수 있습니다.
- 요금
- 리전마다 요금이 다릅니다.
- 서비스 요금 페이지를 참고하여 비교할 수 있습니다.

## 가용 영역

- 한 리전 내에 일반적으로 3~6개의 가용 영역이 존재합니다.
- 가용 영역은 하나 또는 두 개 이상의 개별적인 데이터 센터로 구성됩니다.
- 가용 영역들은 서로 분리되어 있습니다 (재난 상황 대비).
- 높은 대역폭의 초저지연 네트워크로 서로 연결되어 리전을 형성합니다.

## Edge Locations

- AWS는 40여 개의 90개 이상의 도시에 400개가 넘는 전송 지점을 가지고 있습니다.
- 최소 지연 시간으로 최종 사용자에게 콘텐츠를 전달하는 데 유용합니다.

## AWS Console 투어

- AWS의 글로벌 서비스:
- IAM
- Route 53
- CloudFront
- WAF
- 리전 종속적인 AWS 서비스:
- EC2
- Elastic Beanstalk
- Lambda
- Rekognition
- 리전별로 사용 가능한 서비스는 아래 링크에서 확인할 수 있습니다
- [https://aws.amazon.com/ko/about-aws/global-infrastructure/regional-product-services/](https://aws.amazon.com/ko/about-aws/global-infrastructure/regional-product-services/)
119 changes: 119 additions & 0 deletions content/zerofunc/1주차-섹션4 : IAM 및 AWS CLI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
## IAM 소개 : 사용자, 그룹 정책

- 루트 계정은 기본적으로 생성됩니다.
- 루트 계정을 사용하지 말고 사용자 계정을 사용해야 합니다.
- 그룹을 생성하여 사용자들을 그룹에 배치해야 합니다.
- 그룹에는 오직 사용자만 배치할 수 있습니다.
- 그룹에 속하지 않은 사용자도 있을 수 있습니다.
- JSON 문서를 통해 사용자 또는 그룹에 AWS 서비스의 권한 정책을 설정할 수 있습니다.
- AWS는 최소 권한의 원칙을 적용합니다. 즉, 꼭 필요한 것 이상의 권한을 부여하지 않습니다.
- IAM은 글로벌 서비스이므로 리전 선택이 불가능합니다.
- 보안상의 이유로 루트 계정 대신 사용자 계정을 생성하여 사용하는 것이 좋습니다.

## IAM 정책
- 정책 구조
- Version: 보통은 2012-10-17로 정책 언어 버전이 설정됩니다.
- Id: 정책을 식별하는 ID (옵션)
- Statement:
- 하나 이상의 문장이 포함될 수 있습니다.
- Sid: 문장의 식별자 (옵션)
- Effect: 특정 API에 대해 Allow 또는 Deny를 설정합니다.
- Principal: 정책이 적용될 사용자, 계정 또는 역할을 정의합니다.
- Action: Effect에 기반하여 Allow 또는 Deny될 API를 설정합니다.
- Resource: Action이 적용될 리소스 목록을 정의합니다.
- Condition: Statement가 언제 적용될지를 결정하는 조건 (옵션)
- *의 의미: AWS에서 *은 모든 것을 의미합니다.
- Action: * = 모든 액션을 허용합니다.
- Resource: * = 모든 리소스에 대해 허용합니다.

## IAM - 비밀번호 정책
- 강력한 비밀번호
- 최소 비밀번호 길이 설정
- 대문자, 소문자, 숫자, 특수문자 포함 요구
- 비밀번호를 직접 변경할 수 있는지 여부 설정 가능
- 일정 기간마다 비밀번호 변경 (비밀번호 유효 기간 설정)
- 이전에 사용한 비밀번호나 이미 가지고 있는 비밀번호 사용 방지

## MFA
- MFA는 비밀번호와 보안 장치의 조합입니다.
- MFA의 이점:
- 비밀번호가 해킹당하더라도 MFA 디바이스가 별도로 존재하므로 보안이 강화됩니다.

AWS 내 MFA 종류

- Virtual MFA device
- 가상 장치
- Google Authenticator, Authy 등
- 사용하기 쉬운 방법
- Universal 2nd Factor (U2F) Security
- YubiKey by Yubico
- 물리적 장치
- 단일 보안 키를 사용하여 여러 루트 및 IAM 사용자를 지원합니다.
- Hardware Key Fob MFA Device
- Gemalto에서 제공
- Hardware Key Fob MFA Device for AWS GovCloud (US)
- SurePAssID에서 제공

# AWS 액세스 키, CLI 및 SDK
- AWS에 액세스하는 방법은 세 가지입니다.
- AWS Management Console: 비밀번호 + MFA로 보호됨
- AWS Command Line Interface (CLI): 액세스 키로 보호됨
- AWS Software Development Kit (SDK): 코드에서 액세스, 액세스 키로 보호됨
- AWS 콘솔에서 액세스 키를 생성할 수 있습니다.
- 액세스 키는 비밀번호와 같아서 공유하면 안 됩니다.
- Access Key ID는 마치 사용자 이름과 같습니다.
- Secret Access Key는 마치 비밀번호와 같습니다.

# AWS CLI란?
- 명령줄 쉘에서 명령어를 사용하여 AWS 서비스와 상호작용할 수 있게 해주는 도구입니다.

# AWS SDK란?
- AWS Software Development Kit의 약자
- 특정 언어로 작성된 라이브러리 모음입니다.
- AWS 서비스를 프로그래밍 방식으로 접근하고 관리할 수 있습니다.

# AWS Cloud Shell
- AWS에서 무료로 사용할 수 있는 쉘입니다.
- 장점:
- 자격 증명이 클라우드 쉘에서 실행됩니다.
- 기본 리전은 로그인한 리전으로 설정됩니다.
- CloudShell에서 작성한 파일은 다시 실행해도 저장됩니다.
- 파일 업로드 및 다운로드가 가능합니다.
- 폰트 크기 변경이 가능합니다.
- 새로운 탭을 생성할 수 있습니다.

# AWS 서비스에 대한 IAM Role
- AWS 서비스에 권한을 부여해야 하며, 이를 위해 IAM Role을 부여합니다.
- 예시: EC2 인스턴스를 생성한 후, EC2 인스턴스가 AWS에 있는 다른 리소스에 접근하려 할 때 IAM Role을 사용하여 권한을 부여합니다.

# IAM 보안 도구
- IAM Credentials Report (계정 수준)
- 계정 내 사용자와 자격 증명 상태를 포함한 보고서입니다.
- IAM Access Advisor (사용자 수준)
- 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간을 확인할 수 있습니다.

이 도구들을 사용하여 사용되지 않는 권한을 찾아 불필요한 권한을 줄이고 최소 권한의 원칙을 적용할 수 있습니다.

# IAM 모범 사례

- AWS 계정을 설정할 때를 제외하고는 루트 계정을 사용하지 않습니다.
- 한 명의 AWS 사용자는 한 명의 물리적 사용자와 매핑됩니다.
- 사용자는 그룹에 할당하고, 그룹에 권한을 할당하여 보안을 그룹 수준에서 관리합니다.
- 강력한 비밀번호를 사용합니다.
- 다중 인증(MFA)을 사용합니다.
- AWS 서비스에 권한을 부여할 때는 Roles를 생성하여 부여하는 것이 좋습니다.
- 프로그래밍 액세스 방식을 사용할 때는 액세스 키를 사용합니다. (CLI/SDK)
- 계정의 권한을 감시하려면 IAM 자격 증명서 또는 IAM 액세스 관리자 기능을 사용할 수 있습니다.
- **IAM 사용자와 액세스 키는 절대로 공유하지 않습니다.**

# IAM 요약

- Users: 한 명의 물리적 사용자와 매핑됩니다. AWS Console을 위한 비밀번호를 가집니다.
- Groups: 사용자만 포함됩니다.
- Policies: 사용자 또는 그룹에 대한 권한을 정의하는 정책 또는 JSON 문서를 첨부할 수 있습니다. 역할도 만들 수 있습니다.
- Roles: AWS 서비스에 대한 권한을 부여합니다.
- Security: MFA + 비밀번호 정책
- AWS CLI: 커맨드 라인에서 AWS 서비스를 관리합니다.
- AWS SDK: 프로그래밍 언어로 AWS 서비스를 관리합니다.
- Access Keys: CLI 또는 SDK를 통해 AWS 서비스에 액세스할 수 있는 액세스 키를 생성할 수 있습니다.
- Audit: IAM 사용량을 감사할 수 있습니다. IAM 자격 증명 보고서 및 IAM Access Advisor를 사용할 수 있습니다.
206 changes: 206 additions & 0 deletions content/zerofunc/1주차-섹션5 : IAM 및 AWS CLI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# AWS 예산 설정

- 관리자 액세스 권한이 있어도 결제 데이터에 액세스할 수 없습니다.
- 루트 계정으로 접근하면 가능합니다.
- **IAM 사용자 및 역할의 결제 정보 액세스**
- 이 옵션을 활성화하면 IAM 사용자도 결제 데이터에 접근할 수 있습니다.
- 예산에 대한 알림을 받을 수 있습니다.
- **Zero spend budget** 템플릿을 사용하면 결제 비용이 0.01달러를 초과하는 순간 알림이 옵니다.
- **월별 예산**을 설정하여 해당 예산을 초과하면 알림을 받을 수 있습니다.
- 예산의 85%를 소모했을 때, 예산의 100%를 소모했을 때, 예상 지출이 100%에 이를 것으로 예상되는 경우 알림을 받을 수 있습니다.

---
# EC2 기초
- **Elastic Compute Cloud** = AWS에서 제공하는 서비스형 인프라스트럭처(Infrastructure as a Service)
- 다양한 기능을 제공합니다:
- 가상 머신 대여 (EC2)
- 가상 드라이브에 데이터 저장 (EBS)
- 로드 분산 (ELB)
- 오토 스케일링 그룹을 통해 서비스의 크기 조정 가능 (ASG)

## EC2 크기 및 구성 옵션
- OS : Linux, Windows, 또는 Mac OS
- CPU
- RAM
- 저장 공간
- 네트워크 연결 (EBS & EFS)
- 하드웨어 (EC2 인스턴스 스토어)
- 네트워크 카드 : 카드 속도, 공인 IP 주소
- 방화벽 규칙 : Security Group
- 부트스트랩 스크립트 (첫 실행 시 구성) : EC2 User Data. 인스턴스를 구성하기 위한 부트스트랩 스크립트.

## EC2 User Data
- EC2 User Data 스크립트를 이용하여 부트스트랩이 가능합니다.
**부트스트래핑**이란? 머신이 작동될 때 명령을 시작하는 것을 말합니다.
- 스크립트는 처음 시작할 때만 실행됩니다.
- 부팅 작업을 자동화하기 때문에 "부트스트래핑"이라고 부릅니다.

인스턴스를 부팅할 때 자동화할 수 있는 것들:
- 업데이트 설치
- 소프트웨어 설치
- 인터넷에서 일반적인 파일 다운로드
- 기타 원하는 작업

EC2 User Data 스크립트는 root 사용자에서 실행됩니다.

## EC2 인스턴스 유형 예시

EC2 인스턴스 타입에 따라 vCPU, 메모리, 저장소, 네트워크 성능, EBS 대역폭 등이 다릅니다.

---

# 웹사이트 실습을 위한 EC2 사용자 데이터로 EC2 인스턴스 생성

- PuTTY는 Windows 7 또는 Windows 8에서 SSH를 사용할 때 사용됩니다.
- Windows 7과 Windows 8을 제외한 다른 버전에서는 `.pem` 파일을 선택합니다.

- **EC2 종료 시 EBS 삭제 여부에 대한 옵션**: `Delete on termination`
- **User Data**
- 입력한 스크립트는 인스턴스가 처음 실행될 때 생애 주기상 단 한 번만 실행됩니다.

---
# EC2 인스턴스 유형 기본 사항
- EC2 인스턴스 타입: [AWS 인스턴스 타입](https://aws.amazon.com/ko/ec2/instance-types/)
- AWS 인스턴스 네이밍 규칙:
- 예) `m5.2xlarge`
- `m`: 인스턴스 클래스
- `5`: 세대
- `2xlarge`: 인스턴스 클래스의 크기 (크기가 클수록 더 많은 CPU와 메모리 보유)
- CPU, 메모리, 네트워크 성능의 밸런스가 적절합니다.

## 범용 인스턴스

## 컴퓨팅 최적화 인스턴스

- 컴퓨터 집약적인 작업에 최적화된 인스턴스
- **사용 사례**:
- 배치 처리
- 미디어 트랜스코딩
- 고성능 웹 서버
- 고성능 컴퓨팅(HPC)
- 머신러닝
- 전용 게임 서버
- 이름은 `C`로 시작합니다. 예) `C5`, `C6`

## 메모리 최적화 인스턴스

- 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공합니다.
- **사용 사례**:
- 인메모리 데이터베이스, 고성능의 관계형/비관계형 DB
- 분산 웹 스케일 캐시 저장소
- BI에 최적화된 인메모리 데이터베이스
- 대규모 비정형 데이터의 실시간 처리
- 이름은 `R`로 시작합니다. 예) `R`, `X1`, `Z1`

## 스토리지 최적화 인스턴스

- 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스
- **사용 사례**:
- OLTP 시스템
- 관계형/비관계형 데이터베이스
- 레디스 같은 인메모리 데이터베이스
- 데이터 웨어하우징 애플리케이션
- 분산 파일 시스템
- 이름은 `I`, `D`, 또는 `H1`로 시작합니다.

전체 EC2 비교 사이트: [Vantage EC2 Instances](https://instances.vantage.sh/)

---
# 보안 그룹 및 클래식 포트 개요
- AWS에서 네트워크 보안을 수행하는 기본 방법입니다.
- EC2 인스턴스의 입출력 트래픽이 허용되는 방식을 제어합니다.
- 허용 규칙만 포함됩니다.
- IP 주소를 기반으로 규칙을 설정하거나 다른 보안 그룹을 참조하여 설정할 수 있습니다.
- 보안 그룹은 EC2 인스턴스의 방화벽입니다.
- 포트에 대한 액세스를 규제합니다.
- 승인된 IP 범위 (IPv4 & IPv6)
- 인바운드 네트워크
- 아웃바운드 네트워크

## 보안 그룹에 대해 알면 좋은 점
- 여러 인스턴스에 적용 가능합니다. (1:1 관계가 아님)
- 보안 그룹은 특정 지역과 VPC 조합에 제한됩니다.
- 다른 지역으로 전환하는 경우 새로 보안 그룹을 만들어야 합니다.
- 다른 VPC를 생성한 경우 보안 그룹을 새로 만들어야 합니다.
- 보안 그룹은 EC2에만 적용됩니다.
- SSH 액세스를 위해 별도의 보안 그룹을 하나 유지하는 것이 좋습니다.
- 애플리케이션에 타임아웃으로 액세스할 수 없다면 보안 그룹 문제일 수 있습니다.
- 기본적으로 모든 인바운드 트래픽은 차단됩니다.
- 기본적으로 모든 아웃바운드 트래픽은 승인됩니다.

## 다른 보안 그룹을 참조하는 방법
- 보안 그룹이 연결된 다른 EC2 인스턴스가 있는 경우, IP에 관계없이 올바른 보안 그룹이 연결되어 있으면 다른 EC2 인스턴스에서 직접 통신할 수 있습니다.
- 항상 IP를 생각하지 않아도 되므로 유용합니다.

## 클래식 포트
- **22** = SSH: 리눅스 EC2 인스턴스 로그인
- **21** = FTP: 파일 공유 및 업로드
- **22** = SFTP: SSH를 이용한 파일 업로드
- **80** = HTTP: 보안되지 않은 웹사이트 액세스
- **443** = HTTPS: 보안 웹사이트 액세스
- **3389** = RDP: 윈도우 인스턴스 로그인

---

## SSH 개요

- 명령줄 인터페이스
- **ssh**: macOS, Linux, Windows 10 이상에서 사용 가능
- **PuTTY**: Windows 10 미만에서 사용 가능
- **EC2 Instance Connect**: 웹 브라우저로 EC2 인스턴스에 연결 (모든 버전의 macOS, Linux, Windows에서 사용 가능)
- 현재 Amazon Linux 2에서만 작동합니다.

---
## EC2 인스턴스 시작하기
- **Reserved (1 & 3년)**
- **Reserved Instances**: 긴 워크로드
- **Convertible Reserved Instances**: 긴 워크로드와 유연한 인스턴스 타입
- **Saving Plans (1 또는 3년)**
- 달러 단위로 특정한 사용량을 약정하는 방식
- 긴 워크로드에 적합
- **Spot Instances**
- 짧은 워크로드
- 저렴하지만 신뢰성이 낮습니다.
- **Dedicated Hosts**
- 물리적 서버 전체를 예약하여 제어 가능
- **Dedicated Instances**
- 하드웨어를 다른 사용자와 공유하지 않음
- **Capacity Reservations**
- 원하는 기간 동안 특정 AZ에 용량을 예약할 수 있음.

## EC2 On-Demand
- **요금**:
- Linux 또는 Windows: 1분 이후 초단위로 요금이 나옵니다.
- 다른 모든 OS: 1시간 단위로 요금이 나옵니다.
- 장기적인 약정이 필요하지 않음
- 즉시 요금을 지불하지 않아도 됨
- 단기적, 중단 없는 워크로드가 필요할 때

## EC2 Reserved Instances

- **온디맨드에 비해 최대 72% 할인** 제공
- **사용 사례**: 사용량이 일정한 애플리케이션 (예: DB)
- **예약 기간**: 1년 또는 3년
- **결제 옵션**: 전액 선결제, 부분 선결제, 선결제 없음

---

## EC2 Spot Instances

- **할인율** 최대 90%
- **사용 사례**:
- 배치 작업
- 데이터 분석
- 이미지 처리
- 모든 종류의 분산형 워크로드
- **신뢰성이 낮음**: 최대 가격을 초과하면 인스턴스가 종료될 수 있습니다.
---

## Spot Fleets

- 여러 스팟 인스턴스를 관리하는 방법
- **전략**:
1. `lowestPrices`: 가장 낮은 가격을 선택
2. `diversified`: 가용성과 긴 워크로드에 적합
3. `capacityOptimized`: 최적의 용량을 선택
4. `priceCapacityOptimized`: 용량이 큰 풀에서 가장 낮은 가격을 선택
Loading