View a markdown version of this page

AWS Lambda MicroVM 핵심 개념 - AWS Lambda

AWS Lambda MicroVM 핵심 개념

AWS Lambda MicroVM은 사용자가 생성하고 관리하는 여러 리소스 유형을 사용합니다. 이 페이지에서는 각 리소스 유형, Lambda가 MicroVM 이미지를 스냅샷으로 빌드하는 방법, 런타임 시 MicroVM이 거치는 수명 주기 상태에 대해 설명합니다. 이는 MicroVM을 사용하여 애플리케이션을 구축하기 위한 기초가 됩니다.

주요 개념

MicroVM

MicroVM은 단일 테넌트, 사용자 세션 또는 작업에 대한 격리된 컴퓨팅 환경을 나타내는 리소스입니다. 각 MicroVM은 운영 체제 기능을 갖춘 Amazon Linux 2023 운영 체제를 실행하여 거의 즉각적으로 시작하고 재개할 수 있습니다. MicroVM은 인바운드 HTTPS 연결을 통해 요청을 수신하며 유휴 상태일 때 메모리와 디스크 상태를 유지하면서 일시 중지할 수 있습니다. 일시 중지된 MicroVM은 트래픽이 돌아오면 재개됩니다.

MicroVM 이미지

MicroVM 이미지는 MicroVM의 애플리케이션 환경을 정의하는 리소스입니다. 이미지를 생성하면 Lambda는 거의 즉각적인 시작을 가능하게 하는 스냅샷으로 이미지를 빌드합니다(아래 Lambda가 이미지를 빌드하는 방법 참조).

MicroVM 이미지를 생성하려면 Dockerfile과 애플리케이션 아티팩트가 포함된 zip 패키지를 Amazon S3에 업로드하여 제공합니다. Lambda에서 게시한 관리형 기본 이미지를 파운데이션으로 사용해야 합니다. base-image-arn 파라미터로 이를 지정합니다. Dockerfile은 Lambda가 관리형 기본 이미지 위에 빌드하는 애플리케이션 계층을 정의합니다.

MicroVM 이미지는 버전이 관리됩니다. 각 버전은 특정 코드 아티팩트와 기본 이미지에서 생성된 단일 빌드를 나타냅니다. 버전은 빌드 상태(PENDINGIN_PROGRESSSUCCESSFUL 또는 FAILED)를 거치며, 성공한 버전은 ACTIVE 또는 INACTIVE로 설정할 수 있습니다. 이미지 상태 및 관리에 대한 자세한 내용은 MicroVM 이미지 섹션을 참조하세요.

네트워크 커넥터

네트워크 커넥터는 트래픽이 MicroVM에 도달하는 방식과 MicroVM이 외부 서비스에 도달하는 방식을 제어하는 리소스입니다. 런타임에 커넥터를 MicroVM과 연결하여 인바운드 및 아웃바운드 액세스를 독립적으로 구성합니다.

빌드 타임 커넥터와 런타임 커넥터는 다를 수 있으므로 MicroVM이 이미지 빌드와 런타임 중 서로 다른 환경에 도달할 수 있습니다.

인바운드 포트 액세스(JWE 인증 포함), 셸 액세스 및 퍼블릭 인터넷 송신에 Lambda 제공 기본값을 사용합니다. 자체 네트워크 커넥터를 생성하여 VPC를 통해 아웃바운드 트래픽을 라우팅합니다.

Lambda가 이미지를 빌드하는 방법

MicroVM 이미지를 생성하거나 업데이트하면 Lambda는 Firecracker 스냅샷을 생성하는 빌드 프로세스를 수행합니다. 이 스냅샷은 애플리케이션의 완전히 초기화된 상태를 캡처하므로 애플리케이션에서 실행되는 MicroVM을 거의 즉시 시작하고 재개할 수 있습니다.

빌드 프로세스:

  1. Lambda가 지정한 관리형 기본 이미지를 사용하여 새 MicroVM을 프로비저닝합니다.

  2. Lambda가 Dockerfile 명령어를 실행하여 종속성을 설치하고 환경을 구성합니다.

  3. Lambda가 ENTRYPOINT 또는 CMD 명령을 사용하여 애플리케이션을 시작합니다.

  4. /ready 후크를 활성화한 경우 Lambda가 애플리케이션이 준비 상태 신호(HTTP 200)를 보낼 때까지 대기합니다.

  5. Lambda가 실행 중인 모든 프로세스를 포함하여 디스크 및 메모리 상태의 스냅샷을 캡처합니다.

MicroVM을 실행하면 Lambda는 이 스냅샷에서 MicroVM을 복원합니다. 따라서 애플리케이션은 시작 과정을 반복하지 않고 초기화된 상태에서 재개됩니다.

애플리케이션이 빌드 중 고유한 콘텐츠(예: 고유 ID, 시크릿 또는 네트워크 연결)를 생성하는 경우 해당 콘텐츠는 동일한 이미지 버전에서 실행되는 모든 MicroVM에서 공유됩니다. 이를 방지하려면 /run 수명 주기 후크를 사용하여 MicroVM이 시작된 후에 고유한 콘텐츠를 생성합니다. 자세한 내용은 MicroVM 이미지의 스냅샷 호환성 섹션을 참조하세요.

MicroVM 수명 주기

런타임 시 MicroVM은 다음 단계를 거칩니다.

  1. 실행run-microvm을 직접적으로 호출합니다. Lambda는 이미지 스냅샷에서 MicroVM을 복원하고, 고유 ID를 할당하고, 엔드포인트를 생성합니다. MicroVM이 PENDING에서 RUNNING으로 전환됩니다.

  2. 실행 중 - 애플리케이션이 엔드포인트 URL을 통해 요청을 수신하고 처리합니다.

  3. 일시 중지 - 구성 가능한 유휴 기간이 지난 후 또는 suspend-microvm API를 통해 MicroVM이 SUSPENDING 상태를 거쳐 SUSPENDED 상태로 전환됩니다. 메모리 및 디스크 상태는 유지됩니다.

  4. 재개 - 트래픽이 도착하거나(autoResumeEnabled=true인 경우) resume-microvm을 직접적으로 호출하면 MicroVM이 SUSPENDED 상태에서 RUNNING 상태로 바로 전환됩니다.

  5. 종료 - terminate-microvm를 직접적으로 호출하거나 최대 지속 시간이 초과되면 MicroVM이 TERMINATING 상태를 거쳐 TERMINATED 상태로 전환됩니다.

상태

다음 표에 각 MicroVM 상태가 설명되어 있습니다. 이러한 상태를 활용하여 신뢰할 수 있는 애플리케이션을 구축하고 적절한 오류 처리를 구현할 수 있습니다.

State 설명
PENDING MicroVM이 프로비저닝되고 있습니다. 리소스가 할당되고 스냅샷이 로드되고 있습니다.
RUNNING MicroVM이 활성화되어 있으며 엔드포인트 URL을 통해 트래픽을 수락하고 있습니다. /run 후크가 완료되었습니다.
SUSPENDING MicroVM이 일시 중지되고 있습니다. /suspend 후크가 실행되고 있습니다. 디스크와 메모리에 체크포인트가 지정되고 있습니다.
SUSPENDED MicroVM이 일시 중지되었습니다. 상태는 유지됩니다. 컴퓨팅 요금이 발생하지 않습니다. 재개하거나 종료할 수 있습니다.
TERMINATING MicroVM이 종료되고 있습니다. /terminate 후크가 실행되고 있습니다. 리소스가 해제되고 있습니다.
TERMINATED MicroVM이 종료되었습니다. 이것은 종료 상태입니다. MicroVM을 재개하거나 재시작할 수 없습니다.

상태 전환

다음 표에는 MicroVM 상태 간의 유효한 전환과 각 전환의 트리거가 나와 있습니다.

Initial state(원래 상태) 대상 상태 트리거
PENDING RUNNING 프로비저닝 완료, /run 후크 성공
RUNNING SUSPENDING 유휴 기간 초과 또는 명시적 suspend-microvm API 직접 호출
SUSPENDING SUSPENDED /suspend 후크 완료, 메모리 및 디스크 상태에 체크포인트 지정
SUSPENDED RUNNING 트래픽 도착(autoResumeEnabled=true) 또는 명시적 resume-microvm API 직접 호출
RUNNING TERMINATING 명시적 terminate-microvm API 직접 호출 또는 maximumDurationInSeconds 초과
SUSPENDED TERMINATING suspendedDurationSeconds 또는 명시적 terminate-microvm API 직접 호출
TERMINATING TERMINATED /terminate 후크 완료 또는 모든 리소스 해제
중요

/run 후크가 실패하거나 시간 초과되면 MicroVM이 RUNNING 상태에 도달하지 않고 바로 TERMINATING 상태로 전환될 수 있습니다. 무증상 오류를 방지하려면 후크에 시간 초과 및 오류 처리를 구현하세요.