觀點 · 資訊分享

AWS Lambda 程式碼能放在自己的 S3:不佔 Lambda 額度,託管額度預設也從 75 GB 提到 300 GB

AWS Lambda 在 7 月 15 日支援直接引用你自己 S3 裡的程式碼,不再複製一份進 Lambda 的託管儲存,也就不佔額度。同時 Lambda 託管程式碼儲存的預設額度,從每區域 75 GB 提高到 300 GB。

發布
2026-07-15
篇幅
約 4 分鐘 · 1,839 字
結構
8 節 + 3 題常見問題
標籤
#AWS#Lambda#Amazon S3#Serverless#部署
AWS Lambda 程式碼能放在自己的 S3:不佔 Lambda 額度,託管額度預設也從 75 GB 提到 300 GB

一句話看懂:AWS Lambda 現在可以直接引用你自己 S3 裡的程式碼,不用再複製一份進 Lambda,也就不佔 Lambda 的儲存額度;同時預設額度從每區域 75 GB 提高到 300 GB。

Lambda 支援自管 S3 程式碼儲存資訊圖卡:程式碼直接引用你的 S3,不佔 Lambda 儲存額度

先用白話講:Lambda 為什麼要「複製」程式碼?

想像你把一份合約的正本放在自己家的保險櫃,但每次要給銀行辦事,銀行就先影印一份存進它的檔案室。這樣銀行用起來快,但問題是:你家的保險櫃有一份、銀行有一份,你的帳號在銀行的檔案室也有容量上限,影印太多就滿了。

AWS Lambda 是一種「不用管伺服器」的服務:你上傳一份程式的壓縮檔(部署包),平常不跑,有事件來才執行。以前,無論你的部署包放在哪裡,Lambda 都會複製一份到它自己管理的儲存空間,而且這份複製會算進你帳號的額度。

發生什麼事

AWS 在 7 月 15 日宣布兩件事:

  1. 自管 S3 程式碼儲存:Lambda 現在可以直接引用你自己 S3 儲存貯體裡的程式碼,不再建立中間的複製
  2. 預設額度提高:Lambda 託管程式碼儲存的預設上限,從每個帳號每個區域 75 GB,提高到 300 GB

官方說明,函式和 layer 很多的客戶,常常超過 75 GB,得開支援單才能增加額度。新做法讓你可以存放 S3 容許的任意多程式碼。另外,因為省掉了複製步驟,函式在建立與更新之後可以更快就緒。

費用呢?

AWS 說 Lambda 不會額外收費:你只付標準的 S3 儲存費用,以及(如果有的話)跨區域資料傳輸費。

給開發者的技術細節

設定步驟(依官方文件):

  1. 準備 S3 儲存貯體,並開啟版本控制,Lambda 需要用版本來辨識該用哪一版程式碼
  2. 上傳 .zip 部署包
  3. 授權 Lambda 服務主體(lambda.amazonaws.com)對該物件有 s3:GetObject 與 s3:GetObjectVersion;這是 S3 的資源型政策,與函式的執行角色是分開的
  4. 建立或更新函式/layer 時,指定 S3 物件、金鑰、物件版本,並把 S3ObjectStorageMode 設為 REFERENCE

AWS CLI 的更新範例:

aws lambda update-function-code \
  --function-name my-function \
  --s3-bucket my-bucket \
  --s3-key my-function.zip \
  --s3-object-version abc123def456 \
  --s3-object-storage-mode REFERENCE

需要留意的地方:

  • 每次呼叫 update-function-code 都要指定 REFERENCE;忘了指定,預設會變回 COPY,程式碼又被複製進 Lambda 儲存
  • REFERENCE 模式下,Lambda 主控台的程式碼編輯器無法使用;要改程式,就更新 S3 裡的 .zip 再更新函式
  • 解壓縮後 250 MB 的部署包上限沒有改變
  • 相容所有 S3 儲存類別,但不包含 Glacier 系列
  • 官方公告說,所有商業 AWS 區域都能用

什麼情況值得改用?

情況 建議
函式不多、沒撞過額度 維持預設,額度已提高到 300 GB
函式與 layer 很多、常撞額度 評估 REFERENCE,免開支援單
已用 S3 管理所有部署包、想有單一來源 REFERENCE 比較順手
習慣在主控台直接改程式碼 不適合,編輯器在此模式下無法使用

我的看法

說實話,75 GB 對大多數個人或小團隊的專案來說已經很夠。我反而覺得這次更新比較有感的,是「單一來源」這個概念:部署包只放在自己的 S3,Lambda 去讀,不會出現「S3 裡一份、Lambda 裡又一份」的混亂。

但它也有代價:要記得開版本控制、設好資源政策,而且每次更新都要帶參數。如果你的部署流程是用 CloudFormation 或 SAM 這類工具,一次設定好就沒問題;如果是手動用 CLI,就很容易漏掉。建議先在不重要的函式試一次,再決定要不要全面導入。

名詞小辭典

  • Lambda:AWS 的無伺服器運算服務,程式只在被觸發時才執行,按次數與時間計費。
  • Layer:Lambda 的共用程式庫套件,讓多個函式共用同一批相依檔案。
  • S3:AWS 的物件儲存服務,常用來放檔案、備份與部署包。
  • S3 版本控制:每次上傳同名檔案,都保留舊版本,Lambda 靠它辨識該用哪一版。

資料來源

常見問題

我一定要改成 REFERENCE 嗎?
不用。預設仍是複製(COPY)模式,也沒有被取消。預設額度已提高到 300 GB,多數人不會撞到;函式與 layer 數量很大、想減少部署步驟的團隊,才特別值得評估 REFERENCE。
S3 版本控制一定要開嗎?
要。官方文件說 Lambda 需要靠 S3 版本控制來辨識該使用哪個版本的程式碼;每次上傳新的 .zip,S3 會建立新版本,Lambda 才能區分更新。
會改變部署包的大小限制嗎?
不會。解壓縮後 250 MB 的上限不變。另外,自管儲存相容所有 S3 儲存類別,但不包含 Glacier 系列。
LINE