Lambda 執行期 - AWS Lambda

Lambda 執行期

Lambda 透過使用執行期支援多種語言。執行期會提供特定於語言的環境,其可轉傳調用事件、內容資訊以及 Lambda 與函數之間的回應。您可以使用由 Lambda 提供的執行期或是自行建置。

Lambda 與您選擇的執行時期無關。對於簡單的函數,Python 和 Node.js 等解釋型語言可提供最快的效能。對於運算較複雜的函數,像 Java 這樣的編譯語言通常初始化速度較慢,但在 Lambda 處理程序中的執行速度很快。執行時期的選擇也受開發人員偏好和語言熟悉程度的影響。

每個主要的程式設計語言版本都有獨立的執行階段,且具有唯一的執行階段識別符,例如 nodejs22.xpython3.13。若要設定函數以使用新的主要語言版本,您需變更執行期識別符。由於 AWS Lambda 無法保證主要版本之間的回溯相容性,因此這是客戶驅動的操作。

針對 定義為容器映像的函數,您可以在建立容器映像時選擇執行期和 Linux 發行版。若要變更執行期,請建立新的容器映像。

若要為部署套件使用 .zip 封存檔,您可以在建立函數時選擇執行期。若要變更執行期,您可以更新函數的組態。執行期與其中一個 Amazon Linux 發行版配對。基礎執行環境會提供其他程式庫以及環境變數,讓您可以從函數程式碼中存取。

Lambda 在執行環境中調用您的函數。執行環境提供安全且隔離的執行期環境,它會管理執行您的函數所需的資源。Lambda 會從之前的調用 (若有) 中重新使用執行環境,或者它會建立一個新的執行環境。

若要在 Lambda 中使用其他語言,例如 GoRust,請使用僅限作業系統的執行期。Lambda 執行環境提供了執行期介面,用於取得調用事件及傳送回應。您可以透過實作自訂執行期和您的函數程式碼,或在一個中部署其他語言。

支援的執行期

下表列出受支援的 Lambda 執行期和預計的棄用日期。在執行期被棄用後,您依然能在限定時間內建立與更新函數。如需更多詳細資訊,請參閱 棄用後的執行時期使用情況。根據我們的 執行期淘汰政策,該表格提供了目前預測的執行時期的棄用日期。這些日期提供用於規劃目的,且可能發生變更。

名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

Node.js 22

nodejs22.x

Amazon Linux 2023

2027 年 4 月 30 日

2027 年 6 月 1 日

2027 年 7 月 1 日

Node.js 20

nodejs20.x

Amazon Linux 2023

2026 年 4 月 30 日

2026 年 6 月 1 日

2026 年 7 月 1 日

Python 3.13

python3.13

Amazon Linux 2023

2029 年 6 月 30 日

2029 年 7 月 31 日

2029 年 8 月 31 日

Python 3.12

python3.12

Amazon Linux 2023

2028 年 10 月 31 日

2028 年 11 月 30 日

2029 年 1 月 10 日

Python 3.11

python3.11

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

Python 3.10

python3.10

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

Python 3.9

python3.9

Amazon Linux 2

2025 年 12 月 15 日

2026 年 2 月 3 日

2026 年 3 月 9 日

Java 21

java21

Amazon Linux 2023

2029 年 6 月 30 日

2029 年 7 月 31 日

2029 年 8 月 31 日

Java 17

java17

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

Java 11

java11

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

Java 8

java8.al2

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

.NET 9 (僅限容器)

dotnet9

Amazon Linux 2023

未排程

未排程

未排程

.NET 8

dotnet8

Amazon Linux 2023

2026 年 11 月 10 日

2026 年 12 月 10 日

2027 年 1 月 11 日

Ruby 3.4

ruby3.4

Amazon Linux 2023

未排程

未排程

未排程

Ruby 3.3

ruby3.3

Amazon Linux 2023

2027 年 3 月 31 日

2027 年 4 月 30 日

2027 年 5 月 31 日

Ruby 3.2

ruby3.2

Amazon Linux 2

2026 年 3 月 31 日

2026 年 4 月 30 日

2026 年 5 月 31 日

僅限作業系統的執行期

provided.al2023

Amazon Linux 2023

2029 年 6 月 30 日

2029 年 7 月 31 日

2029 年 8 月 31 日

僅限作業系統的執行期

provided.al2

Amazon Linux 2

2026 年 6 月 30 日

2026 年 7 月 31 日

2026 年 8 月 31 日

注意

對於新區域,Lambda 將不支援設定為在未來 6 個月內棄用的執行階段。

Lambda 透過修補程式和次要版本發布的支援,讓受管執行期和其對應的容器基礎映像檔保持在最新狀態。如需詳細資訊,請參閱 Lambda 執行期更新

若要從 Lambda 函式中以程式設計方式與其他 AWS 服務和資源互動,您可以使用其中一個 AWS SDK。Node.js、Python 與 Ruby 執行時期皆包含 AWS SDK 的一個版本。不過,若要維持對相依項的完全控制權,並在執行時期自動更新期間最大化回溯相容性,建議一律將程式碼使用的 SDK 模組 (以及任何相依項) 納入函式的部署套件或 Lambda 層

建議僅在部署中無法納入額外套件時,才使用執行時期內含的 SDK 版本。例如,透過 Lambda 主控台程式碼編輯器建立函式,或在 CloudFormation 範本中使用內嵌函式程式碼時。

Lambda 會定期更新 Node.js、Python 與 Ruby 執行時期內含的 AWS SDK 版本。若要判斷目前所用執行時期內含的 AWS SDK 版本,請參閱下列章節:

棄用 Go 1.x 執行期後,Lambda 將繼續支援 Go 程式設計語言。如需詳細資訊,請參閱 AWS Compute Blog 上的 Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2

所有支援的 Lambda 執行時期都支援 x86_64 和 arm64 架構。

新執行期版本

Lambda 僅在發行版本到達語言發布週期的長期支援 (LTS) 階段時提供新語言版本的受管理執行期。例如,對於 Node.js 發布週期,即當發行版本達到 Active LTS 階段時。

在發行版本達到長期支援階段以前,它將停留於開發中,並且仍可能有重大變更。Lambda 依預設會自動套用執行期更新,因此對執行期版本的重大變更可能使您的函數無法如預期執行。

Lambda 不會為未排定 LTS 發行版本的語言版本提供受管理執行期。

下列清單顯示即將到來的 Lambda 執行期目標啟動月份。這些日期僅為象徵性,並可能有所變更。

  • Java 25 – 2025 年 11 月

  • Python 3.14 - 2025 年 11 月

  • Node.js 24 - 2025 年 11 月

  • .NET 10 – 2026 年 1 月

執行期淘汰政策

用於 .zip 壓縮檔的 Lambda 執行時期,均須以接受維護與安全性更新的作業系統、程式設計語言及軟體程式庫的組合為基礎建置。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 不再將安全修補程式或更新套用至該執行時期,且使用該執行時期的函數將不再符合技術支援的資格。雖然您可以無限期地持續調用函式,但 AWS 強烈建議遷移至支援的執行時期。已棄用的執行時期「依現狀」提供,無任何保證,且可能包含問題、錯誤、瑕疵或其他漏洞。使用已棄用執行時期的函數也可能會遇到效能降低或其他問題,例如憑證過期,這可能會導致它們停止正常運作。

執行時期被棄用後,您隨時可以將函式更新為使用較新版本的受支援執行時期。建議先使用新的執行時期測試函式,再在生產環境中套用變更。函式更新被封鎖後,您將無法還原至已棄用的執行時期。建議使用函數版本別名功能,以啟用具有復原功能的安全部署。

下列時間軸說明了執行時期被棄用後會發生的情況:

執行時期生命週期階段 內容

棄用通知期間

棄用前至少 180 天

棄用

取代日期

  • AWS 可能不會再套用安全性更新或其他更新。

  • 函式不再符合技術支援資格。

  • 您無法再使用 Lambda 主控台中的已棄用執行時期來建立或更新函式。您可以繼續透過 AWS CLI、AWS SAM 或 CloudFormation 建立與更新函式。

封鎖函數建立

棄用後至少 30 天

  • Lambda 開始阻擋建立新函式。

  • 您可透過 AWS CLI、AWS SAM 或 CloudFormation 持續更新現有函式的程式碼與組態。

封鎖函數更新

棄用後至少 60 天

  • Lambda 開始阻擋更新現有函式的程式碼與組態。

  • 您仍可將函式組態升級至支援的執行時期。不過,復原至已棄用的執行時期可能會遭到阻擋。

注意

對於某些執行時期,AWS 會將 block-function-create 和 block-function-update 日期延遲至棄用後 30 天和 60 天。AWS 已進行此變更以回應客戶意見回饋,讓您有更多時間升級函數。請參閱 支援的執行期已取代的執行階段 中的資料表,並查看執行時期的日期。此表格所列日期前,Lambda 不會開始阻擋建立或更新函式。

接收執行期棄用通知

當執行期接近其棄用日期時,如果您的 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 版本。

    注意

    若要檢視受影響函數版本的最新完整清單,請使用 Trusted Advisor 或參閱 擷取使用已棄用執行時期之 Lambda 函數的資料

    AWS Health Dashboard 通知會在受影響執行期被棄用 90 天後過期。

  • 使用 AWS Trusted Advisor

    Trusted Advisor 會在執行時期被棄用前至少 180 天 開始顯示通知。通知顯示在安全性頁面上。受影響函數的清單會顯示在使用已棄用執行期的 AWS Lambda 函數的下方。此函數清單同時顯示 $LATEST 和已發佈版本,並且會自動更新以反映您的函數的最新狀態。

    在 Trusted Advisor 主控台的偏好設定頁面上,您可以從 Trusted Advisor 開啟每週電子郵件通知。

已取代的執行階段

下列執行階段已達到終止支援:

名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

Node.js 18

nodejs18.x

Amazon Linux 2

2025 年 9 月 1 日

2026 年 2 月 3 日

2026 年 3 月 9 日

.NET 6

dotnet6

Amazon Linux 2

2024 年 12 月 20 日

2026 年 2 月 3 日

2026 年 3 月 9 日

Python 3.8

python3.8

Amazon Linux 2

2024 年 10 月 14 日

2026 年 2 月 3 日

2026 年 3 月 9 日

Node.js 16

nodejs16.x

Amazon Linux 2

2024 年 6 月 12 日

2026 年 2 月 3 日

2026 年 3 月 9 日

.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 年 3 月 9 日

Go 1.x

go1.x

Amazon Linux

2024 年 1 月 8 日

2024 年 2 月 8 日

2026 年 3 月 9 日

僅限作業系統的執行期

provided

Amazon Linux

2024 年 1 月 8 日

2024 年 2 月 8 日

2026 年 3 月 9 日

Ruby 2.7

ruby2.7

Amazon Linux 2

2023 年 12 月 7 日

2024 年 1 月 9 日

2026 年 3 月 9 日

Node.js 14

nodejs14.x

Amazon Linux 2

2023 年 12 月 4 日

2024 年 1 月 9 日

2026 年 3 月 9 日

Python 3.7

python3.7

Amazon Linux

2023 年 12 月 4 日

2024 年 1 月 9 日

2026 年 3 月 9 日

.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 日

Sep 30, 2016

2016 年 10 月 31 日

在幾乎大多數情況下,都會預先知道語言版本或作業系統的生命週期結束日期。以下連結提供 Lambda 以受管執行期形式支援的每種語言之生命週期結束排程。

語言和框架支援政策