本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 執行期
Lambda 透過使用執行期支援多種語言。執行期會提供特定於語言的環境,其可轉傳調用事件、內容資訊以及 Lambda 與函數之間的回應。您可以使用由 Lambda 提供的執行期或是自行建置。
Lambda 與您選擇的執行時期無關。對於簡單的函數,Python 和 Node.js 等解釋型語言可提供最快的效能。對於運算較複雜的函數,像 Java 這樣的編譯語言通常初始化速度較慢,但在 Lambda 處理程序中的執行速度很快。執行時期的選擇也受開發人員偏好和語言熟悉程度的影響。
每個主要的程式設計語言版本都有獨立的執行階段,且具有唯一的執行階段識別符,例如 nodejs24.x 或 python3.14。若要設定函數以使用新的主要語言版本,您需變更執行期識別符。由於 AWS Lambda 無法保證主要版本之間的回溯相容性,因此這是客戶驅動的操作。
針對 定義為容器映像的函數,您可以在建立容器映像時選擇執行期和 Linux 發行版。若要變更執行期,請建立新的容器映像。
若要為部署套件使用 .zip 封存檔,您可以在建立函數時選擇執行期。若要變更執行期,您可以更新函數的組態。執行期與其中一個 Amazon Linux 發行版配對。基礎執行環境會提供其他程式庫以及環境變數,讓您可以從函數程式碼中存取。
Lambda 在執行環境中調用您的函數。執行環境提供安全且隔離的執行期環境,它會管理執行您的函數所需的資源。Lambda 會從之前的調用 (若有) 中重新使用執行環境,或者它會建立一個新的執行環境。
若要在 Lambda 中使用其他語言,例如 Go 或 Rust,請使用僅限作業系統的執行期。Lambda 執行環境提供了執行期介面,用於取得調用事件及傳送回應。您可以透過實作自訂執行期和您的函數程式碼,或在一個層中部署其他語言。
支援的執行時期
下表列出受支援的 Lambda 執行期和預計的棄用日期。在執行期被棄用後,您依然能在限定時間內建立與更新函數。如需詳細資訊,請參閱棄用後的執行時期使用情況。根據我們的 執行期淘汰政策,該表格提供了目前預測的執行時期的棄用日期。這些日期提供用於規劃目的,且可能發生變更。
重要
Amazon Linux 2 的生命週期將於 2026 年 6 月 30 日結束。除了語言執行期修補程式之外,適用於 Java 8 (AL2)、Java 11、Java 17、Python 3.10、Python 3.11 和 provided.al2 的 Lambda 執行期和容器基礎映像將繼續接收重大和所選重要
我們建議客戶盡快升級至以 Amazon Linux 2023 為基礎的執行時間。對於升級至 Java 21 或 Java 25 的客戶,您可以使用AWS Transform 自訂來協助進行這些升級。對於無法升級其 Java 版本的客戶,我們計劃在 2026 年第 Q2結束前發行 Java 8、Java 11 和 Java 17 的 Amazon Linux 2023 型執行期。
| Name | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
|---|---|---|---|---|---|
|
Node.js 24 |
|
Amazon Linux 2023 |
2028 年 4 月 30 日 |
2028 年 6 月 1 日 |
2028 年 7 月 1 日 |
|
Node.js 22 |
|
Amazon Linux 2023 |
2027 年 4 月 30 日 |
2027 年 6 月 1 日 |
2027 年 7 月 1 日 |
|
Node.js 20 |
|
Amazon Linux 2023 |
2026 年 4 月 30 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
Python 3.14 |
|
Amazon Linux 2023 |
2029 年 6 月 30 日 |
2029 年 7 月 31 日 |
2029 年 8 月 31 日 |
|
Python 3.13 |
|
Amazon Linux 2023 |
2029 年 6 月 30 日 |
2029 年 7 月 31 日 |
2029 年 8 月 31 日 |
|
Python 3.12 |
|
Amazon Linux 2023 |
2028 年 10 月 31 日 |
2028 年 11 月 30 日 |
2029 年 1 月 10 日 |
|
Python 3.11 |
|
Amazon Linux 2 |
2027 年 6 月 30 日 |
2027 年 7 月 31 日 |
2027 年 8 月 31 日 |
|
Python 3.10 |
|
Amazon Linux 2 |
2026 年 10 月 31 日 |
2026 年 11 月 30 日 |
2027 年 1 月 15 日 |
|
Java 25 |
|
Amazon Linux 2023 |
2029 年 6 月 30 日 |
2029 年 7 月 31 日 |
2029 年 8 月 31 日 |
|
Java 21 |
|
Amazon Linux 2023 |
2029 年 6 月 30 日 |
2029 年 7 月 31 日 |
2029 年 8 月 31 日 |
|
Java 17 |
|
Amazon Linux 2 |
2027 年 6 月 30 日 |
2027 年 7 月 31 日 |
2027 年 8 月 31 日 |
|
Java 11 |
|
Amazon Linux 2 |
2027 年 6 月 30 日 |
2027 年 7 月 31 日 |
2027 年 8 月 31 日 |
|
Java 8 |
|
Amazon Linux 2 |
2027 年 6 月 30 日 |
2027 年 7 月 31 日 |
2027 年 8 月 31 日 |
|
.NET 10 |
|
Amazon Linux 2023 |
2028 年 11 月 14 日 |
2028 年 12 月 14 日 |
2029 年 1 月 15 日 |
|
.NET 9 (僅限容器) |
|
Amazon Linux 2023 |
2026 年 11 月 10 日 |
未排程 |
未排程 |
|
.NET 8 |
|
Amazon Linux 2023 |
2026 年 11 月 10 日 |
2026 年 12 月 10 日 |
2027 年 1 月 11 日 |
|
Ruby 3.4 |
|
Amazon Linux 2023 |
2028 年 3 月 31 日 |
2028 年 4 月 30 日 |
2028 年 5 月 31 日 |
|
Ruby 3.3 |
|
Amazon Linux 2023 |
2027 年 3 月 31 日 |
2027 年 4 月 30 日 |
2027 年 5 月 31 日 |
|
Ruby 3.2 |
|
Amazon Linux 2 |
2026 年 3 月 31 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
僅限作業系統的執行期 |
|
Amazon Linux 2023 |
2029 年 6 月 30 日 |
2029 年 7 月 31 日 |
2029 年 8 月 31 日 |
|
僅限作業系統的執行期 |
|
Amazon Linux 2 |
2026 年 7 月 31 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
注意
對於新區域,Lambda 將不支援設定為在未來 6 個月內棄用的執行階段。
Lambda 透過修補程式和次要版本發布的支援,讓受管執行期和其對應的容器基礎映像檔保持在最新狀態。如需詳細資訊,請參閱 Lambda 執行期更新。
若要以程式設計方式與 Lambda 函數中的其他 AWS 服務 和資源互動,您可以使用其中一個 AWS SDKs。Node.js、Python 和 Ruby 執行時間包含 AWS SDK 的版本。不過,若要維持對相依項的完全控制權,並在執行時期自動更新期間最大化回溯相容性,建議一律將程式碼使用的 SDK 模組 (以及任何相依項) 納入函式的部署套件或 Lambda 層。
建議僅在部署中無法納入額外套件時,才使用執行時期內含的 SDK 版本。例如,當您使用 Lambda 主控台程式碼編輯器或在 CloudFormation 範本中使用內嵌函數程式碼建立函數時。
Lambda 會定期更新 Node.js、Python 和 Ruby 執行時間中包含的 AWS SDKs 版本。若要判斷目前所用執行時期內含的 AWS SDK 版本,請參閱下列章節:
棄用 Go 1.x 執行期後,Lambda 將繼續支援 Go 程式設計語言。如需詳細資訊,請參閱AWS 運算部落格上的將 AWS Lambda 函數從 Go1.x 執行時間遷移至 Amazon Linux 2 上的自訂執行時間。
所有支援的 Lambda 執行時期都支援 x86_64 和 arm64 架構。
新執行期版本
Lambda 僅在發行版本到達語言發布週期的長期支援 (LTS) 階段時提供新語言版本的受管理執行期。例如,對於 Node.js 發布週期
在發行版本達到長期支援階段以前,它將停留於開發中,並且仍可能有重大變更。Lambda 依預設會自動套用執行期更新,因此對執行期版本的重大變更可能使您的函數無法如預期執行。
Lambda 不會為未排定 LTS 發行版本的語言版本提供受管理執行期。
下列清單顯示即將到來的 Lambda 執行期目標啟動月份。這些日期僅為象徵性,並可能有所變更。
-
Ruby 3.5 - 2026 年 3 月
-
AL2023 上的 Java 8、11 和 17 - 2026 年第 2 Q2
-
Node.js 26 - 2026 年 11 月
-
Python 3.15 - 2026 年 11 月
執行期淘汰政策
用於 .zip 壓縮檔的 Lambda 執行時期,均須以接受維護與安全性更新的作業系統、程式設計語言及軟體程式庫的組合為基礎建置。Lambda 的標準淘汰政策是在執行時期的任何主要元件到達社群長期支援 (LTS) 結束,且不再提供安全性更新時,淘汰執行時期。大多數情況下,這是語言執行期,雖然在某些情況下,執行期可以被棄用,因為操作系統 (OS) 到達 LTS 的結束。
取代執行時間之後, AWS 可能不再將安全修補程式或更新套用至該執行時間,使用該執行時間的函數將不再符合技術支援的資格。這類已棄用的執行時期會依現狀提供,無需任何保證,且可能包含問題、錯誤、瑕疵或其他漏洞。
若要進一步了解如何管理執行期升級和棄用,請參閱運算AWS 部落格上的下列章節和管理AWS Lambda 執行期升級
重要
Lambda 偶爾會在執行期支援的語言版本的支援日期結束後,在有限期間內延遲棄用 Lambda 執行期。在此期間,Lambda 僅將安全性修補程式套用至執行期作業系統。Lambda 不會在到達支援結束日期之後,將安全性修補程式套用到程式設計語言執行期。
共同責任模型
Lambda 負責為所有受支援的受管執行時期與容器映像策劃和發布安全性更新。預設情況下,Lambda 會將這些更新自動套用至使用受管執行時期的函數。若預設自動執行時期更新設定已變更,請參閱執行時期管理控制共同責任模型。對於使用容器映像部署的函數,您需負責從最新的基礎映像重建函數的容器映像,並重新部署容器映像。
當執行時期已棄用時,Lambda 更新受管執行時期和容器基礎映像的責任會停止。您有責任升級函數以使用支援的執行時期或基礎映像。
在所有情況下,您都必須負責將更新套用至函數程式碼,包括其相依項。您在共同責任模型下的責任摘要如下表所示。
| 執行時期生命週期階段 | Lambda 的責任 | 您的責任 |
|---|---|---|
| 支援的受管執行時期 |
使用安全修補程式和其他更新來提供定期執行時期更新。 根據預設自動套用執行時期更新 (請參閱 執行時期更新模式,了解非預設行為)。 |
更新您的函數程式碼,包括相依項,以解決任何安全漏洞。 |
| 支援的容器映像 | 使用安全修補程式和其他更新,為容器基礎映像提供定期更新。 |
更新您的函數程式碼,包括相依項,以解決任何安全漏洞。 使用最新的基礎映像,定期重建和重新部署容器映像。 |
| 即將棄用的受管執行時期 |
透過文件、 Health 儀板表電子郵件和 在執行時間棄用之前通知客戶 Trusted Advisor。 執行時期更新的責任會在棄用時結束。 |
監控 Lambda 文件 Health 儀板表、電子郵件或 Trusted Advisor 以取得執行時間棄用資訊。 在棄用先前的執行時期之前,將函數升級至受支援的執行時期。 |
| 即將棄用的容器映像 |
棄用通知不適用於使用容器映像的函數。 容器基礎映像更新的責任會在棄用時結束。 |
在棄用上一個映像之前,請注意棄用排程,並將函數升級至受支援的基礎映像。 |
棄用後的執行時期使用情況
取代執行時間之後, AWS 可能不再將安全修補程式或更新套用至該執行時間,使用該執行時間的函數將不再符合技術支援的資格。雖然您可以無限期地繼續叫用函數,但 AWS 強烈建議您遷移到支援的執行時間。已取代的執行時期「依現狀」提供,無任何保證,且可能包含問題、錯誤、瑕疵或其他漏洞。使用已棄用執行時期的函數也可能會遇到效能降低或其他問題,例如憑證過期,這可能會導致它們停止正常運作。
執行時期被取代後,您隨時可以將函式更新為使用較新版本的受支援執行時期。建議先使用新的執行時期測試函式,再在生產環境中套用變更。函式更新被封鎖後,將無法還原至已取代的執行時期。建議使用函數版本與別名功能,以啟用具有復原功能的安全部署。
下列時間軸說明了執行時期被取代後會發生的情況:
| 執行時期生命週期階段 | 當 | 內容 |
|---|---|---|
|
棄用通知期間 |
棄用前至少 180 天 |
|
|
棄用 |
取代日期 |
|
|
封鎖函數建立 |
棄用後至少 30 天 |
|
|
封鎖函數更新 |
棄用後至少 60 天 |
|
注意
接收執行期棄用通知
當執行時間接近其棄用日期時,如果您 AWS 帳戶 使用該執行時間中的任何函數,Lambda 會傳送電子郵件提醒給您。通知也會顯示在 Health 儀板表 和 中 AWS Trusted Advisor。
-
接收電子郵件通知:
執行期被棄用前至少 180 天,Lambda 會向您傳送電子郵件提醒。此電子郵件將列出所有使用執行期之函數的 $LATEST 版本。若要查看受影響函數版本的完整清單,請使用 Trusted Advisor 或參閱 擷取使用已棄用執行時期之 Lambda 函數的資料。
Lambda AWS 帳戶會傳送電子郵件通知給您的主要帳戶聯絡人。如需有關檢視或更新帳戶中電子郵件地址的資訊,請參閱《AWS 一般參考》中的更新聯絡資訊。
-
透過 接收通知 Health 儀板表:
會在執行時間棄用前至少 180 天 Health 儀板表 顯示通知。通知顯示在其他通知
下方的您的帳戶運作狀態頁面上。通知的受影響資源索引標籤會列出所有使用執行期之函數的 $LATEST 版本。 注意
若要查看受影響函數版本的完整和up-to-date清單,請使用 Trusted Advisor 或參閱 擷取使用已棄用執行時期之 Lambda 函數的資料。
Health 儀板表 通知會在受影響的執行時間棄用後 90 天過期。
-
使用 AWS Trusted Advisor
Trusted Advisor 會在執行時間棄用前至少 180 天顯示通知。通知顯示在安全性
頁面上。受影響函數的清單會顯示在使用已棄用執行期的AWS Lambda 函數的下方。此函數清單同時顯示 $LATEST 和已發佈版本,並且會自動更新以反映您的函數的最新狀態。 您可以在 Trusted Advisor 主控台的偏好設定
頁面 Trusted Advisor 中,從 開啟每週電子郵件通知。
已取代的執行階段
下列執行階段已達到終止支援:
| Name | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
|---|---|---|---|---|---|
|
Python 3.9 |
python3.9
|
Amazon Linux 2 |
2025 年 12 月 15 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
Node.js 18 |
nodejs18.x
|
Amazon Linux 2 |
2025 年 9 月 1 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
.NET 6 |
dotnet6
|
Amazon Linux 2 |
2024 年 12 月 20 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
Python 3.8 |
python3.8
|
Amazon Linux 2 |
2024 年 10 月 14 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
Node.js 16 |
nodejs16.x
|
Amazon Linux 2 |
2024 年 6 月 12 日 |
2026 年 8 月 31 日 |
2026 年 9 月 30 日 |
|
.NET 7 (僅限容器) |
dotnet7
|
Amazon Linux 2 |
2024 年 5 月 14 日 |
N/A |
N/A |
|
Java 8 |
java8
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2026 年 9 月 30 日 |
|
Go 1.x |
go1.x
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2026 年 9 月 30 日 |
|
僅限作業系統的執行期 |
provided
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2026 年 9 月 30 日 |
|
Ruby 2.7 |
ruby2.7
|
Amazon Linux 2 |
2023 年 12 月 7 日 |
2024 年 1 月 9 日 |
2026 年 9 月 30 日 |
|
Node.js 14 |
nodejs14.x
|
Amazon Linux 2 |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2026 年 9 月 30 日 |
|
Python 3.7 |
python3.7
|
Amazon Linux |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2026 年 9 月 30 日 |
|
.NET Core 3.1 |
dotnetcore3.1
|
Amazon Linux 2 |
2023 年 4 月 3 日 |
2023 年 4 月 3 日 |
2023 年 5 月 3 日 |
|
Node.js 12 |
nodejs12.x
|
Amazon Linux 2 |
2023 年 3 月 31 日 |
2023 年 3 月 31 日 |
2023 年 4 月 30 日 |
|
Python 3.6 |
python3.6
|
Amazon Linux |
2022 年 7 月 18 日 |
2022 年 7 月 18 日 |
2022 年 8 月 29 日 |
|
.NET 5 (僅限容器) |
dotnet5.0
|
Amazon Linux 2 |
2022 年 5 月 10 日 |
N/A |
N/A |
|
.NET Core 2.1 |
dotnetcore2.1
|
Amazon Linux |
2022 年 1 月 5 日 |
2022 年 1 月 5 日 |
2022 年 4 月 13 日 |
|
Node.js 10 |
nodejs10.x
|
Amazon Linux 2 |
2021 年 7 月 30 日 |
2021 年 7 月 30 日 |
2022 年 2 月 14 日 |
|
Ruby 2.5 |
ruby2.5
|
Amazon Linux |
2021 年 7 月 30 日 |
2021 年 7 月 30 日 |
2022 年 3 月 31 日 |
|
Python 2.7 |
python2.7
|
Amazon Linux |
2021 年 7 月 15 日 |
2021 年 7 月 15 日 |
2022 年 5 月 30 日 |
|
Node.js 8.10 |
nodejs8.10
|
Amazon Linux |
2020 年 3 月 6 日 |
2020 年 2 月 4 日 |
2020 年 3 月 6 日 |
|
Node.js 4.3 |
nodejs4.3
|
Amazon Linux |
2020 年 3 月 5 日 |
2020 年 2 月 3 日 |
2020 年 3 月 5 日 |
|
Node.js 4.3 邊緣 |
nodejs4.3-edge
|
Amazon Linux |
2020 年 3 月 5 日 |
2019 年 3 月 31 日 |
2019 年 4 月 30 日 |
|
Node.js 6.10 |
nodejs6.10
|
Amazon Linux |
2019 年 8 月 12 日 |
2019 年 7 月 12 日 |
2019 年 8 月 12 日 |
|
.NET Core 1.0 |
dotnetcore1.0
|
Amazon Linux |
2019 年 6 月 27 日 |
2019 年 6 月 30 日 |
2019 年 7 月 30 日 |
|
.NET Core 2.0 |
dotnetcore2.0
|
Amazon Linux |
2019 年 5 月 30 日 |
2019 年 4 月 30 日 |
2019 年 5 月 30 日 |
|
Node.js 0.10 |
nodejs
|
Amazon Linux |
2016 年 8 月 30 日 |
2016 年 9 月 30 日 |
2016 年 10 月 31 日 |
在幾乎大多數情況下,都會預先知道語言版本或作業系統的生命週期結束日期。以下連結提供 Lambda 以受管執行期形式支援的每種語言之生命週期結束排程。
語言和框架支援政策
-
Node.js – github.com
-
Python – devguide.python.org
-
Ruby – www.ruby-lang.org
-
Java – www.oracle.com
和 Corretto 常見問答集 -
Go – golang.org
-
.NET – dotnet.microsoft.com