Lambda Extensions API
Lambda Extensions API (AWS Lambda Extensions API)
Lambda Extensions API는 Lambda 실행 환경 내 확장(extensions)과 Lambda 서비스 간의 통신을 위한 HTTP API예요. 확장은 이 API를 사용해 등록하고, 함수의 런타임에 대한 이벤트를 수신하며, 수명주기 이벤트를 처리할 수 있어요.
본문
Lambda 확장은 Lambda 함수와 병행해 실행되는 프로세스로, 함수의 런타임을 보강하는 도구를 구현해요. 확장은 Lambda가 런타임과 확장에 보내는 수명주기 이벤트를 사용해 사용자 지정 로직을 실행할 수 있어요. 확장은 Extensions API를 통해 Lambda와 통신해요.
확장 및 Extensions API (Extensions and the Extensions API)
확장은 함수의 런타임과 동일한 실행 환경에서 실행되는 프로세스예요. Lambda는 함수의 실행 환경에서 런타임과 모든 등록된 확장을 시작해요. 확장은 등록 후 수명주기 이벤트를 수신해요.
확장이 Lambda와 통신하기 위해 사용하는 Extensions API 엔드포인트는 다음과 같아요.
- Register – 확장이 Lambda에 등록하여 수명주기 이벤트를 수신할 수 있게 해요.
- Next – 확장이 다음 이벤트를 검색해요.
- Init, Invoke, Shutdown – Lambda가 확장에 보내는 수명주기 이벤트예요.
API 엔드포인트 (API endpoints)
확장은 실행 환경 내부의 로컬 HTTP 엔드포인트 http://${AWS_LAMBDA_RUNTIME_API} 에서 Extensions API에 접근해요. Lambda는 AWS_LAMBDA_RUNTIME_API 환경 변수에 이 엔드포인트의 주소를 제공해요.
Register API
확장은 런타임 시작 시 Register API를 호출해 Lambda에 스스로를 등록해요. 등록은 확장의 이름과 등록할 이벤트를 지정해요. 확장은 등록 후 이벤트를 수신하기 시작해요.
Request
POST /2020-01-01/extension/register
Request headers
Lambda-Extension-Name– 확장의 이름Lambda-Extension-Identifier– (선택 사항) 확장 식별자
Request body
등록 요청 본문은 확장이 수신할 이벤트 목록을 지정해요. 예를 들어 ["INVOKE", "SHUTDOWN"] 입니다.
Response
등록 성공 시 Lambda는 Lambda-Extension-Identifier 헤더에 등록된 확장의 식별자를 반환해요. 이후 모든 요청에서 확장을 식별하는 데 이 헤더를 사용해야 해요.
Next Invocation API
확장은 Next Invocation API를 호출해 다음 이벤트를 검색해요. 이 호출은 이벤트가 사용 가능할 때까지 대기하며, 확장이 다음 이벤트를 받을 수 있게 해요.
Request
GET /2020-01-01/extension/event/next
Response
- Invoke 이벤트 – 함수 호출이 시작되었음을 나타내며, 이벤트에 대한 정보를 포함해요.
- Shutdown 이벤트 – Lambda가 확장을 종료하려고 한다는 것을 나타내며, 종료 이유를 포함해요.
수명주기 이벤트 (Lifecycle events)
Lambda는 확장에 다음 수명주기 이벤트를 보내요.
- INIT – 초기화 단계에서 확장이 시작된 후 보내져요.
- INVOKE – 함수가 호출될 때 보내져요.
- SHUTDOWN – Lambda가 실행 환경을 종료하기 전에 보내져요.
참고 사항 (Considerations)
- 확장은 실행 환경 내에서 런타임과 리소스를 공유해요.
- 확장을 사용하면 함수의 콜드 스타트 시간과 실행 환경의 초기화 구조에 영향을 미칠 수 있어요.
- 확장은 등록된 수명주기 이벤트에 적절히 응답해야 해요.