觀點 · 資訊分享
AWS Lambda 容器映像也能用 SnapStart:冷啟動從好幾秒縮到不到 1 秒,但台北區域還不能開
AWS Lambda 的 SnapStart 開始支援用容器映像打包的函式:先把開機好的狀態拍成快照,之後直接接著跑。Python、.NET、Java 都適用,但台北區域暫不支援。
- 發布
- 2026-09-03
- 篇幅
- 約 4 分鐘 · 1,812 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:AWS Lambda 的 SnapStart 開始支援容器映像,函式不用每次從零開機,冷啟動可以從好幾秒縮到不到 1 秒,但台北區域暫時不能用。

先用白話講:SnapStart 是什麼?
想像一間早餐店,每天早上開門前要先熱鍋、備料、擺好餐具,花半小時才能開始接單。如果能把「一切準備好」的那一刻整個存起來,隔天一按鍵就回到那個狀態,客人一進門就能點餐。
SnapStart 就是 Lambda 的這顆按鍵。Lambda 是 AWS 的「無伺服器」服務:你只上傳程式,有人呼叫時 AWS 才幫你開一台小機器來跑。問題是開機要載入套件、初始化框架,第一個請求常常要多等好幾秒,這叫做冷啟動。SnapStart 會在你發布版本時,先把初始化完成的狀態拍成快照,之後直接從快照接著跑。
發生什麼事
AWS 在 9 月 2 日宣布,SnapStart 開始支援用容器映像打包的函式。
- 以前 SnapStart 只支援 zip 打包的受管執行環境(Python、.NET、Java)
- 容器映像最大可以到 10 GB,映像越大,冷啟動時要下載的層和初始化的東西越多,官方說常常要好幾秒
- 開了 SnapStart 後,官方說啟動時間最快可以縮到不到 1 秒,適合 AI 推論、互動式 API 這類怕延遲的工作
- 除了紐西蘭與台北區域,其他所有商業區域都能用
會影響誰?
| 你的情況 | 能不能直接開 |
|---|---|
| AWS 官方基底映像的 Java 11+、Python 3.12+、.NET 8+ | 可以,用法跟 zip 版一樣 |
| 官方基底映像的 Node.js、Ruby,或自訂基底映像 | 要照文件另外處理執行階段掛勾 |
| 函式部署在台北區域 | 目前不行 |
| 暫存空間設超過 512 MB、用了 EFS 或佈建並行 | 不支援 |
給開發者的技術細節
SnapStart 只能用在已發布的版本和指向版本的別名,$LATEST 不行。用 AWS CLI 開啟:
aws lambda update-function-configuration \
--function-name my-fn \
--snap-start ApplyOn=PublishedVersions
aws lambda publish-version --function-name my-fn
- 唯一值要小心:同一份快照會被拿來還原很多個執行環境,初始化時產生的亂數、ID、密鑰會變成大家共用,要改到處理請求時才產生
- 連線要重檢:初始化時建立的資料庫或網路連線,還原後不保證還活著;AWS SDK 建立的連線多半會自動恢復
- 費用:Java 受管執行環境不額外收費;其他情況要付快照快取費(每個版本最低算 3 小時)和每次還原的費用,記得刪掉沒在用的舊版本,不然快取費會一直算
我的看法
接案時很常遇到這種組合:API 用 .NET 寫,為了跟其他服務用同一套部署流程而打包成容器。這時 Lambda 的冷啟動一直是讓人猶豫的地方,使用者第一次點開頁面就要多等好幾秒,體感很差。這次容器也能開 SnapStart,算是補上很實際的一塊。
不過台灣讀者要注意,台北區域剛好在不支援名單裡。如果你為了延遲或資料落地選台北區域,這個功能暫時用不到;反過來說,部署在東京或新加坡的人可以先找一個冷啟動最痛的函式試試看,順便檢查程式有沒有在初始化階段產生唯一值,這是最容易踩到的地方。
名詞小辭典
- Lambda:AWS 的無伺服器運算服務,只上傳程式、依呼叫次數和執行時間付費,不用自己管主機。
- 冷啟動(Cold Start):函式閒置一陣子後第一次被呼叫,要先開新環境、載入程式,所以比較慢。
- 容器映像(Container Image):把程式和它需要的所有套件打包成一個檔案,在哪裡跑都一樣。
- 快照(Snapshot):把某一刻的記憶體和磁碟狀態整個存起來,之後可以直接回到那一刻。