Python에 대한 Lambda SnapStart 런타임 후크
Lambda가 스냅샷을 생성하기 전이나 Lambda가 스냅샷에서 함수를 재개한 후에 런타임 후크를 사용하여 코드를 구현할 수 있습니다. Python 런타임 후크는 Python 관리형 런타임에 포함된 오픈 소스 Snapshot Restore for 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