특정 IAM 유저가 청구 데이터에 접근할 수 있도록 루트 계정에서 설정 필요함 (계정-결제정보에 대한 IAM 사용자 및 역할 액세스)
계정에 대한 요금이 부과되기 시작하면 어떤 서비스에는 요금이 발생하고 어느 지역에서 어떻게 발생하는지 파악할 줄 알아야함
결제 대시보드 > Budgets > 예산 작성
알림 임계값 설정
설정한 예산에 80퍼센트에 도달하면 알람 보내줘!
지불 예상값이 설정한 예산에 60퍼센트에 도달하면 알람보내줘
Elastic Compute Cloud = Infrastructure as a Service
EC2는 하나의 서비스가 아님
-Renting virtual machines(EC2)
-Storing data on virtual drives(EBS)
-Distributing load across machines(ELB)
-Scailing the services using an auto-scailing group(ASG)
Knowing EC2 is fundamental to understand how the Cloud works
OS: Linux / window / Mac OS
How much compute power & cores (CPU)
How much random-access memory (RAM)
How much storage space:
Network-attached(EBS&EFS)
hardware(EC instance Store)
Network card : speed of the card, public IP address
Firewall rules: security group
Bootstrap script(configure at first lauch): EC2 User Data
내가 원하는 대로 가상머신을 선택해서 aws 에서 빌릴수 있다~
EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트래핑할 수 있다!
부트스트래핑은 머신이 작동될 때 명령을 시작하는 것
스크립트는 처음 실행될 때 한번만 실행함
부팅 작업을 자동화함 > 부트스트래핑
EC2 User Data is used to automate boot tasks such as:
Installing updates
Installing s/w
Downloading common files from the internet
Anything you can think of
User Data 스크립트에 작업을 더 추가할수록 부팅 시 인스턴스가 할 일이 늘어남
EC2 User Data 스크립트는 루트 계정에서 실행됨 > 모든 명령어는 sudo로
Step3: Configure Instance Details > advanced Details > User data
인스턴스가 처음으로 부팅될 때 딱 한번 실행될 스크립트
ec2 인스턴스에 웹 서버를 시작하고 파일을 쓰는 역할
스토리지에는 EC2 인스턴스에서 사용 가능한 데이터 디스크의 양이 보임
Deleteon on Termination = 인스턴스 삭제할 때 디스크 또한 비운다~
0.0.0.0/0, ::/0
의 의미는 어디에서나~ > 그룹이 전 세계에 공개됨
Name - My First Instance 로 key-value로 태깅한 부분이 반영됨
키페어 파일은 한번만 다운로드 할수있으므로 파일을 잃어버리지 말자
퍼블릭 IPv4
프라이빗 IPv4
퍼블릭 IPv4 옆에 개방주소법 링크 클릭
HTTPS로 뜨는데 secure http를 설정하지 않아 타임아웃 오류가 발생함
그냥 뉴탭에서 퍼블릭 IPv4를 복붙하자
User Data 스크립트를 이용하여 EC2 인스턴스에서 웹 서버를 시작했고
인스턴스의 첫 부팅에 스크립트가 실행되었다
근데 응답한 IP가 인스턴스에 접근할 때 사용한 공인 IP와 다른 이유는 뭘까? > 인스턴스의 사설 ip가 응답하게 스크립트를 짬
필요 없을 때는 인스턴스 중지 눌러놓자
여기
-General Purpose
-Compute Optimized
-Memory Optimized
-Accelerated Computing
-Storage Optimized
-Instance Features
-Measuring Instance Performance
m5.2xlarge
m: instance class
5: generation (aws improves them over time) > 하드웨어 개선으로 NEW version이 나오면 6이 되는것
2xlarge: 인스턴스 클래스 내에서 크기 > 크기가 클수록 메모리와 CPU를 많이 가지게됨
웹 서버나 코드 저장소와 같은 다양한 작업에 적합함
컴퓨팅, 메모리, 네트워킹 간의 균형이 잘 맞음
t2.micro는 범용 인스턴스의 프리티어
C로 시작함
컴퓨팅 최적화 EC2 인스턴스는 뱃치 처리, 미디어 트랜스코딩, 고성능 웹 서버, 고성능 컴퓨팅, 과학 모델링 및 머신러닝, 전용 게임 서버와 같은 고성능 프로세서가 필요한 과중한 컴퓨팅 워크로드에 적합
Great for compute-intensice tasks that require high performance processors:
Batch processing workloads
Media transcoding
High performance web servers
High performance computing (HPC)
Sicentific modeling & machine learning
Dedicated gaming servers
R로 시작함(ram)/X1/High Memory/Z1d
메모리 최적화 EC2 인스턴스는 메모리에 대용량 데이터 세트가 필요한 워크로드에 적합
메모리에서 대규모의 데이터를 처리하는 유형의 작업에 빠른 성능을 제공함:
High performance, relational/non-relational databases
Distributed web scale cache stores
In-memory databases optimazied for BI
Application performing real-time processing of big unstructured data
I/G/H1
Great for storage-intensive tasks that require high, sequential read and write access to large data sets on local storage:
High frequency online transaction processing(OLTP) systems
Relational & NoSQL databases
Caches for in-memory databases(for example, Redis)
Data warehousing applications
스토리지 최적화 EC2 인스턴스는 로컬 스토리지의 대규모 데이터 세트에 대한 높은 시퀀셜 읽기/쓰기 액세스 권한이 필요한 워크로드에 적합
AWS 클라우드에서 네트워크 보안을 실행하는 데 핵심이 됨
EC2 인스턴스에 들어오고 나가는 트래픽을 제거함
Security group only contain allow rules 허용 규칙만 포함
IP 주소를 참조해 규칙을 만들 수 있음 > 컴퓨터의 위치나 다른 Security Groups을 참조
ex) 컴퓨터에서 공공 인터넷을 사용해 EC2 인스턴스에 접근하려고 할 경우,
우리는 EC2 인스턴스 주변에 Security Group 을 생성해야 하는데 이것이 바로 방화벽임
보안그룹의 규칙은 인바운드 트래픽의 허용 여부
외부에서 EC2 인스턴스로 들어오는 게 허용되면
아웃바운드 트래픽도 수행할 수 있음(현재 위치에서 인터넷으로)
Security grops are acting as a firewall on EC2 instances
They regulate:
Access to Ports
Authorised IP ranges-Ipv4 and Ipv6
Control of inbound network
Control of outbound network
Source는 IP 주소의 범위
0.0.0.0/0 > 전체 IP
기본값인 아웃바운드 규칙은 모든 보안그룹의 EC2 인스턴스는 디폴트로 모든 트래픽을 허용
Can be attached to multiple instances
Locked down to a 특정 리전과 VPC combination > 지역 전환 시 새 보안 그룹을 생성하거나 다른 VPC를 생성해야함
Security Groups live outside the EC2 > 트래픽이 차단되면 EC2 인스턴스는 확인할 수 없음 EC2 가 운영하는 애플리케이션이 아니라 EC2 외부에서 작동하는 방화벽임
It's good to maintain one separate security group for SSH access > SSH 엑세스를 위해 하나의 별도 보안 그룹을 유지하는 것이 좋음
타임아웃으로 애플리케이션에 접근할 수 없으면 그건 security group issue
그러나 "connection refused" error 응답을 받으면 그건 보안그룹은 실행됐고 트래픽 통과했지만 앱에 문제가 생긴것
All inbound traffic is blocked by default
All outbound traffic is authorised by default
22 port = SSH (Secure Shell) log into a Linux instance 리눅스 인스턴스에 로그인할때
21 port = FTP (File Transfer Protocol) upload files into a file share
22 port = SFTP (Secure File Transfer Protocol) upload files using SSH
SSH를 사용해서 업로드하기 때문에 포트가 동일
80 port = HTTP access unsecured websites
443 port = HTTPS access secured websites
3398 port = RDP (Remote Desktop Protocol) log into a Windows instance 윈도우 인스턴스에 로그인할때
::/0 = anywhere in IPv4 format
0.0.0.0/0 = anywhere in IPv6 format
모든 포트에서 기본적으로 허용됨
EC2 인스턴스가 소프트웨어 업데이트나 이메일 전송을 할 수 있음
인바운드 룰 Http 규칙을 삭제하면 리스폰스를 받을 수 없음 > 타임아웃에러
규칙에 특정 보안그룹 추가도 가능함
클라우드에서 실행시 유지 보수나 실행을 위해 서버 내부와 연결하는 게 까다로움 > 리눅스에서는 SSH를 이용함
SSH는 CLI utility on Mac / Linux / or Windows over ver10
putty도 동일하게 SSH 프로토콜을 사용해 ec2 인스턴스에 연결하도록 함
EC2 Instance Connect는 웹 브라우저에서 사용하는 유틸로 터미널, 퍼티가 아닌 웹 브라우저로 EC2 인스턴스에 연결함 on Mac / Linux / Windows > 하지만 amazon linux2에서만 사용함
Windows 10 SSH
아래와 같이 뜨면 SSH 사용 가능하다는 것
aws iam list-users
aws configure //비권장
IAM API 자격증명 키를 aws configure를 이용해 입력하는 건 비권장
EC2인스턴스에 개인 정보를 입력해두면 이 계정 상의 누구라도 다시 EC2 인스턴스 커넥트 등을 통해 EC2 인스턴스에 접속해서 자격 증명 정보를 회수할 수 있기 때문 > 대신 IAM role을 이용할 수 있음
인스턴스에 IAM role 연결
aws iam list-users
명령이 잘 들어감
권한 삭제하면 이제 명령이 잘 안들어감 > IAM role과 EC2 인스턴스를 연결하는 방식으로 AWS 자격 증명을 제공할 수 있음
On Demand Instances : 예측 가능한 가격의 Short workload 용
오랜 시간 동안 사용해야 하는 서버가 있는 경우
Reserved : 미니멈 1년
Reserved Instances: long workloads 데이터베이스같은
Convertible Reserved Instances: long workloads with flexible instances
Scheduled Reserved Instances: ex) every Thursday between 3 and 6 pm
Spot Instances: short workloads, cheap, can lose instances(신뢰성이 낮음)
Dedicated Hosts: 물리적 서버 전체를 예약하고 인스턴스 배치를 제어함
pay for what you use:
Linux or Windows 사용시 비용이 초당 청구됨 초반 1분 이후부터 1초당 비용 청구
다른 OS - billing per hour
클라우드에 가장 적합한 방식
가격은 높지만 선결제나 정기 약정이 필요 없음
Recommended for short-term and un-interrupted workload, where you can't predict how the application will behave
어플리케이션 작동 방식을 예측할 수 없는 연속적 단기 워크로드
온디맨드와 비교하면 약 75%의 비용을 절약할 수 있음
Reservation period: 1 year or 3 year(더큰할인)
구매옵션: 매달 지불 지용 / 부분 선결제 / 전체 선결제(더큰할인)
Reserve a specific instance type ex) T2 micro or c5 xlarge
애플리케이션이 안정된 상태로 사용되는 ex) 데이터베이스
3년간 데이터베이스를 사용해야 하는 상황이라면 이런 인스턴스를 예약함으로써 비용을 크게 절감 가능
Convertible Reserved Instance
can chage the EC2 instace type ex) T2 micro or c5 xlarge
up to 54% discount 인스턴스 타입을 바꿀수 있으니 할인율이 좀 줄어듦
Scheduled Reserved Instance
예약한 특정한 시간대에 EC2 인스턴스를 사용해야 하는 경우
하루, 한주, 한달 등의 특정 기간만 사용하는 경우
하지만 정기 약정이 필요함
AWS에서 할인율이 가장 높은 옵션 a discount of up to 90% compared to On-demand
하지만 내가 지불하고자 하는 가격이 현재 spot instance의 가격보다 낮다면 인스턴스가 언제든 중지됨
스팟 가격이 점진적으로 변하는데 내가 스팟 인스턴스 사용에 최고가를 지불할 의사가 있을 때만 사용 가능 > 아니면 중지됨
The MOST cost-efficient instances in AWS
Useful for workloads that are resilient to failure
서비스 중단에도 복구가 쉬운 워크로드에만 사용 가능한 인스턴스:
Batch jobs 단발성 데이터 분석인 배치 로드
Data analysis
Image Processing
Any distributed workloads 클라우드 내에 있는 서버가 분산된 방식으로 협업하는 시스템의 워크로드(하나의 서버가 중단되어도 다른 서버들이 그런 상황에 대처 가능함)
Workloads with a flexible start and end time
대단히 중요한 작업이나 데이터 베이스 작업에는 사용함 안된다
전용 호스트는 규정 준수 요구 사항이 강한 회사나 라이선스 모델이 복잡한 소프트웨어에 적합 사용 가능한 가장 비싼 EC2 구매 옵션
EC2 Dedicated Hosts는 EC2 인스턴스를 갖춘 유저 중심의 물리적 서버이다
AWS 데이터 센터 내 하나의 서버 전체를 임대
전용 호스트를 사용하면 준수 요건의 처리가 쉽고 기존의 서버 결합 소프트웨어 라이센스의 사용이 가능하기 때문에 비용 절감이 가능함
Allocated for your account for a 3-year period reservation
More expensive 전체 서버를 독자적으로 이용하기 때문
호스트 당 청구됨
Useful for software that have complicated licensing model (Bring Your Own License)
나를 제외한 다른 AWS 고객들은 내가 임대한 서버를 사용할 수 없음
보안상 이유로 나만 사용가능한 물리적 서버가 필요
a lot of access underlying hardware > dedicated hosts에서 사용 가능한 다양한 서버 결합 라이센스를 받을 수 있는 이유(sockets, cores, host ID 등에 대한 접근 권한이 있음)
나의 전용 물리적 서버(하드웨어)에서 실행되는 EC2 인스턴스
Many share hardware with other instances in same account
같은 계정의 다른 인스턴스와 하드웨어를 공유함
Automatic instance placement 인스턴스가 어떻게 배치될지는 내가 정할 수 없음 > 전용 하드웨어가 있어도 하드웨어의 근본에는 접근할 수가 없음
EC2 Dedicated Hosts의 soft한 버전
인스턴스 당 청구가 됨
높은 수준의 규제 준수가 필요해 하드웨어를 타인과 공유하고자 하지 않을 때 적합함
On demand : coming and staying in resort whenever we like, we pay the full price
Reserved : like planning ahead and if we plan to stay for a long time, we may get a good discount
Spot instaces: the hotel allows pelple to bid for the empty rooms and the highest bidder keeps the rooms. You can get kicked out at any time.
Dedicated Hosts: We book an entire building of the resort
온디맨드와 비교해 최대 90%까지 할인을 받을 수 있음
어떤 스팟 인스턴스에 지불할 의향이 있는 최고 가격을 정의하면, 인스턴스의 비용이 그보다 낮은 한 인스턴스를 계속 사용 가능함
시간당 스팟 비용은 오퍼 및 용량에 따라 다양하고 올라갈수도 있고 내려갈 수도 있음
정의된 최고 가격보다 높아지는 경우: 2분의 유예시간동안 옵션을 선택
1. 인스턴스를 중단함 > 인스턴스의 가격이 내가 설정한 최고가보다 낮아지는 때에 인스턴스를 재시작해 계속 이어 작업
2. 인스턴스 완전히 종료
다른 전략 : Spot Block
특정 기간동안(1시간-6시간) 인스턴스 차단
Aws 에 스팟 인스턴스를 회수당할 일이 없음
중요한 작업이나 데이터 베이스에는 적합하지 않음
스팟인스턴스를 사용함으로써 온디맨드의 60퍼센트 비용 절감이 가능하다
maximum price
desired number of instances
launch specification
request type: 일회 / 연속
(연속인 경우) valid from, valid until
-지속적인 요청인 경우 스팟 요청의 valid from부터 valid until 까지의 유효기간 동안 사용자가 요청한 개수의 인스턴스들이 계속 유효하게 됨
-어떤 이유로 인스턴스가 중단되거나 스팟 가격 상승을 이유로 방해를 받고 나면 스팟 요청이 다시 전달돼서 요청이 검증되면 다시 인스턴스가 시작됨 > 지속적 요청 모드에서는 스팟 인스턴스가 중단되어도 스팟 요청이 여전히 활성화되어 있기 때문에 자동으로 인스턴스가 활성화됨
-Cancelling a spot request does not terminate instances
스팟 요청을 취소하는 경우 기존에 실행했던 인스턴스는 종료가 되지 않음!!!
스팟 인스턴스를 영구히 종료하고 다시 실행될 일이 없게 하려면 1. 스팟 요청 삭제 / 2. 스팟 인스턴스 삭제
스팟 요청 때문에 인스턴스가 새로 만들어질 수 있기 때문에 순서를 지켜야함
한 세트의 스팟 인스턴스에다 선택적으로 온디맨드 인스턴스를 조합해 사용하는 방식
스팟 플릿을 이용해 여러가지 런치풀과 인스턴스 유형을 다양하게 정의할 수 있음
스팟 플릿은 스팟 인스턴스와 선택적 온디맨드 인스턴스의 집합이를 통해 가장 저렴한 가격으로 스팟 인스턴스를 자동으로 요청
Spot Fleets = set of Spot Instances + (optional) On Demand Instances
The Spot Fleet will try to meet the target capacity with price constraints:
Define possible lauch pools : instances type(ex t5.micro), OS, Availability zones
Can have multiple lauch pools, so that the fleet can choose
Spot Fleet stop launching instances when reaching capacity or max cost
스팟 플릿이 정해진 예산 혹은 원하는 용량에 달한 경우 인스턴스 실행을 멈춘다.
Spot instance 할당 전략:
lowestPrice: from the pool with the lowest price(cost optimization, short workload)
diversified: distributed across all pools (great for availiability, long workload) 내가 기존에 정의한 모든 풀에 걸쳐 인스턴스가 분산됨 한 풀이 중단되도 다른 풀이 살아있어서 안정적임
capacityOptimized: pool with the optimal capacity for the number of instances 인스턴스 개수에 따라 최적 용량으로 실행이 되고 적절한 풀ㅇㄹ 찾아주는 옵션
Spot Fleets allow us th automatically request Spot Instances with the lowest price
온디맨드의 비교하면 74퍼센트 비용 절감