本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 執行期
Lambda 透過使用執行期支援多種語言。執行期會提供特定於語言的環境,其可轉傳調用事件、內容資訊以及 Lambda 與函數之間的回應。您可以使用由 Lambda 提供的執行期或是自行建置。
每個主要的程式設計語言版本都有獨立的執行階段,且具有唯一的執行階段識別符,例如 nodejs20.x
或 python3.12
。若要設定函數以使用新的主要語言版本,您需變更執行期識別符。由於 AWS Lambda 無法保證主要版本之間的回溯相容性,因此這是一項以客戶為導向的操作。
針對 定義為容器映像的函數,您可以在建立容器映像時選擇執行期和 Linux 發行版。若要變更執行期,請建立新的容器映像。
若要為部署套件使用 .zip 封存檔,您可以在建立函數時選擇執行期。若要變更執行期,您可以更新函數的組態。執行期與其中一個 Amazon Linux 發行版配對。基礎執行環境會提供其他程式庫以及環境變數,讓您可以從函數程式碼中存取。
Lambda 在執行環境中調用您的函數。執行環境提供安全且隔離的執行期環境,它會管理執行您的函數所需的資源。Lambda 會從之前的調用 (若有) 中重新使用執行環境,或者它會建立一個新的執行環境。
若要在 Lambda 中使用其他語言,例如 Go 或 Rust,請使用僅限作業系統的執行期。Lambda 執行環境提供了執行期介面,用於取得調用事件及傳送回應。您可以透過實作自訂執行期和您的函數程式碼,或在一個層中部署其他語言。
支援的執行期
下表列出受支援的 Lambda 執行期和預計的棄用日期。在執行期被棄用後,您依然能在限定時間內建立與更新函數。如需詳細資訊,請參閱取代後的執行期使用。該表格提供目前預測的執行期棄用日期。這些日期提供用於規劃目的,且可能發生變更。
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
---|---|---|---|---|---|
Node.js 20 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
Node.js 18 |
|
Amazon Linux 2 |
2025 年 7 月 31 日 |
2025 年 9 月 1 日 |
2025 年 10 月 1 日 |
Python 3.12 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
Python 3.11 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
Python 3.10 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
Python 3.9 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
Python 3.8 |
|
Amazon Linux 2 |
2024 年 10 月 14 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
Java 21 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
Java 17 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
Java 11 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
Java 8 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
。NET 8 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
。NET 6 |
|
Amazon Linux 2 |
2024 年 12 月 20 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
Ruby 3.3 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
Ruby 3.2 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
僅限作業系統的執行期 |
|
Amazon Linux 2023 |
未排程 |
未排程 |
未排程 |
僅限作業系統的執行期 |
|
Amazon Linux 2 |
未排程 |
未排程 |
未排程 |
注意
對於新區域,Lambda 將不支援設定為在未來 6 個月內棄用的執行階段。
Lambda 透過修補程式和次要版本發布的支援,讓受管執行期和其對應的容器基礎映像檔保持在最新狀態。如需詳細資訊,請參閱 Lambda 執行期更新。
棄用 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 執行期目標啟動月份。這些日期僅為象徵性,並可能有所變更。
-
Python 3.13 - 2024 年 11 月
-
Node.js 22 - 2024 年 11 月
執行期淘汰政策
Lambda 執行期 的 .zip 封存檔是以需要維護和安全更新的作業系統、程式設計語言和軟體程式庫組合為基礎建置。Lambda 的標準取代政策是在執行期的任何主要元件達到社群長期支援結束 (LTS) 且不再提供安全更新時,取代執行期。通常,這是語言執行期,但在某些情況下,執行期可能會因為作業系統 (OS) 達到 的結尾而被取代LTS。
執行時間已棄用後, AWS 可能不再將安全修補程式或更新套用至該執行時間,使用該執行時間的函數將不再符合技術支援的資格。這類已棄用執行期會按原樣提供,沒有任何保證,而且可能包含錯誤、錯誤、瑕疵或其他漏洞。
若要進一步了解如何管理執行期升級和取代,請參閱下列章節,以及AWS 運算部落格 上的管理 AWS Lambda 執行期升級
重要
Lambda 偶爾會在執行期支援的語言版本的支援日期結束後,在有限期間內延遲棄用 Lambda 執行期。在此期間,Lambda 僅將安全性修補程式套用至執行期作業系統。Lambda 不會在到達支援結束日期之後,將安全性修補程式套用到程式設計語言執行期。
共同責任模式
Lambda 負責為所有受支援的受管執行期和容器基礎映像策劃和發佈安全更新。根據預設,Lambda 會使用受管執行時間將這些更新自動套用至函數。如果預設的自動執行期更新設定已變更,請參閱執行期管理控制共同責任模型 。對於使用容器映像部署的函數,您有責任從最新的基礎映像重建函數的容器映像,並重新部署容器映像。
當執行期已棄用時,Lambda 更新受管執行期和容器基礎映像的責任會停止。您有責任升級函數以使用支援的執行期或基礎映像。
在所有情況下,您都有責任將更新套用至函數程式碼,包括其相依性。您在共同責任模型下的責任摘要如下表所示。
執行期生命週期階段 | Lambda 的責任 | 您的責任 |
---|---|---|
支援的受管執行期 |
透過安全修補程式和其他更新提供定期執行期更新。 根據預設自動套用執行期更新 (請參閱 運行時更新模式 以取得非預設行為)。 |
更新您的函數程式碼,包括相依性,以解決任何安全漏洞。 |
支援的容器映像 | 使用安全修補程式和其他更新,定期更新容器基礎映像。 |
更新您的函數程式碼,包括相依性,以解決任何安全漏洞。 使用最新的基礎映像定期重建和重新部署容器映像。 |
受管執行期接近棄用 |
透過文件 AWS Health Dashboard、電子郵件和 在執行期棄用之前通知客戶 Trusted Advisor。 執行期更新的責任會在取代時結束。 |
監控 Lambda 文件 AWS Health Dashboard、電子郵件或 Trusted Advisor 以取得執行期取代資訊。 在先前的執行時間已棄用之前,將函數升級至支援的執行時間。 |
容器映像接近棄用 |
取代通知不適用於使用容器映像的函數。 容器基礎映像更新的責任會在取代時結束。 |
在上一個映像取代之前,請注意已棄用排程,並將函數升級至支援的基礎映像。 |
取代後的執行期使用
執行時間已棄用後, AWS 可能不再將安全修補程式或更新套用至該執行時間,使用該執行時間的函數將不再符合技術支援的資格。這類已棄用執行期會按原樣提供,沒有任何保證,而且可能包含錯誤、錯誤、瑕疵或其他漏洞。使用已棄用執行時間的函數也可能會遇到效能降低或其他問題,例如憑證過期,這可能會導致它們停止正常運作。
在執行期棄用後至少 30 天,您仍可使用該執行期建立新的 Lambda 函數。從棄用後的 30 天開始,Lambda 開始封鎖建立新的函數。
在執行時間取代後至少 60 天內,您仍然可以更新現有函數的函數程式碼和組態。從棄用後的 60 天開始,Lambda 開始封鎖現有函數的函數程式碼和組態更新。
注意
您可以在執行時間已棄用之後,更新函數以無限期使用較新的支援執行時間。您應該在生產環境中套用執行時間變更之前,測試您的函數是否與新的執行時間搭配使用,因為一旦 60 天期間已過,您將無法還原至已取代的執行時間。我們建議您使用函數版本和別名,以啟用復原的安全部署。
請注意,您可以繼續建立與更新函數的確切時長並非固定。此期間會因每個棄用和不同的 而異 AWS 區域。此頁面第一區段中的「受支援執行期」表格提供封鎖函數建立和更新的名義日期。在此表格提供的日期前,Lambda 不會開始封鎖函數的建立或更新。
執行期被棄用後,您可以繼續無限期調用您的函數。不過, AWS 強烈建議您將函數遷移至支援的執行期,以便您的函數繼續接收安全修補程式並保持獲得技術支援的資格。
接收執行期棄用通知
當執行期接近其棄用日期時,如果您 AWS 帳戶 使用該執行期中的任何函數,Lambda 會傳送電子郵件提醒給您。通知也會顯示在 AWS Health Dashboard 和 中 AWS Trusted Advisor。
-
接收電子郵件通知:
執行期被棄用前至少 180 天,Lambda 會向您傳送電子郵件提醒。此電子郵件會列出使用執行期的所有函數的 $LATEST 版本。若要查看受影響函數版本的完整清單,請使用 Trusted Advisor 或參閱 擷取使用已棄用執行時間之 Lambda 函數的資料。
Lambda 會傳送電子郵件通知給您 AWS 帳戶的主要帳戶聯絡人。如需有關檢視或更新帳戶中電子郵件地址的資訊,請參閱《AWS 一般參考》中的更新聯絡資訊。
-
透過 接收通知 AWS Health Dashboard:
會在執行時間取代前至少 180 天 AWS Health Dashboard 顯示通知。通知顯示在其他通知
下方的您的帳戶運作狀態頁面上。通知的受影響資源索引標籤會列出使用執行期的所有函數的 $LATEST 版本。 注意
若要查看受影響函數版本的完整和 up-to-date清單,請使用 Trusted Advisor 或參閱 擷取使用已棄用執行時間之 Lambda 函數的資料。
AWS Health Dashboard 通知會在受影響的執行時間被取代後 90 天到期。
-
使用 AWS Trusted Advisor
Trusted Advisor 會在執行時間取代前 180 天顯示通知。通知顯示在安全性
頁面上。受影響函數的清單會顯示在使用已棄用執行期的AWS Lambda 函數的下方。此函數清單會自動顯示 $LATEST 和已發佈的版本和更新,以反映函數的目前狀態。 您可以在 Trusted Advisor 主控台的偏好設定
頁面 Trusted Advisor 中開啟每週電子郵件通知。
已取代的執行階段
下列執行階段已達到終止支援:
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 |
---|---|---|---|---|---|
Node.js 16 |
nodejs16.x
|
Amazon Linux 2 |
2024 年 6 月 12 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
.NET 7 (僅限容器) |
dotnet7
|
Amazon Linux 2 |
2024 年 5 月 14 日 |
N/A |
N/A |
Java 8 |
java8
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
Go 1.x |
go1.x
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
僅限作業系統的執行期 |
provided
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
Ruby 2.7 |
ruby2.7
|
Amazon Linux 2 |
2023 年 12 月 7 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
Node.js 14 |
nodejs14.x
|
Amazon Linux 2 |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
Python 3.7 |
python3.7
|
Amazon Linux |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
。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 日 |
N/A |
2020 年 3 月 6 日 |
Node.js 4.3 |
nodejs4.3
|
Amazon Linux |
2020 年 3 月 5 日 |
N/A |
2020 年 3 月 5 日 |
Node.js 4.3 邊緣 |
nodejs4.3-edge
|
Amazon Linux |
2020 年 3 月 5 日 |
N/A |
2019 年 4 月 30 日 |
Node.js 6.10 |
nodejs6.10
|
Amazon Linux |
2019 年 8 月 12 日 |
2019 年 8 月 12 日 |
N/A |
。NET 核心 1.0 |
dotnetcore1.0
|
Amazon Linux |
2019 年 6 月 27 日 |
N/A |
2019 年 7 月 30 日 |
。NET Core 2.0 |
dotnetcore2.0
|
Amazon Linux |
2019 年 5 月 30 日 |
N/A |
2019 年 5 月 30 日 |
Node.js 0.10 |
nodejs
|
Amazon Linux |
N/A |
N/A |
2016 年 10 月 31 日 |
在幾乎所有情況下, end-of-life語言版本或作業系統的日期都是事先知道的。下列連結提供 end-of-life Lambda 支援作為受管執行期的每個語言的排程。
語言和框架支援政策
-
Node.js – github.com
-
Python – devguide.python.org
-
Ruby – www.ruby-lang.org
-
Java – www.oracle.com
和 Corretto FAQs -
Go – golang.org
-
.NET – dotnet.microsoft.com