AWS Lambda의 콜드 스타트 및 웜 스타트에 대해 알고 있습니다.
하지만 웜 스타트 중에 Lambda 아키텍처가 백엔드에서 Firecracker VM을 재사용하는지 확실하지 않습니까? 아니면 새 VM에서 호출합니까?
다른 AWS 솔루션을 통해 모든 호출에 대해 VM 수준 격리를 적용하는 방법이 있습니까?
Lambda 실행 컨텍스트 에 대한 문서에 명시된 내용을 기반으로 Lambda는 후속 실행간에 실행 컨텍스트를 재사용하려고 시도합니다. 이것이 바로 콜드 스타트 (컨텍스트가 가동 될 때) 및 웜 스타트 (기존 컨텍스트가 재사용 될 때)로 이어집니다. ).
일반적으로 Lambda 함수가 처음 호출 될 때 또는 AWS Lambda가 Lambda 함수의 후속 호출을 위해 실행 컨텍스트를 재사용하려고하기 때문에 업데이트 된 후에이 지연 시간이 표시됩니다.
이는 Lambda 런타임 환경 에 대한 설명서 에서 다음과 같이 명시 되어있는 다른 진술로 확증됩니다 .
Lambda 함수가 호출되면 데이터 플레인은 해당 함수에 실행 환경을 할당하거나 해당 함수에 대해 이미 설정된 기존 실행 환경을 선택한 다음 해당 환경에서 함수 코드를 실행합니다.
동일한 페이지의 이후 부분에서는 동일한 AWS 계정의 함수 및 실행간에 환경 / 리소스가 공유되는 방식에 대한 자세한 정보를 제공합니다.
실행 환경은 하드웨어 가상화 된 가상 머신 (microVM)에서 실행됩니다. microVM은 AWS 계정 전용이지만 계정 내의 기능 전체에서 실행 환경에서 재사용 할 수 있습니다. [...] 실행 환경은 기능간에 공유되지 않으며 microVM은 AWS 계정간에 공유되지 않습니다.
또한 환경 간 격리에 대한 세부 정보를 제공하는 또 다른 문서 페이지 도 있지만 환경 당 1 개의 실행을 강제하는 기능에 대해서는 언급하지 않습니다.
내가 아는 한 새로운 실행이 기존 환경이 아닌 새로운 환경을 사용하도록 만들 수있는 방법이 없습니다. AWS는 이에 대해 많은 통찰력을 제공하지 않지만 주제를 둘러싼 문구는 대부분의 사람들이 실제로 귀하가 찾고있는 것과 반대되는 작업을 시도 함을 시사하는 것 같습니다.
Lambda 함수 코드를 작성할 때 AWS Lambda가 후속 함수 호출을 위해 실행 컨텍스트를 자동으로 재사용한다고 가정하지 마십시오. 다른 요인으로 인해 AWS Lambda가 새로운 실행 컨텍스트를 생성해야 할 수 있으며, 이로 인해 데이터베이스 연결 실패와 같은 예기치 않은 결과가 발생할 수 있습니다.
우려 사항이 다른 고객 / 계정과의 격리 인 경우 AWS는 물리적 수준은 아니지만 SLA 및 SLA / 요구 사항에 따라 충분할 수있는 가상화를 통해 격리를 보장합니다. 대신 Lambda 실행을 서로 격리해야하는 일종의 다중 테넌트 인프라를 수행 할 생각이라면이 구성 요소가 원하는 것이 아닐 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다