Seven steps to launching an EC2 instance
- Instance name and tags
- Amazon Machine Image
- Instance type
- Key pair
- Network settings
- Configure storage
- Advanced details
tag: AWS 리소스에 할당할 수 있는 label
- key, optional value으로 구성
- 인스턴스의 이름은 기본 태그 ( Key = Name; Value = 인스턴스이름)
- 태그를 통해 다른 resource들끼리 쉽게 매칭해서 사용 가능
ex turn off resources with “Development” tag after 6 p.m.
Tag Features
Manage tags
- 태그 추가, 제거, 편집
- 태그 제한 50개
- naming, tagging은 선택사항
Search and filter for tags
- key 또는 value 별로 리소스 검색
- 태그 키와 값의 조합으로 리소스 필터링 및 검색
Resource organization
- 태그별로 검색 및 필터링 가능
- 태그를 기반으로 AWS 리소스 그룹 생성 가능
Cost management
- AWS Cost Explorer and detailed billing reports에서 태그별로 AWS 비용 분석
Automation
- automation activities중에 리소스 필터링
- E.g., non-business hours에 개발 환경을 끄는 automated start or stop scripts를 실행하여 비용 절감
Access control
- IAM으로 태그가 지정된 리소스를 사용하여 attribute-based control (ABAC) 구현
- 태그 정보를 기반으로 작업을 허용하는 IAM 정책 생성
Step 2: Choosing an AMI
Amazon Machine Image 구성 요소:
Templates for the root volume of the instance:
Operating system (OS)
Application servers
Applications
AMI 사용할수있는 AWS 계정의 Launch permissions control(시작 권한 제어)
Block device mapping이 인스턴스에 첨부할 볼륨을 지정
(Image: snapshot of certain stage)
Using AMIs
인스턴스의 use case에 맞는 AMI 선택
동일한 구성(configuration)인 인스턴스는 같은 AMI 사용
use case가 다르면 각각 고유한 AMI 사용AMI는 EC2의 이미지. 인스턴스는 AMI의 사본. 한 AMI로 여러 개의 인스턴스 실행 가능
인스턴스를 생성하기 전에 인스턴스가 사용되는 용도를 완전히 이해하는 것이 중요
- 인스턴스가 생성된 후엔 AMI 변경 불가
Where Do You Get an AMI?
Pre-built
- Amazon은 미리 구축된 여러 AMI를 제공
AWS Marketplace
- 수천 개의 software solutions이 나열된 digital catalog 제공
Create your own
- root volume of a golden instance의 block-level copy에서 생성됨
Community AMIs
- 전 세계 사람들이 community AMIs 생성
- AWS의 검사 X → 사용자 own risk
AMI Benefits
Repeatability
- 동일한 AMI에서 시작된 인스턴스는 서로의 정확한 복제본
Reusability
- AMI는 EC2 인스턴스의 전체 구성과 내용을 반복적으로 사용할 수 있도록 패키징
Recoverability
- 장애가 발생한 시스템을 동일한 AMI에서 생성된 새 인스턴스로 교체
Marketplace solutions
- specific vendor(판매자)의 software solution을 찾고 있는 경우 AMI가 marketplace(시장)에 존재할 수 있음
- ex software살 필요 없이 matlab의 ami에만 돈 내면 됨
Backups
- 완벽한 EC2 인스턴스 구성을 백업할 방법 제공
Step 3: Instance Types
instance type 결정 요소: CPU, Memory, Disk, Network
application, software의 requirements에 따라 선택
Instance Families
Prefix
- t#: the cheapest one, general purpose 가장 저렴한 것, 범용
- c#: compute optimized 계산 최적화
- m#, r#: memory optimized 메모리 최적화
- p#, f#: accelerated computing 가속 컴퓨팅
- h#, i#, d#: storage optimized 스토리지 최적화
- where # means generation number (the bigger, the newer) #는 세대 번호. 클수록 좋음
Suffix
- no suffix: Intel Xeon series
- -a: AMD EPYC series (cheaper than Intel Xeon)
- -g: ARM Neoverse series (cheapest one, but it’s AArch64, not AMD64)
- -d: comes with NVMe storage
Levels(size of the instance)
- nano, micro, small, medium, large, xlarge, 2xlarge, …
- metal: bare-metal server
(우리가 쓰는거 t2.micro: t→프리티어, no suffix→Intel Xeon)ex p3.16xlarge
p→accelerated computing→GPU
xlarge→메모리 큼 488GB
no suffix→Intel Xeon
Scaling Instances Vertically
인스턴스의 AMI와 달리 instance type은 인스턴스가 시작된 후에도 변경 가능
- 변경해서 더 많은 compute power 제공해서 인스턴스 확장 가능
- 이런 종류의 확장(expansion)을 vertical scaling(수직 스케일링)라고 함
vertical scaling:
- CPU 스케일업 / 스케일다운
- 아무 instance family의 아무 instance type으로 전환
Step 4: Key Pairs
인스턴스 실행시 기존 key pair 지정 / 새 key pair 생성 / key pair 사용x 선택 가능
-인스턴스가 시작된 후에는 키 쌍 추가 불가
key pair (키 쌍) 구성:
- AWS가 저장하는 public key
- 개인이 저장하는 private key
Connecting to Your Instance With Key Pair
key pair로 인스턴스에 안전하게 연결
Windows AMIs
- private key를 이용해 RDP(Remote Desktop Protocol)를 통해 인스턴스에 로그인하는 데 필요한 관리자 암호 가져옴
Linux AMIs
- private key를 사용하여 SSH(Secure Shell)를 사용하여 인스턴스에 안전하게 연결
- PuTTY를 사용하는 경우 PuTTYgen을 사용하여 개인 .pem 키 파일을 .ppk로 변환해야 함
절대 비밀키를 공개하지 마세요!!
(more info: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)
Step 5: Network Settings
인스턴스를 배치할 VPC, subnet, Security Group 선택
public IP address를 활성화할지 비활성화할지 결정
Regions
Region은 AWS Management Console에서 작업 중인 지역을 기반으로 추정됨
VPCs and Subnets
각 AWS region에 default VPC 존재
- default VPC는 지역의 각 Availability Zone(가용성 영역)에 public subnet과 함께 제공됨
- 따라서 EC2 인스턴스를 기본 VPC로 즉시 시작 가능
default VPC에서 더 많은 공용 서브넷 생성 가능
모든 지역에서 추가 VPC를 생성하고 사용자 지정 가능
Public IP Address
Public IP address
- 인터넷에서 연결 가능한 IP 주소
- 인스턴스(instance)와 인터넷(Internet)간의 communicate에 사용됨
Public IP
상황에 따라 공용 IP 주소가 EC2 인스턴스에 자동으로 할당되거나 할당되지 않음
Default VPC – Default subnet
- Auto-assign public IP 설정_ “enabled”이 default
- 비활성화 선택도 가능
Default VPC – Custom public subnet, Custom VPC – Custom subnet
- Auto-assign public IP 설정_ “disabled”이 default
- 활성화 선택도 가능
Security Groups
Security group 보안그룹
- 인스턴스의 virtual firewall(가상 방화벽)
- network access 제어
- 인스턴스의 guest OS 외부에 존재
Security Group rules features
- 인스턴스에 액세스할 수 있는 트래픽을 필터링
- allow rules(허용 규칙)은 지정, deny rules(거부 규칙)은 지정X
- 허용 규칙이 마련되지 않은 경우 모든 액세스 차단
- 언제든지 수정 가능 → 연결된 인스턴스에 실시간으로 영향 미침
Rule Components
4 rule components
- Type: 네트워크 트래픽에 개방할 특정 프로토콜 유형
- 예: SSH, RDP, HTTP, HTTPS
- protocol: 컴퓨터와 인터넷 상의 다른 서비스가 서로에게 정보를 보낼 수 있는 다른 방법
- 예: TCP, UDP, ICMP
- Port range: 각 프로토콜 유형에 대해 트래픽 통과가 허용된 포트를 확인
- Source: range of IP addresses에 따라 인스턴스에 도달할 수 있는 트래픽을 결정
Inbound Rules and Outbound Rules
Security Group에 Inbound Rules and Outbound Rules 존재
Inbound rules: 인스턴스로 들어오는 트래픽을 제어
- no inbound rules (default)
Outbound rules: 인스턴스에서 나가는 트래픽을 제어
- 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙 (default)
Security Group’s Stateful Attributes
Security Group의 stateful effects(상태별 효과):
- 모든 인바운드 규칙에 대해 아웃바운드 response응답이 허용됨 (자동으로)
- 모든 아웃바운드 규칙에 대해 인바운드 response응답이 허용됨 (자동으로)
• If this security group has an inbound rule that allows HTTP protocol from a source IP
0.0.0.0/0, then a response from the instance is automatically allowed
• The response is allowed even if no outbound rules are specified in the security group
• However, since no outbound rules are specified in the security group, the instance
cannot initiate an outbound call
• 이 Security Group에 소스 IP 0.0.0.0/0에서 HTTP 프로토콜을 허용하는 인바운드 규칙이 있으면 인스턴스의 응답이 자동으로 허용됩니다
• Security Group에 아웃바운드 규칙이 지정되지 않은 경우에도 응답이 허용됩니다
• 그러나 Security Group에 아웃바운드 규칙이 지정되지 않았으므로 인스턴스가 아웃바운드 호출을 시작할 수 없습니다
Managing Security Groups
Security Group는 서브넷 수준이 아닌 인스턴스 수준에서 작동
- 동일한 서브넷에 있는 인스턴스를 다른 Security Group에 할당할 수 있음
인스턴스에 둘 이상의 Security Group 연결 가능
- 트래픽 통과가 허용되기 전에 인스턴스에 연결된 모든 Security Group의 모든 규칙을 평가
Amazon Elastic Block Store(EBS): EC2 인스턴스 스토리지의 main solution
- Amazon EBS: Amazon EC2를 위해 설계된 내구성 있고 분리 가능한 고성능 블록 스토리지 서비스
- USB 드라이브처럼 작동
- low latency 제공
- 거의 모든 컴퓨팅 요구사항 처리 가능
run a database, host applications, handle storage operations 에 사용
ec2>Elastic Block Store>볼륨에서 생성 후 ec2인스턴스에 attach가능
sudo fdisk -l
디스크 파티션 정보를 보여주는 명령어
시스템에 연결된 디스크 및 디스크 파티션들의 세부 정보 확인 가능
EBS Volume Types
-
General purpose (SSD-based)
– 다양한 workloads에 대해 가격과 성능(performance)이 균형을 이루는 SSD volume
-
Provisioned IOPS (SSD-based)
– IOPS(Provisioned Input/Output Operations Per Second)는 mission-critical low-latency(미션 크리티컬 저지연) or high-throughput workloads(높은 처리량 워크로드)를 위한 최고 성능의 SSD 볼륨
-
Throughput Optimized 처리량 최적화(HDD-based)
– 자주 액세스하는 throughput-intensive(처리량이 많은) workloads를 위해 설계된 저렴한 HDD 볼륨
– boot volume 될 수 없음
-
Cold (HDD-based)
– 가장 저렴한 HDD 볼륨
– less frequently accessed workloads를 위해 설계
– boot volume 될 수 없음
(speed: SDD>HDD , cost: SDD<HDD)
Amazon EBS Storage Configuration Options
Volume types
- root volumes에는 HDD 기반 유형 허용X
- 인스턴스에 루트가 아닌 볼륨을 추가하고 필요에 따라 모든 유형을 다른 볼륨 유형과 mix and match 가능
Volume size
Delete on termination 종료시삭제
- 인스턴스가 종료될 때 볼륨을 자동으로 삭제할지 여부 표시
Encryption 암호화
- 루트 볼륨과 추가 볼륨을 암호화할 수 있는 옵션 존재
- AWS KMS(Key Management Service)키를 사용하여 볼륨 암호화
Adding a File System
storage 구성할 때 인스턴스에 EFS(Amazon Elastic File System)를 추가할 수 있는 옵션 존재
Amazon EFS: 여러 EC2 인스턴스 간에 파일을 공유하는 데 사용할 수 있는 파일 시스템 (EBS는 볼륨시스템)
- management or provisioning 필요 없이 파일을 추가 및 제거할 때 자동으로 grow(증가) 및 shrink(축소)
- 인스턴스를 시작할 때 또는 그 이후에 파일 시스템에 인스턴스 연결 가능
- Amazon EFS에 저장된 파일을 손실하지 않고 파일 시스템에서 인스턴스 제거 가능
Amazon EFS는 루트 볼륨으로 사용할 수 없음
- Amazon EFS에 연결된 각 인스턴스에는 고유한 루트 볼륨이 있어야 함
Amazon EC2 Instance Store
instance store: 인스턴스에 대한 temporary block-level storage(임시 블록 레벨 스토리지) 제공
host computer에 물리적으로 연결된 디스크에 위치함
- 버퍼, 캐시, 스크래치 데이터 및 기타 임시 컨텐츠와 같이 자주 변경되는 정보의 임시 저장에 적합
루트 볼륨 될 수 없음
EC2 서버에 direct로 연결됨
EBS보다 훨씬 저렴
한계
- 인스턴스가 중지, 최대 절전 모드 또는 종료되면 모든 데이터가 손실됨 : temporary
- AMI와 인스턴스 유형의 특정 조합에 대해서만 옵션으로 제공
- 인스턴스가 시작된 후에는 인스턴스 저장소 볼륨을 추가할 수 없음
- AWS에서는 볼륨을 분리하는 옵션 제공X
- 인스턴스 저장소 볼륨을 구성할 수 없음 (SSD or HDD, size, encryption)
Step 7: Advanced Details
▪ IAM Role
▪ User data
▪ Additional advanced setting options
IAM Role
IAM role: 특정 권한 정책(policy)이 있는 계정에서 생성할 수 있는 IAM identity
- 필요한 사람이라면 누구나 추측할 수 있게 의도됨
Using IAM Roles with AWS Services
EC2 인스턴스는 종종 다른 AWS 서비스에 보안 API 호출을 수행해야 하는 애플리케이션을 실행
- 역할을 사용하여 인스턴스에서 다른 AWS 서비스에 액세스할 수 있는 권한을 부여하여 security risks(보안 위험)을 극복
- 다른 AWS 서비스에 보안 API 호출 권한을 부여하기 위해 EC2 인스턴스에 AWS credentials(자격 증명)을 저장하는 것은 안전하지 않음
Managing Roles
인스턴스에 역할을 연결하려면, instance profile에서 인스턴스와 연결할 역할을 선택
- instance profile은 IAM role의 container
이러한 방식으로 역할을 관리하면 flexibility유연성이 크게 향상됨
- 인스턴스를 실행할 때 역할 포함
- 인스턴스가 시작된 후 역할 추가
- 인스턴스에서 역할 제거
- 권한에 즉시 영향을 미치도록 역할 정책 업데이트
User Data
EC2 인스턴스를 생성할 때 user data를 인스턴스로 전달하는 옵션 존재
user data scripts를 사용하여 사용자의 runtime environment을 customize
- script: 인스턴스를 처음 시작할 때 기본적으로 실행
- 인스턴스가 시작될 때마다 스크립트가 실행되도록 구성 가능
script 수행 ex:
- Patch and update the instance AMI
- Fetch and install software license keys
- Install additional software
- …
Additional Advanced Setting Options
Request Spot Instances
Shutdown behavior 종료동작
- shutdown behavior 설정은 OS-level shutdown을 수행할 때 인스턴스의 동작 방식에 영향을 미침
- 인스턴스를 종료하거나 중지할 수 있음
Termination protection
- enable → 종료 보호가 해제될 때까지 콘솔, API 또는 CLI를 사용하여 인스턴스를 종료할 수 없음
Detailed monitoring 상세모니터링
- Amazon CloudWatch와 연결하여 인스턴스 모니터링 가능
Tenancy
Configuration Considerations
인스턴스를 실행할 때 염두할 것:
Ultimately, 인스턴스에 대한 구성 선택은 인스턴스의 use case를 기반으로 하고 비용을 절감해야 함