前幾篇我們從 VPC、Subnet,一路講到路由表、IGW,還有 Security Group 比較有概念了。今天終於要來認識 EC2 主機哩 :D
前面網路準備好了,接下來總要有台機器放我們的後端程式吧?這次就用 Amazon EC2 來建立一台虛擬主機
每一台建立出來的主機,AWS 叫它 Instance(執行個體),現在來看它用什麼系統、多少記憶體,以及檔案放哪裡
圖裡紫色線是主機連接磁碟,橘框則是前篇認識的 SG。建立主機時會看到這幾個選項:
| 選項 | 在選什麼? |
|---|---|
| AMI | 建立主機用的系統範本,例如 Ubuntu |
| Instance type | CPU、記憶體等主機規格 |
| EBS | 保存系統與檔案的磁碟 |
| VPC、Subnet | 主機放在哪個網路 |
| Security Group | 允許哪些來源連到哪些 Port |
| Key pair | 這次用 SSH 登入主機的公鑰與私鑰 |
假設你說:「我要一台 Ubuntu 主機來跑 Node.js。」那還得再想一下,要給它多少 CPU、多少記憶體?
這就是 AMI 跟 Instance type 分開選的原因
AMI(Amazon Machine Image) 可以先想成系統範本,裡面有作業系統,也可以有預先裝好的軟體。同一份 AMI 能拿來開好幾台主機,但你後來在某台裝了 Node.js,其他台和原本的 AMI 不會跟著改
Instance type 則是在選 CPU、記憶體等規格,也附上(規格介紹)
這次用 Ubuntu Server 24.04 LTS、64-bit Arm,搭配 t4g.micro。因為 T4g 是 Arm 架構,系統和要裝的軟體也得支援 Arm
主機有了 CPU、記憶體,還需要磁碟來放 Ubuntu、程式碼跟設定檔。這次用的是 EBS,可以先把它想成接給 EC2 用的硬碟,AWS 叫一個磁碟區 Volume
這次用 SSH 金鑰登入。Key pai 就是公鑰與私鑰:公鑰放在主機,私鑰自己保管,登入時用來證明你持有對應的金鑰
等一下下載的 .pem 就是私鑰,收在自己電腦就好,這個也不能外流勒
| 要做什麼? | 看哪裡? |
|---|---|
| 在 AWS 建立、停止 EC2 | IAM 權限 |
| 連到 EC2 的 TCP 22 | 網路路徑與 SG 規則 |
| 用 SSH 登入 Ubuntu | 系統使用者、私鑰與主機登入設定 |
圖裡省略了前幾篇的路由、公有 IP,這些條件還是要有。就算 SG 允許你連 TCP 22,拿錯私鑰也登不進去;私鑰正確,來源被 SG 擋住,一樣連不上
藉由這樣的措施,來做好資訊安全的把關~
先來算一下錢,因為主機、磁碟、公有 IP,是分開計費的
這裡用東京 ap-northeast-1、一台 t4g.micro、一般 Ubuntu Linux、8 GiB 的 gp3 磁碟,以及一個公有 IPv4 來算。主機採 On-Demand(隨用隨付),CPU 模式設為 Standard,磁碟不另外增加效能
假設連續開 30 天,也就是 720 小時,先不扣免費額度或 credits,預算大約是這樣:
| 項目 | 單價 | 連續使用 30 天 |
|---|---|---|
EC2 t4g.micro 主機 |
US$0.0108/小時 | US$7.78 |
| EBS gp3 磁碟 8 GiB | 每 GB-月 US$0.096,這裡配置 8 GiB | US$0.77 |
| 一個公有 IPv4 | US$0.005/小時 | US$3.60 |
| 這三項合計 | 依未四捨五入數值加總 | 約 US$12.14/月 |
也附上來源 EC2 價目表、EBS 價目表與公有 IPv4 價目表
換 Region、規格或使用時間的話,金額就會跟著變
前面建立的 VPC、Subnet、路由表、IGW 與 SG,本身不另外收基本使用費;但網路傳輸仍要依使用情況計費
接下來用 AWS Console,也就是瀏覽器上的 AWS 管理頁面,把剛剛的設定實際選一次
用有建立 EC2 權限的身分登入,Region 選 Tokyo。下面沿用前面準備的 VPC、Public Subnet、IGW 路由與 SG,都要在同一區
到 EC2 → Instances → Launch instances,名稱填 my-web-server,方便之後在清單找到它。這是主機名稱,不是網站網址
沿用前面算過預算的小型主機:官方 Canonical 的 Ubuntu Server 24.04 LTS、64-bit Arm,搭配 t4g.micro
下一篇 SSH 登入就要用到它。在 Key pair (login) → Create new key pair,名稱填 my-web-key,選 RSA、.pem,配合後面使用的 OpenSSH
下載後收好,確認表單已選中這組 Key pair。AWS 產生的私鑰只有建立時能下載,之後不能回來補抓同一份
這次從自己的電腦,透過 Internet 直接連 EC2,所以主機要有公有 IP,也要有通往 IGW 的路
到 Network settings → Edit,選自己的 VPC、Public Subnet,將 Auto-assign public IP 設為 Enable,再選前面準備的 SG。別直接用表單預選的網路,確認是自己前面那一組
SSH TCP 22 的來源,填自己目前上網的公有 IP /32。因為這是遠端操作主機的入口,這次自己要連,先允許自己的上網來源就好,不用開給所有人
到 Configure storage,系統與檔案先用 8 GiB、gp3,沿用前面的預算。開啟加密,保護磁碟資料;讀寫效能維持基本的 3,000 IOPS、125 MiB/s
接著到 Advanced details → Credit specification。這裡有 Standard 跟 Unlimited,差在哪?
用六角學院學習系統來看。平常學生看課程、交作業,時間比較分散,假設這台 EC2 的 CPU 使用量多數時間低於基準,就可以慢慢存點數
到了開放課程報名那一刻,短時間很多人同時送出報名,假設 CPU 需求也跟著超過基準,這時就拿存下來的點數來用
這就是 T4g 的 CPU 點數:平常比較閒時累積,忙起來再拿出來用
它有一個基準效能,也就是不需要持續消耗存下來的點數,就能維持的 CPU 使用程度。低於基準時存點數,高於基準時消耗點數
假設情境是:平常看課、交作業且 CPU 低於基準時累積點數,開放報名時使用
Standard: 如果這波報名還沒結束,點數卻快用完了,CPU 就會逐漸降回基準效能。主機還在跑,但處理報名可能變慢。不會多收超額 CPU 點數費,原本的主機費照算
Unlimited: 同樣遇到報名人潮,存的點數用完,還能用「超額點數」繼續處理。人潮過後,CPU 使用量降到基準以下,就能用新累積的點數抵回來;如果一直很忙、超過可抵額度,就會另外收費
如果不希望超出額外主機費用,我會建議先選 Standard 就好。主機開著、CPU 用量低於基準時,可以慢慢存點數,之後短時間忙起來再拿來用,也不用擔心多出超額 CPU 點數費;只是點數不足時,程式可能變慢
回到六角開放報名的例子,Standard 存的點數夠,也能應付短時間的忙碌。如果不能接受因點數不足降速,再評估 Unlimited 和費用
如果每天都長時間吃滿 CPU,就該比較其他提供固定 CPU 效能的機型,不要只看 micro 的基本月費覺得便宜哦,附上(AWS 的選型比較)
按下去就要開始算錢了,規格最後是:1 台、Ubuntu Arm、t4g.micro、正確的網路與 SG、8 GiB 磁碟,再按 Launch instance
回 Instances,等它顯示 Running,並且 Status checks 通過。還在 Initializing,就等一下再重新整理~(AWS 建立主機教學)
還沒哩,Running 只是主機開了,裡面還沒有你的網站
接下來還得裝 Node.js 等執行環境、放程式、設環境變數,再把程式跑起來。SG 開了 TCP 443,也不會順便幫你裝網站、設定 HTTPS 憑證
EC2 裡的系統更新、軟體與程式設定,還是有自己要管理的部分
如果不想讓 EC2 繼續運作,可以按 Instance state → Stop instance,等它變成 Stopped,先停下運算費
最後小結一下:
| 想處理的事情 | 要看哪裡? |
|---|---|
| 決定建立時使用的系統 | AMI |
| 調整 CPU、記憶體規格 | Instance type |
| 保存系統與檔案、評估磁碟空間 | EBS |
| 決定主機放哪裡、哪些來源能連進來 | VPC、Subnet、路由與 SG |
| 管理 AWS 資源,或用 SSH 登入主機 | 分別看 IAM 權限與主機登入驗證 |
今天終於 EC2 建起來,也知道它有哪些設定、會花哪些錢
下一篇我們用 SSH 登入、存一個檔案,再把主機關掉重開,看看 IP 跟檔案還在不在。我們下篇見 :D