Python에 대한 Lambda SnapStart 런타임 후크 - AWS Lambda

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을 참조하세요.