觀點 · 資訊分享
AWS Lambda 讀 S3 檔案多了一條直達車:大檔不用再繞路,開不開改由你決定
AWS 讓 Lambda 函式可以自己設定要不要「直接讀取」S3 Files 背後的 S3 儲存桶。以前只有記憶體 512 MB 以上才會自動開,現在不管記憶體多大都能手動開或關,也沒有額外費用。
- 發布
- 2026-09-12
- 篇幅
- 約 4 分鐘 · 1,728 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

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

先用白話講: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 權限。
接著讀
全部觀點 →AWS Lambda Web Functions 登場:Express、Next.js 不改寫直接上 Lambda,一個環境接 128 個請求AWS 推出 Lambda Web Functions,讓本來就會「聽連接埠」的 Node.js 網站伺服器原封不動部署到 Lambda,一行指令拿到 HTTPS 網址,還能一鍵多區域部署。計費改成只算 CPU 實際運算時間,等資料庫回應的時間幾乎不花錢。閱讀 →AWS Lambda 執行上限從 15 分鐘拉到 90 分鐘:轉檔、批次工作不用再切段,但只限 Managed InstancesAWS 讓跑在 Lambda Managed Instances 上的函式,非同步呼叫最長可以執行 90 分鐘,是原本 15 分鐘的 6 倍。影片轉檔、大量計算這類長工作可以留在 Lambda,不過一般 Lambda 與同步呼叫的上限沒變。閱讀 →AWS 推出 ECS Gateway:容器服務的對外入口交給 AWS 代管,25 個服務共用一台負載平衡器AWS 推出 ECS Gateway,負載平衡器、憑證、安全群組都由 ECS 自動建立與回收,最多 25 個服務共用一台 ALB。Gateway 本身不收費,只付底層資源的錢。閱讀 →