[筆記] AWS EC2
類別
EC2 Instance
實例類型 | 意義 | 適用場景 |
---|---|---|
m5 | 通用型實例 | 應用程序伺服器、中型資料庫、資料處理工作 |
c5 | 計算密集型實例 | 批次處理工作、資料分析、多媒體處理 |
r5 | 內存密集型實例 | 資料庫伺服器、內存資料庫、內存緩存 |
p3 | GPU 加速實例 | 深度學習、機器學習、高性能計算 |
g4 | GPU 加速實例 | 遊戲伺服器、影片編解碼、虛擬桌面 |
t3a | 類似於 t2,基於 AMD 處理器 | 低成本需求 |
z1d | 高速本地存儲實例 | 需要高性能本地存儲的工作負載,如資料庫和分析 |
EC2 Instance Level
.後面關鍵字代表該instance的等級, 愈大代表cpu,ram…等級愈高
實例大小 |
---|
m5.large |
m5.xlarge |
m5.2xlarge |
m5.4xlarge |
m5.12xlarge |
m5.24xlarge |
tenancy
租約方式
type | description |
---|---|
default | 共享硬體 |
dedicated | 專用硬體,實體機,但是自動分配, 無法指定位置 |
host | 專用硬體, 且可以控制放置位置 |
Instance Store
存儲主要存在於一些特殊的實例類型中,這些實例類型針對高 I/O 性能和臨時存儲進行了優化,
例如:
type | description |
---|---|
I3 系列 | 提供非常高的 Instance Store 存儲容量 |
C5d 系列 | 通用計算實例類型,提供 Instance Store |
R5d 系列 | 內存優化實例類型,提供 Instance Store |
這些機型上的存儲是臨時的, 關機後會消失, 且無法被snapshot , 適合用來做cache, buffer
若有持久化需求, 則需考慮 EBS 或是 EFS …
計價
EC2 On Demand
- Linux and Windows 一分鐘後,以秒計費
- 其餘系統以小時計費
- 最高的費率,但無須預繳
- 無長期承諾使用
使用場景: 短期且無間斷服務
EC2 Reserve Instance
預定特定instance的EC2 Instance, 以獲得折扣
- 最多可以則扣 70% 左右, 3折… 相較於 EC2 On Demand 費率
- 保留特定類型的EC2 Instance (區域,instance,系統…)
- 保留1 or 3年, discount + , +++
- 付款方式, 不預繳, 部份預繳, 全部預繳, discount +,++,+++
- 保留 instance scope, 可選擇特定區域 region e.g. ap-northeast-1a, 或是特定AZ, AZ是指某個區域中的資料中心, e.g. ap-northeast-1a 可能就有2-3個AZ組成
- 可將reserve instance於 Reserve Instance Marketplace 買賣
- Convertible Reserve, 為特殊型, 可隨意切換 instance 系統 租約.. , 高彈性, 但優惠較低 最多66%
使用場景: 穩定狀態的服務, e.g. 資料庫
EC2 Savings
承諾花費, 以獲得折扣
- 折扣程度依據長期使用狀況, 最多至72% discount
- 需承諾使用量 , e.g. 每小時花10元, 持續 1 or 3 年 …
- 若超出承諾的使用量, 費率則是以 EC2 On Demand 計算
- 會被鎖定使用 特定instance與區域 e.g. M5 in us-east-I
- flexible across, 可彈性選擇instance等級與OS,租約 e.g. m5 xlarge, m5 2xlarge,
EC2 Spot instance
犧牲可用性, 以獲得折扣
- 最便宜的計價方式, 通常是 EC2 On Demand 的 1/10
- 但是不保證可用性, 有可能隨時被中斷
使用場景: Batch jobs, Data analysis, Image processing 等等… 可以彈性接受中斷的服務
EC2 Dedicated Instance
- EC2實體機, 不共享資源
EC2 Dedicated Hosts
- EC2特定主機變成你專用的機器
- 最貴的計價方式
- 可用 On-Demand 或是 Reserved (70%) 的方案計費
使用場景: 軟體授權限制, 需要綁定硬體
EC2 Capacity Reservation
- 保留特定區域的 EC2 主機配額, 以防高峰時期有資源擴展
費用同 on-Demand
Bootstrapping
啟動EC2時, 可以在第一次被啟動時,執行shell script,
在創建EC2時 > Advanced Details > User data(Optional)
啟動時安裝docker(ubuntu22.04)
c#!/bin/bash
# Install docker
# Add Docker's official GPG key:
apt-get update -y
apt-get install ca-certificates curl -y
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update -y
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
gpasswd -a ubuntu docker
newgrp docker
EC2 Instance Role
- 用來授予 EC2 instance 存取 AWS 服務的權限, 不需要使用密鑰
- 一般aws cli是透過某個user的密鑰來操作aws服務, 等同藉由user的身份來操作aws服務, role可以理解成不能被登錄的user, 可以直接掛ec2上, 讓ec2可以直接操作aws服務, 不需要密鑰
AMIs
Amazon Machine Images
其實就是虛擬機的映像檔, 可用來創建EC2實例
在佈署好的EC2 instance > Actions > Image and templates > Create image
可將目前的EC2 instance創建成AMI, 之後就可以用這個AMI創建新的EC2 instance
需注意AMI是 region level, 所以要在同一個region才能使用