本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda SnapStart 執行時期勾點 (Python)
您可以在 Lambda 建立快照之前或 Lambda 從快照恢復函數之後,使用執行階段掛鉤來實作程式碼。Python 執行時期勾點作為 Snapshot Restore for Python library
-
@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