AMI(Amazon Machine Image)是 EC2 instance 的完整映像快照。它包含作業系統、已安裝的軟體、設定檔、磁碟內容——從一個 AMI 啟動新的 instance,得到的是跟拍照時完全一樣的環境。

概念位置

AMI 在 infra 系列裡有兩個角色。第一個是接手維運時的保險——對 VM 建一個 AMI 等於把整台機器拍下來,做任何改動前都有一個可回退的基線。第二個是環境標準化——把裝好軟體的 instance 做成 AMI(golden image),之後開新機器都從這個 AMI 啟動,確保每台機器的基線一致。

可觀察訊號

需要理解 AMI 的情境包括:接手一台不確定裡面裝了什麼的 EC2(先拍 AMI 再動)、要在另一個 region 或帳號複製一台同樣的機器、OS 升級時要保留舊環境作為 rollback、或設計 auto-scaling 的 launch template(需要指定 AMI)。

設計責任

操作用途注意事項
建立 AMI對現有 instance 拍照--no-reboot 避免服務中斷,但檔案系統一致性略低
從 AMI 啟動 instance複製環境新 instance 有新的 IP、hostname、instance ID
跨 region 複製 AMI災難復原或多 region 部署複製是非同步的、完成後才能在目標 region 使用
共享 AMI跨帳號使用同一個映像需要設定 AMI 的 launch permission

AMI 包含 EBS snapshot——AMI 的儲存成本就是底層 EBS snapshot 的成本(按儲存量計費)。不再使用的 AMI 要記得 deregister 並刪除對應的 snapshot,否則持續計費。

跟 container image 的差別:AMI 是整台 VM 的映像(含 OS、kernel、系統套件),container image 只包含應用程式和它的依賴(共用 host OS 的 kernel)。AMI 以 GB 計(通常 8-50 GB),container image 以 MB 計(通常 50-500 MB)。

鄰卡