本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 16 |
|
Amazon Linux 2 |
2024 年 6 月 12 日 |
2024 年 7 月 15 日 |
2024 年 8 月 15 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 日 |
2024 年 11 月 13 日 |
2025 年 1 月 7 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Java 21 |
|
Amazon Linux 2023 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Java 17 |
|
Amazon Linux 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Java 11 |
|
Amazon Linux 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Java 8 |
|
Amazon Linux 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
。淨值 8 |
|
Amazon Linux 2023 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.NET 7 (僅限容器) |
|
Amazon Linux 2 |
2024 年 5 月 14 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.NET 6 |
|
Amazon Linux 2 |
2024 年 11 月 12 日 |
2025 年 1 月 11 日 |
2025 年 2 月 11 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ruby 3.2 |
|
Amazon Linux 2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
僅限作業系統的執行期 |
|
Amazon Linux 2023 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
僅限作業系統的執行期 |
|
Amazon Linux 2 |
注意
對於新區域,Lambda 將不支援設定為在未來 6 個月內棄用的執行階段。
Lambda 透過修補程式和次要版本發布的支援,讓受管執行期和其對應的容器基礎映像檔保持在最新狀態。如需詳細資訊,請參閱 Lambda 執行期更新。
棄用 Go 1.x 執行期後,Lambda 將繼續支援 Go 程式設計語言。如需詳細資訊,請參閱AWS 運算部落格上的 Amazon Linux 2 將 AWS Lambda 函數從 Go1.x 執行階段移轉至自訂執行階段
所有支援的 Lambda 執行階段都支援 x86_64 和 arm64 架構。
新執行期版本
Lambda 僅在發行版本到達語言發布週期的長期支援 (LTS) 階段時提供新語言版本的受管理執行期。例如,對於 Node.js 發布週期
在發行版本達到長期支援階段以前,它將停留於開發中,並且仍可能有重大變更。Lambda 依預設會自動套用執行期更新,因此對執行期版本的重大變更可能使您的函數無法如預期執行。
Lambda 不會為未排定 LTS 發行版本的語言版本提供受管理執行期。
下列清單顯示即將到來的 Lambda 執行期目標啟動月份。這些日期僅為象徵性,並可能有所變更。
-
紅寶石 3.3-二零二四年四月
-
Python 3.13 - 2024 年 11 月
-
Node.js 22 - 2024 年 11 月
執行期淘汰政策
Lambda 執行期 的 .zip 封存檔是以需要維護和安全更新的作業系統、程式設計語言和軟體程式庫組合為基礎建置。Lambda 的標準棄用政策是在執行階段的任何主要元件到達社群長期支援 (LTS) 結束,且不再提供安全性更新時,淘汰執行階段。大多數情況下,這是語言執行期,雖然在某些情況下,執行期可以被棄用,因為操作系統 (OS) 到達 LTS 的結束。
在執行階段遭到淘汰之後, AWS 可能不再將安全性修補程式或更新套用至該執行階段,而且使用該執行階段的功能也不再符合技術支援的資格。此類已淘汰的執行階段會以「原樣」提供,不提供任何保證,且可能包含錯誤、錯誤、瑕疵或其他弱點。
若要進一步了解管理執行階段升級和淘汰,請參閱 AWS Compute 部落格上的下列章節和管理 AWS Lambda 執行階段升級
重要
Lambda 偶爾會在執行期支援的語言版本的支援日期結束後,在有限期間內延遲棄用 Lambda 執行期。在此期間,Lambda 僅將安全性修補程式套用至執行期作業系統。Lambda 不會在到達支援結束日期之後,將安全性修補程式套用到程式設計語言執行期。
Node.js 16 的執行期棄用
為了回應客戶的意見 AWS ,將 Node.js 16 執行階段的淘汰延遲到社群 LTS 結束後的 9 個月。Node.js 16 執行期將在「支援的執行期」資料表中提供的日期棄用。如先前注意事項所述,在 2023 年 9 月 11 日 LTS 結束與棄用日期之間,Lambda 只會將作業系統修補程式套用至執行期。在此期間,將不會套用語言執行期的安全性修補程式。
延遲棄用 Node.js 16 可讓使用此執行期的客戶有機會將其函數直接遷移至 Node.js 20,跳過 Node.js 18。
共同責任模式
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 會傳送電子郵件通知給您 AWS 帳戶的主要帳戶聯絡人。如需有關檢視或更新帳戶中電子郵件地址的資訊,請參閱《AWS 一般參考》中的更新聯絡資訊。
-
透過以下方式接收通知 AWS Health Dashboard:
至少 AWS Health Dashboard 會在執行階段停用之前 180 天顯示通知。通知顯示在其他通知
下方的您的帳戶運作狀態頁面上。通知的受影響資源索引標籤會列出所有使用執行期之函數的 $LATEST 版本。 注意
若要查看受影響函數版本的完整 up-to-date 清單,請使用 Trusted Advisor 或參閱列出使用已取代執行階段的函數。
AWS Health Dashboard 通知會在受影響的執行階段停用後 90 天過期。
-
使用 AWS Trusted Advisor
Trusted Advisor 在執行階段停用前 180 天顯示通知。通知顯示在安全性
頁面上。受影響函數的清單會顯示在使用已棄用執行期的AWS Lambda 函數的下方。此函數清單同時顯示 $LATEST 和已發佈版本,並且會自動更新以反映您的函數的最新狀態。 您可以從 Trusted Advisor Trusted Advisor 主控台的 「偏好設定」
頁面開啟每週電子郵件通知。
列出使用已取代執行階段的函數
除了使用 Trusted Advisor 查看受計劃運行時棄用影響的實時函數列表之外,您還可以使用 AWS Command Line Interface (AWS CLI)列出使用特定運行時的所有函數版本。若要產生此清單,請執行以下命令。取代RUNTIME_IDENTIFIER
為已取代的執行階段名稱,然後選擇您自己的執行階段名稱 AWS 區域。如僅需列出 $LATEST 函數版本,請省略命令中的 --function-version ALL
。
aws lambda list-functions --function-version ALL --region
us-east-1
--output text --query "Functions[?Runtime=='RUNTIME_IDENTIFIER
'].FunctionArn"
提示
範例命令會列出特定us-east-1
區域中的功能。 AWS 帳戶 您必須針對您的帳戶具有功能的每個地區重複此指令,以及您的每個功能 AWS 帳戶。
您也可以使用 [進 AWS Config 階查詢] 功能,列出使用受影響執行階段的所有函數。此查詢僅返回函數 $LATEST 版本,但您可以 AWS 帳戶 使用單個命令將查詢彙總到所有區域和多個區域的列表函數。要了解更多信息,請參閱AWS Config 開發人員指南中的查詢 AWS Auto Scaling 資源的當前配置狀態。
已取代的執行階段
下列執行階段已達到終止支援:
已取代的執行階段 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Java 8 |
java8
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2024 年 3 月 12 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Go 1.x |
go1.x
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2024 年 3 月 12 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
僅限作業系統的執行期 |
provided
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2024 年 3 月 12 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ruby 2.7 |
ruby2.7
|
Amazon Linux 2 |
2023 年 12 月 7 日 |
2024 年 1 月 9 日 |
2024 年 2 月 8 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 14 |
nodejs14.x
|
Amazon Linux 2 |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2024 年 2 月 8 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Python 3.7 |
python3.7
|
Amazon Linux |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2024 年 2 月 8 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.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 日 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.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 年 3 月 6 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 4.3 |
nodejs4.3
|
Amazon Linux |
2020 年 3 月 5 日 |
2020 年 3 月 5 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 4.3 邊緣 |
nodejs4.3-edge
|
Amazon Linux |
2020 年 3 月 5 日 |
2019 年 4 月 30 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 6.10 |
nodejs6.10
|
Amazon Linux |
2019 年 8 月 12 日 |
2019 年 8 月 12 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.NET Core 1.0 |
dotnetcore1.0
|
Amazon Linux |
2019 年 6 月 27 日 |
2019 年 7 月 30 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.NET Core 2.0 |
dotnetcore2.0
|
Amazon Linux |
2019 年 5 月 30 日 |
2019 年 5 月 30 日 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Node.js 0.10 |
nodejs
|
Amazon Linux |
2016 年 10 月 31 日 |
在幾乎所有情況下,語言版本或操作系統的 end-of-life 日期都是事先知道的。下列連結提供 Lambda 作為受管執行階段支援的每種語言的 end-of-life 排程。
語言和框架支援政策
-
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