Lambda SnapStart 執行時期勾點 (Python) - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lambda SnapStart 執行時期勾點 (Python)

您可以在 Lambda 建立快照之前或 Lambda 從快照恢復函數之後,使用執行階段掛鉤來實作程式碼。Python 執行時期勾點作為 Snapshot Restore for Python library 的一部分提供,該程式庫包含在 Python 受管執行時期中。此程式庫提供兩個裝飾項目,可用於定義執行時期勾點:

  • @register_before_snapshot:用於您要在 Lambda 建立快照之前執行的函數。

  • @register_after_restore:用於您要在 Lambda 從快照恢復函數時執行的函數。

您也可以使用以下方法來註冊執行時期勾點的可呼叫項:

  • register_before_snapshot(func, *args, **kwargs)

  • register_after_restore(func, *args, **kwargs)

執行時期勾點註冊和執行

Lambda 執行執行時期勾點的順序取決於勾點的註冊順序:

  • 快照之前:依與註冊順序相反的順序執行

  • 快照之後:依註冊順序執行

執行時期勾點註冊的順序取決於您如何定義勾點。使用裝飾項目 (@register_before_snapshot@register_after_restore) 時,註冊順序會遵循程式碼中的匯入、定義或執行順序。如果您需要對註冊順序進行更多控制,請使用 register_before_snapshot()register_after_restore() 方法,而不要使用裝飾項目。

確定已正確匯入所有已註冊的勾點,並包含在函數的程式碼中。如果您在單獨的檔案或模組中註冊執行時期勾點,則必須確保直接匯入相關模組,或將其作為較大套件的一部分匯入函數的處理常式檔案中。如果未在函數處理常式中匯入相關檔案或模組,則 Lambda 會忽略相關執行時期勾點。

注意

Lambda 建立快照時,初始化程式碼最多可能會執行 15 分鐘。時間上限為 130 秒或設定的函數逾時 (最長 900 秒),以較高者為準。您的 @register_before_snapshot 執行時間掛鉤會計入初始化程式碼時間限制。Lambda 還原快照時,執行時期必須載入,且 @register_after_restore 執行時期勾點必須在逾時限制 (10 秒) 內完成。否則,您將收到 SnapStartTimeoutException 訊息。

範例

以下處理常式範例示範如何在檢查點之前 (@register_before_snapshot) 和還原之後 (@register_after_restore) 執行程式碼。

from snapshot_restore_py import register_before_snapshot, register_after_restore def lambda_handler(event, context): # Handler code @register_before_snapshot def before_checkpoint(): # Logic to be executed before taking snapshots @register_after_restore def after_restore(): # Logic to be executed after restore

如需更多範例,請參閱 AWS GitHub 儲存庫中的 Snapshot Restore for Python