觀點 · 資訊分享

AWS Lambda 讀 S3 檔案多了一條直達車:大檔不用再繞路,開不開改由你決定

AWS 讓 Lambda 函式可以自己設定要不要「直接讀取」S3 Files 背後的 S3 儲存桶。以前只有記憶體 512 MB 以上才會自動開,現在不管記憶體多大都能手動開或關,也沒有額外費用。

發布
2026-09-12
篇幅
約 4 分鐘 · 1,728 字
結構
7 節 + 3 題常見問題
標籤
#AWS#AWS Lambda#Amazon S3 Files#檔案處理
AWS Lambda 讀 S3 檔案多了一條直達車:大檔不用再繞路,開不開改由你決定

一句話看懂:AWS 讓 Lambda 可以自己決定要不要「直接讀取」S3 Files 背後的 S3 儲存桶,大檔案多的工作可以走直達車,不再被函式的記憶體大小綁住。

Lambda 讀 S3 檔案可自選直達車資訊圖卡:S3 Files 的直接讀取,現在不看記憶體大小,自己決定開或關

先用白話講:S3 Files 與「直接讀取」是什麼?

想像 S3 是一座超大的倉庫,東西很多、很耐放,但每次都得填單子去領貨。S3 Files 就像在倉庫門口加了一間「前台」,讓你的程式像翻自己電腦裡的資料夾一樣讀檔案,不用再學倉庫的領貨流程。

這間前台有兩種送貨方式:

  • 前台的小推車:常用的、小份的東西先放在前台的高效能儲存,拿起來最快。
  • 直達車:遇到整箱的大貨,乾脆讓你直接去倉庫(S3)搬,一次可以搬很多。

這次更新讓 Lambda 的使用者可以自己決定:要不要開放「直達車」。

發生什麼事

AWS 在 2026 年 9 月 11 日(美國時間)發布更新:

  • Lambda 現在可以明確開啟或關閉 S3 Files 的直接讀取,不用再看函式的記憶體大小
  • 開啟:1 MB 以上的檔案直接從 S3 儲存桶讀取,吞吐量(單位時間能搬多少資料)最大;較小的檔案仍由高效能儲存提供
  • 關閉:所有讀取都走 S3 Files 的高效能儲存,延遲(等待時間)最低
  • 以前的規則是:只有設定 512 MB 以上記憶體的函式才會預設直讀 S3,想要調整也沒辦法
  • 沒有額外費用,照 Lambda 與 S3 Files 原本的價格收費
  • 支援所有 AWS 商業區域與 GovCloud(美國東部、西部),但不含亞太(紐西蘭)、中東(巴林)、中東(阿聯)

三個設定值怎麼選?

設定值 行為 適合
AUTO(預設) 函式記憶體 512 MB 以上才啟用直讀 沒特別需求,維持原狀
ENABLED 不管記憶體多大都啟用直讀 記憶體設得小,但常讀大檔案
DISABLED 全部走高效能儲存 大量小檔案、很在意回應速度

給開發者的技術細節

這項設定放在函式的 FileSystemConfigs 裡,名稱是 DirectS3Read,只對 S3 檔案系統有效。可以用主控台、AWS CLI、SDK 或 CloudFormation 設定。示意如下(其他欄位照你原本的設定):

{
  "FileSystemConfigs": [
    {
      "...": "其他欄位照原本設定",
      "DirectS3Read": "ENABLED"
    }
  ]
}

使用前要注意:

  • 權限要補:直接讀取會繞過檔案系統去碰 S3,所以函式的執行角色除了 s3files:ClientMount(要寫入時再加 s3files:ClientWrite),還需要 s3:GetObject 與 s3:GetObjectVersion
  • 網路條件:函式要和 S3 Files 的掛載點在同一個 VPC,安全群組要放行 NFS 的 2049 埠
  • 會自動退回:直接讀取失敗時,Lambda 會自動改走檔案系統,不會讓整個讀取失敗
  • 更新後,下次呼叫函式時才會套用新的檔案系統設定

我的看法

接案時常遇到「客戶上傳一堆檔案,後端要批次處理」的需求,為了省錢,Lambda 的記憶體通常會設得偏小。以前這種函式碰到大檔案,就算 S3 本身很快,也沒辦法走直達車;現在多了一個開關,等於把效能調整的權利還給開發者。

不過我會先實測再決定:如果檔案多數都小於 1 MB,這個開關幾乎沒差;如果混著大小檔案,兩種設定的速度和帳單我都會各跑一次看看。另外別忘了執行角色要補 S3 的讀取權限,不然只會默默退回舊路徑,你以為開了但其實沒有。

名詞小辭典

  • AWS Lambda:按次數與執行時間計費的無伺服器運算服務,只要上傳程式,AWS 負責幫你執行。
  • S3:AWS 的物件儲存服務,可以想成雲端上的超大硬碟,用來存檔案、備份、網站素材。
  • 吞吐量:單位時間內能傳輸的資料量,像水管的粗細。
  • 延遲:從發出要求到拿到第一筆資料所花的等待時間。

資料來源

常見問題

S3 Files 是什麼?
它讓 AWS 的運算資源(例如 Lambda)可以像讀一般資料夾那樣讀寫 S3 裡的物件,不用另外呼叫 S3 的 API。檔案掛載在函式裡 /mnt/ 開頭的路徑底下。
DirectS3Read 的三個值有什麼差別?
AUTO 是預設,只有函式記憶體 512 MB 以上才直接讀 S3;ENABLED 不管記憶體多大都啟用直接讀取;DISABLED 則所有讀取都走 S3 Files 的高效能儲存。
直接讀取失敗了怎麼辦?
官方文件寫明,直接讀取失敗時 Lambda 會自動退回,改走檔案系統讀取。不過要使用直接讀取,函式的執行角色必須有 s3:GetObject 與 s3:GetObjectVersion 權限。
LINE