View a markdown version of this page

MicroVM 이미지 - AWS Lambda

MicroVM 이미지

이 섹션에서는 MicroVM 이미지를 빌드, 구성, 업데이트 및 관리하는 방법을 설명합니다.

MicroVM 이미지는 MicroVM의 파일 시스템과 애플리케이션 환경을 정의하는 리소스입니다. MicroVM 이미지에는 런타임 환경, 애플리케이션 코드와 백그라운드 프로세스, 관찰성 에이전트 등의 지원 프로그램이 포함되어 있습니다. MicroVM 이미지를 생성하려면 Dockerfile과 애플리케이션 아티팩트가 포함된 zip 패키지를 Amazon S3에 업로드하여 제공합니다. Dockerfile은 애플리케이션이 패키징되는 방식을 정의합니다. Lambda는 Lambda 관리형 MicroVM 기본 이미지가 제공하는 운영 체제 환경 위에서 Dockerfile을 실행하여 애플리케이션 컨테이너 이미지를 빌드합니다. MicroVM 기본 이미지는 아래 MicroVM 기본 이미지 섹션에 설명되어 있습니다.

MicroVM 기본 이미지를 업데이트하여 MicroVM의 애플리케이션 코드나 구성을 업데이트할 수 있습니다. 트리거하는 각 업데이트마다 새로운 MicroVM 이미지 버전이 생성됩니다.

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

MicroVM 이미지를 생성하면 Lambda는 다음을 수행합니다.

  • Amazon S3에서 패키징된 아티팩트를 검색합니다.

  • Lambda 관리형 기본 이미지에서 새 MicroVM을 시작합니다.

  • Dockerfile의 명령어를 실행합니다.

  • ENTRYPOINT 또는 CMD 명령어를 사용하여 애플리케이션을 시작합니다.

  • 수명 주기 후크의 초기화 완료 신호를 기다립니다.

  • 디스크 및 메모리 상태의 스냅샷을 캡처합니다.

스냅샷 프로세스가 완료되면 MicroVM 이미지가 CREATED 상태로 전환됩니다. 이제 이 MicroVM 이미지를 사용하여 MicroVM을 생성할 수 있으며, 각 MicroVM 이미지를 사용하여 여러 개의 독립적인 MicroVM을 생성할 수 있습니다. MicroVM 이미지에서 실행되는 MicroVM은 스냅샷이 생성된 상태에서 직접 재개되므로 시작 시간이 빠릅니다. 각 MicroVM 이미지는 계정의 허용 한도 내에서 여러 개의 MicroVM을 실행하는 데 사용할 수 있습니다.

코드를 패키징하고 첫 번째 MicroVM 이미지를 생성하는 방법에 대한 단계별 안내는 첫 번째 MicroVM 생성 섹션을 참조하세요.

MicroVM 크기 조정

Lambda MicroVM 피크 활동을 위해 각 컴퓨팅 환경의 크기를 적절하게 조정할 필요가 없는 기준 피크 모델을 사용합니다. MicroVM의 기준 컴퓨팅 리소스를 구성합니다. 피크 활동 중 MicroVM은 기준의 최대 4배까지 자동으로 수직적 스케일링을 수행할 수 있습니다. MicroVM이 실행되는 동안 기준 요금을 지불하고 기준을 초과하여 실제로 사용한 만큼만 초당 요금을 지불합니다.

MicroVM 이미지를 생성할 때 memory 파라미터를 통해 기준을 설정합니다. vCPU는 메모리에 비례하여 규모가 조정됩니다(2GB = 1 vCPU). 기본 기준은 2GB/1vCPU입니다.

다음 표에는 사용 가능한 크기가 나열되어 있습니다.

기준 Peak 최대 디스크 공간
0.5GB 메모리, 0.25 vCPU 2GB 메모리, 1 vCPU 8GB
1GB 메모리, 0.5 vCPU 4GB 메모리, 2 vCPU 8GB
2GB 메모리, 1 vCPU(기본값) 8GB 메모리, 4 vCPU 8GB
4GB 메모리, 2 vCPU 16GB 메모리, 8 vCPU 16 GB
8GB 메모리, 4 vCPU 32GB 메모리, 16 vCPU 32GB

MicroVM 기본 이미지

MicroVM 기본 이미지는 MicroVM 이미지의 기반 역할을 합니다. Lambda는 Amazon Linux 2023 운영 체제와 MicroVM 실행에 필요한 서비스 구성 요소를 제공하는 MicroVM을 게시합니다. MicroVM 이미지를 생성하거나 업데이트하면 Lambda는 이 기본 이미지에서 새 MicroVM을 시작하고 이 운영 체제 환경 내에서 Dockerfile 명령어를 실행합니다.

Lambda는 보안 패치를 적용할 때와 같이 서비스 관리형 MicroVM 기본 이미지의 새 버전을 정기적으로 릴리스하여 운영 체제 또는 서비스 구성 요소를 업데이트합니다. 기본적으로 서비스 관리형 기본 이미지의 최신 버전은 자체 MicroVM 이미지를 생성/업데이트할 때 적용됩니다. 문제 해결 또는 디버깅을 위해 base-image-version 파라미터를 사용하여 자체 MicroVM 이미지를 생성할 때 서비스 관리형 기반 이미지의 버전을 필요에 따라 재정의할 수 있습니다.

기본 이미지 버전은 사용 중단 수명 주기를 따릅니다.

  • AVAILABLE - 현재 버전이며, 사용을 권장합니다.

  • DEPRECATED(60일) - 더 새로운 버전이 있습니다. 여전히 빌드하고 실행할 수 있습니다.

  • EXPIRING(30일) - 새 이미지를 생성할 수 없습니다. 기존 이미지는 여전히 실행 가능합니다.

  • EXPIRED - 빌드하거나 실행할 수 없습니다. 지원되는 버전에서 이미지를 다시 빌드하세요.

  • RECALLED - 심각한 보안 문제로 인해 즉시 사용할 수 없습니다(드뭄).

최신 상태를 유지하려면 사용 중단 알림을 모니터링하고 새 기본 이미지 버전이 릴리스될 때 MicroVM 이미지를 다시 빌드합니다.

MicroVM 기본 이미지는 Dockerfile에서 지정하는 컨테이너 기본 이미지와는 별개라는 점에 유의하세요. 전자는 MicroVM의 운영 체제 환경을 정의하지만, 후자는 Lambda MicroVM과 함께 사용할 애플리케이션을 패키징할 때 사용할 기본 컨테이너 이미지를 정의합니다. 자세한 내용은 컨테이너 기본 이미지 단원을 참조하십시오.

다음 API를 사용하여 사용 가능한 관리형 MicroVM 기본 이미지와 해당 버전을 검색합니다.

# List all managed MicroVM base images aws lambda-microvms list-managed-microvm-images # List the versions of a specific managed MicroVM base image aws lambda-microvms list-managed-microvm-image-versions \ --image-identifier arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1

MicroVM 이미지 빌드 후크

Lambda는 MicroVM 이미지 생성 중 애플리케이션 정확성을 확인하고 성능을 최적화할 수 있는 MicroVM 이미지 빌드 후크를 제공합니다. 후크는 Lambda가 각 MicroVM을 초기화하는 데 사용되는 스냅샷을 생성하기 전에 실행됩니다. 각 후크는 애플리케이션이 노출하고 빌드 중 Lambda가 직접적으로 호출하는 HTTP 엔드포인트입니다. 이러한 요청에 응답하여 MicroVM 이미지 빌드 프로세스를 제어하고 검증할 수 있습니다. Lambda는 HTTP 상태 코드를 사용하여 후크가 성공적으로 완료되었는지 여부를 판단합니다.

중요

후크를 구성하는 경우 애플리케이션이 후크 요청을 수신할 포트를 지정해야 합니다.

후크 경로 세부 정보 HTTP Status Codes 제한 시간
/ready /aws/lambda-microvms/runtime/v1/ready 애플리케이션이 ENTRYPOINT 또는 CMD를 통해 시작된 후 MicroVM 이미지 빌드 중 직접적으로 호출됩니다. 애플리케이션 스냅샷을 생성할 준비가 되었음을 알립니다. HTTP 503: 아직 준비되지 않았습니다. Lambda는 시간이 초과될 때까지 재시도합니다. HTTP 200: 초기화가 완료되었습니다. Lambda가 스냅샷을 생성합니다. 1~3,600초(readyTimeoutInSeconds)
/validate /aws/lambda-microvms/runtime/v1/validate 빌드가 완료된 후 생성된 이미지에서 시작된 새 MicroVM에서 직접적으로 호출됩니다. 재개 시 애플리케이션이 올바르게 작동하는지 확인합니다. HTTP 503: 검증을 완료하는 데 더 많은 시간이 필요합니다. Lambda는 시간이 초과될 때까지 재시도합니다. HTTP 200: 검증이 통과되었습니다. 1~3,600초(validateTimeoutInSeconds)
중요

HTTP 503을 반환할 때는 요청을 열어둔 채로 기다리지 말고 즉시 반환하세요. 요청이 열려 있는 동안 제한 시간이 경과하면 Lambda는 빌드를 종료합니다.

참고

/validate 후크를 사용하여 시작 시간을 최적화할 수도 있습니다. 이렇게 하려면 검증 중 모의 페이로드를 실행합니다. 이를 통해 Lambda는 스냅샷의 액세스된 영역을 추적하고 MicroVM 시작 중 검색을 최적화할 수 있습니다.

MicroVM 이미지 업데이트

update-microvm-image API를 직접적으로 호출하여 기존 MicroVM 이미지를 업데이트할 수 있습니다. 각 업데이트는 새로운 MicroVM 이미지 버전 빌드를 트리거합니다. 일반적으로 다음과 같은 목적으로 MicroVM 이미지를 업데이트합니다.

  • 새 애플리케이션 코드 배포 - 새 코드 아티팩트(Amazon S3에 업로드된 새로운 zip)를 지정하여 애플리케이션의 새 버전을 배포합니다.

  • 최신 MicroVM 기본 이미지로 이동 - MicroVM 기본 이미지 ARN을 변경하여 Lambda MicroVM 기본 이미지의 최신 버전으로 업그레이드합니다 자세한 정보는 MicroVM 이미지 패치 적용MicroVM 기본 이미지 섹션을 참조하세요.

  • 빌드 역할 변경 - 코드 아티팩트가 다른 Amazon S3 버킷으로 이동하거나 프라이빗 ECR 리포지토리에서 풀을 시작하는 경우와 같이 빌드 변경 중 Lambda에 필요한 권한이 변경될 때 빌드 역할 ARN을 업데이트합니다.

  • 런타임 구성 조정 - 후크, 환경 변수 또는 기능을 변경하여 MicroVM 이미지가 빌드되고 실행되는 방법을 재구성합니다.

  • 설명 업데이트 - MicroVM 이미지 설명을 변경하여 이 버전에서 변경된 내용을 기록합니다.

다음 CLI 명령은 MicroVM 이미지를 업데이트하는 방법을 보여줍니다. 코드 아티팩트만 변경할 때도 새로운 빌드를 트리거하는 모든 update-microvm-image 직접 호출에서는 --base-image-arn--build-role-arn 파라미터가 필수입니다. 이들 파라미터를 생략하면 ValidationException이 발생합니다.

aws lambda-microvms update-microvm-image \ --image-identifier arn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image \ --code-artifact uri=s3://my-bucket/deployments/app-v2.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --description "Updated with v2 application code"

이미지 상태 및 빌드 상태

MicroVM 이미지를 생성하거나 업데이트할 때마다 Lambda는 코드 아티팩트와 기본 이미지에서 빌드된 새 버전을 생성합니다. MicroVM 이미지는 시간이 지남에 따라 여러 버전이 있을 수 있으며, 사용자는 특정 버전에서 MicroVM을 실행합니다.

세 가지 독립적인 상태가 수명 주기의 다양한 측면을 추적합니다.

  • 이미지 상태 - MicroVM 이미지 리소스의 전체 수명 주기(생성 중, 사용 준비 완료, 업데이트 중, 실패 또는 삭제 중)입니다.

  • 버전 상태 - 특정 버전의 빌드 진행 상황(보류 중, 빌드, 성공 또는 실패)입니다. 실패 세부 정보는 stateReason 또는 CloudWatch 로그(/aws/lambda/microvms/<image-name>)에서 확인할 수 있습니다.

  • 버전 활성화 - 성공적으로 빌드된 버전이 MicroVM을 실행할 수 있는지 여부입니다. Lambda는 새 버전을 ACTIVE로 자동 설정합니다. 버전을 삭제하지 않고 비활성화하려면 해당 버전을 INACTIVE로 설정합니다.

State 가능한 값 전환 제어자
이미지 상태 CREATING, CREATED, CREATION_FAILED, UPDATING, UPDATED, UPDATE_FAILED, DELETING, DELETED, DELETION_FAILED Lambda(자동)
버전 상태 PENDING, IN_PROGRESS, SUCCESSFUL, FAILED Lambda(자동)
버전 활성화 ACTIVE, INACTIVE 사용자(update-microvm-image-version --state)

버전에서 MicroVM을 실행하려면 이미지 상태가 CREATED 또는 UPDATED이고, 버전 상태가 SUCCESSFUL이고, 버전이 ACTIVE여야 합니다.

참고

이들 상태는 독립적입니다. CREATED 상태의 이미지는 상태가 FAILED인 버전을 포함할 수 있습니다.

# De-activate a version aws lambda-microvms update-microvm-image-version \ --image-identifier my-image \ --image-version 1.0 \ --state INACTIVE

환경 변수

환경 변수는 MicroVM 이미지 빌드 시 environmentVariables 필드를 통해 설정되며(변수 최대 50개), 스냅샷 빌드 프로세스 중 컨테이너에 주입됩니다. 새 MicroVM을 실행할 때 동적으로 설정된 페이로드를 전달할 수 있습니다. 자세한 내용은 MicroVM 실행 관련 섹션을 참조하세요.

MicroVM 이미지 패치 적용

새로운 MicroVM 기본 이미지가 제공되면 update-microvm-image 직접 호출을 실행하여 최신 패치로 MicroVM 이미지 빌드를 트리거할 수 있습니다. 이때 base-image-version 인수를 생략하거나(최신 버전 사용) 인수를 최신 버전으로 지정합니다.

컨테이너 기본 이미지

Lambda MicroVM은 MicroVM 운영 체제 환경 내에서 애플리케이션을 컨테이너로 실행합니다. Dockerfile을 사용하여 해당 컨테이너를 정의하고, DockerfileFROM 명령어는 애플리케이션의 컨테이너 기본 이미지를 설정합니다.

Amazon Linux 2023용 Lambda 기본 컨테이너 이미지(public.ecr.aws/lambda/microvms:al2023-minimal)로 시작하고 여기에 Dockerfile 명령어를 추가하거나, 자체 기본 컨테이너 이미지를 사용할 수 있습니다. 자체 컨테이너 이미지를 사용하는 경우 다음 요구 사항을 확인하세요.

요구 사항

  • 컨테이너 기본 이미지는 대상 CPU 아키텍처와 호환되어야 합니다.

  • 프라이빗 AWS ECR 리포지토리의 컨테이너 기본 이미지를 사용하려면 빌드 역할에 ecr:GetAuthorizationTokenecr:BatchGetImage 권한이 있어야 합니다.

  • 컨테이너 기본 이미지는 Linux 운영 체제를 기반으로 해야 합니다.

  • 컨테이너 기본 이미지는 Lambda 빌드 인프라(퍼블릭 인터넷 또는 동일한 AWS 계정의 ECR 리포지토리)에서 액세스할 수 있어야 합니다.

  • 컨테이너 기본 이미지는 스냅샷과 호환되어야 합니다. 아래 지침을 참조하세요.

스냅샷 호환 기본 이미지

Lambda MicroVM 사전 초기화된 스냅샷에서 각 MicroVM을 시작하므로 기본 이미지는 스냅샷과 호환되어야 합니다. Lambda MicroVM에서 자체 기본 이미지를 사용할 때는 호환성 고려 사항에 대한 섹션을 검토하는 것이 좋습니다.

프라이빗 ECR 이미지 사용

DockerfileFROM 명령어에서 개인 ECR 컨테이너 기본 이미지를 참조합니다.

FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest WORKDIR /app COPY . . CMD ["./my-app"]

빌드 역할에 다음 권한을 추가합니다.

{ "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }

운영 체제 기능

기본적으로 Lambda MicroVM은 표준 Linux 기능 세트로 실행됩니다. MicroVM 이미지를 생성하거나 업데이트할 때 additionalOsCapabilities 필드를 사용하여 승격된 Linux 기능을 부여할 수 있습니다. 지원되는 유일한 값은 ["ALL"]입니다. 승격된 기능을 통해 파일 시스템 탑재, 네트워크 네임스페이스 생성, eBPF 프로그램 실행 등의 작업을 수행할 수 있습니다. 기능은 VM 격리 경계 내에 적용되며 호스트나 기타 MicroVM에 영향을 주지 않습니다.

aws lambda-microvms create-microvm-image \ --name my-network-tool \ --code-artifact uri=s3://my-bucket/app.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/BuildRole \ --additional-os-capabilities '["ALL"]'