本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解 Lambda 如何管理執行時期版本更新
Lambda 提供安全性更新、錯誤修正、新功能、效能增強功能,以及次要版本支援,讓每個受管理執行階段都保持最新狀態。這些執行階段更新會發佈為執行階段版本。Lambda 會將函數從舊的執行階段版本遷移至新的執行階段版本,藉此將執行階段更新套用至函數。
預設情況下,對於使用受管執行階段的函數,Lambda 會自動套用執行階段更新。若使用自動執行階段更新,Lambda 需承受修補執行階段版本的運作負擔。對大多數客戶而言,自動更新是正確的選擇。您可以透過設定執行時期管理設定來變更此預設行為。
Lambda 也會將每個新的執行階段版本發佈為容器映像。若要更新容器型函數的執行階段版本,您必須從更新的基礎映像建立新的容器映像,然後重新部署函數。
每個執行階段版本都與一個版本編號和一個 ARN (Amazon Resource Name) 相關聯。執行階段版本編號使用 Lambda 定義的編號結構描述,與程式設計語言使用的版本編號無關。執行期版本編號並非一律循序。例如,第 42 版之後可能會是第 45 版。執行階段版本 ARN 是每個執行階段版本的唯一識別符。您可以在 Lambda 主控台或函數日誌的 INIT_START 行中,檢視函數目前執行時期版本的 ARN。
執行階段版本不應與執行階段識別符混淆。每個執行階段都有唯一的執行階段識別符,例如 python3.13
或 nodejs22.x
。這些會對應到每個主要的程式設計語言版本。執行階段版本會描述個別執行階段的修補程式版本。
注意
相同執行時間版本編號的 ARN 可能因 AWS 區域 和 CPU 架構而異。
主題
回溯相容性
Lambda 致力於提供與現有函數回溯相容的執行階段更新。但是與軟體修補一樣,在極少數情況下,執行階段更新可能會對現有函數產生負面影響。例如,安全性修補程式可能會暴露現有函數的潛在問題,取決於先前的不安全行為。
建置和部署函數時,請務必了解如何管理您的相依性,以避免未來執行時間更新的潛在不相容。例如,假設您的函數對套件 A 有相依性,而這又取決於套件 B。這兩個套件都包含在 Lambda 執行時間 (例如,它們可能是 SDK 或其相依性的一部分,或執行時間系統程式庫的一部分)。
請考量下列情況:
部署 | 修補相容 | 原因 |
---|---|---|
|
是 | 套件 A 和 B 的未來執行時間更新可回溯相容。 |
|
是 | 您的部署優先,因此套件 A 和 B 的未來執行時間更新不會生效。 |
|
是* |
套件 B 的未來執行時間更新會回溯相容。 *如果 A 和 B 緊密耦合,可能會發生相容性問題。例如,適用於 Python 的 AWS SDK 中的 |
|
否 | 套件 A 的未來執行時間更新可能需要更新版本的套件 B。不過,部署的套件 B 版本會優先,且可能無法與套件 A 的更新版本繼續相容。 |
若要維持與未來執行時間更新的相容性,請遵循下列最佳實務:
-
盡可能封裝所有相依性:在您的部署套件中包含所有必要的程式庫,包括 AWS SDK 及其相依性。這可確保一組穩定且相容的元件。
-
謹慎使用執行時間提供的 SDKs:只有在您無法包含其他套件時 (例如,使用 Lambda 主控台程式碼編輯器或 AWS CloudFormation 範本中的內嵌程式碼時),才依賴執行時間提供的 SDK。
-
避免覆寫系統程式庫:請勿部署可能與未來執行時間更新衝突的自訂作業系統程式庫。
執行時期更新模式
Lambda 致力於提供與現有函數回溯相容的執行階段更新。但是與軟體修補一樣,在極少數情況下,執行階段更新可能會對現有函數產生負面影響。例如,安全性修補程式可能會暴露現有函數的潛在問題,取決於先前的不安全行為。在罕見的執行階段版本不相容情況下,Lambda 執行階段管理控制有助於降低對工作負載造成影響的風險。針對每個函數版本 ($LATEST
或已發佈版本),您可以選擇下列其中一種執行階段更新模式:
Auto (default) (自動 (預設)) - 使用 兩階段執行階段版本推展 自動更新為最新且安全的執行階段版本。我們建議大多數客戶使用此模式,便能隨時受益於執行階段更新。
函數更新:當您更新函數時,更新為最新且安全的執行階段版本。當您更新函數時,Lambda 會將函數的執行階段更新為最新且安全的執行階段版本。此做法可同步執行階段更新與函數部署,讓您控制 Lambda 何時套用執行階段更新。使用此模式,您可以及早偵測並減輕罕見的執行階段更新不相容情況。使用此模式時,您必須定期更新函數,讓執行階段保持最新狀態。
手動:手動更新您的執行階段版本。您可以在函數組態中指定執行階段版本。該函數將無限期使用此執行階段版本。在罕見情況下,新的執行階段版本會與現有函數不相容,您可以使用此模式,讓函數復原至較舊的執行階段版本。建議您不要使用 Manual (手動) 模式來嘗試達到跨部署的執行階段一致性。如需詳細資訊,請參閱復原 Lambda 執行時期版本。
將執行階段更新套用至函數的責任分配,會根據您選擇的執行階段更新模式而有所不同。如需詳細資訊,請參閱了解 Lambda 執行時期管理的共同責任模式。
兩階段執行階段版本推展
Lambda 會依照以下順序引入新的執行階段版本:
在第一階段,每當您建立或更新函數,Lambda 都會套用新的執行階段版本。當您呼叫 UpdateFunctionCode 或 UpdateFunctionConfiguration API 操作,函數便會更新。
在第二階段,Lambda 會更新任何使用 Auto (自動) 執行階段更新模式且尚未更新為新執行階段版本的函數。
推展程序的整體持續時間會因許多因素而有所不同,包括執行階段更新中所包含任何安全性修補程式的嚴重性。
如果您正在開發和部署函數,很可能會在第一階段選擇新的執行階段版本。這會將執行階段更新與函數更新同步。在極少數情況下,最新的執行階段版本會對您的應用程式造成負面影響,而此做法可讓您立即採取更正動作。非開發中的函數仍然會在第二階段獲得自動執行階段更新的運作效益。
此方法不會影響設為 Function update (函數更新) 或 Manual (手動) 模式的函數。使用 Function update (函數更新) 模式的函數,只會在您建立或更新函數時收到最新的執行階段更新。使用 Manual (手動) 模式的函數不會收到執行階段更新。
Lambda 以漸進、滾動方式於 AWS 區域發佈新的執行階段版本。如果您的函數設為 Auto (自動) 或 Function update (函數更新) 模式,那麼同時部署至不同區域或同一地區在不同時間部署的函數,可能會採用不同的執行階段版本。需要在不同環境中保證執行期版本一致性的客戶,應 使用容器映像來部署 Lambda 函數。手動 模式設計為暫時緩解措施,可在發生執行階段版本不相容函數的罕見情況下啟用執行階段版本復原。