

# 스냅샷 작업
<a name="microvms-images-snapshots"></a>

AWS Lambda MicroVM은 MicroVM 이미지를 빌드할 때 완전히 초기화된 애플리케이션의 Firecracker 스냅샷을 캡처합니다. 이 페이지에서는 스냅샷에 포함된 내용, 동일한 스냅샷을 공유하는 MicroVM 전반의 고유성을 처리하는 방법, 스냅샷 호환 애플리케이션에 대한 모범 사례를 설명합니다.

## 스냅샷이 캡처하는 내용
<a name="microvms-snapshots-what-is-captured"></a>

Firecracker 스냅샷은 이미지 빌드가 완료되는 시점에 MicroVM에서 다음 상태를 캡처합니다.
+ **실행 중인 프로세스의 메모리 상태** - `ENTRYPOINT`/`CMD`에 의해 시작된 모든 프로세스(백그라운드 대몬, cron 작업 및 하위 프로세스 포함)
+ **디스크 상태** - 빌드 단계에서 작성된 모든 파일(설치된 패키지, 컴파일된 바이너리, 구성 파일)을 포함하는 루트 파일 시스템
+ **네트워크 연결 및 파일 설명자** - 초기화된 네트워크 연결, 파일 핸들, 파이프 및 기타 설명자

MicroVM을 실행하면 Lambda는 이 스냅샷에서 MicroVM을 복원합니다. 애플리케이션은 MicroVM 이미지 버전 빌드가 중단된 지점에서 정확히 재개합니다.

## 호환성 고려 사항
<a name="microvms-images-snapshots-compatibility"></a>

동일한 이미지 버전에서 시작된 모든 MicroVM은 동일한 초기 상태를 공유하므로, Lambda MicroVM을 사용하여 애플리케이션을 구축할 때는 다음 사항을 고려해야 합니다.
+ **고유성** - 코드가 이미지 버전 빌드 단계 중 고유한 콘텐츠(고유 ID, 시크릿 또는 유사 무작위성을 위한 엔트로피)를 생성하는 경우 해당 콘텐츠는 동일한 이미지 버전에서 실행되는 모든 MicroVM 간에 공유됩니다. 이미지 빌드 중이 아닌, 새 MicroVM 시작 후 고유한 콘텐츠를 생성합니다. `/run` 수명 주기 후크를 사용하여 이전에 생성된 고유 콘텐츠를 재설정합니다.
+ **네트워크 연결** - 이미지 버전에서 MicroVM이 실행될 때 이미지 버전 빌드 단계 중 설정된 연결을 다시 설정해야 할 수 있습니다. 연결 상태를 검증하고 필요한 경우 연결을 다시 설정하세요. 대부분의 경우 AWS SDK에서 생성된 연결이 자동으로 다시 설정됩니다.

## 스냅샷으로 고유성 처리
<a name="microvms-images-snapshots-uniqueness"></a>

동일한 이미지에서 실행되는 모든 MicroVM은 동일한 초기 상태를 공유합니다. MicroVM 간에 고유성을 유지하려면 다음을 수행하세요.
+ 이미지 버전 빌드 중이 아닌, MicroVM 시작 후에 고유 ID, 시크릿 및 임의 값을 생성합니다. `/run` 수명 주기 후크를 사용하여 고유한 상태를 재설정합니다.
+ 프로그래밍 언어에 암호학적으로 안전한 가상 난수 생성기(CSPRNG)를 사용합니다. 언어 표준 암호화 라이브러리가 `/dev/random` 디바이스 또는 `/dev/urandom` 디바이스에서 엔트로피를 수신하는지 확인합니다. 이는 Java 11\+(SecureRandom 라이브러리), Node.js(crypto.randomBytes 라이브러리), Python 3.12\+(Secrets.SystemRandom 라이브러리) 및 Dotnet8\+(Cryptography.RandomNumberGenerator 라이브러리)와 같은 인기 프로그래밍 언어용 암호화 라이브러리의 기본 동작입니다. `/dev/random` 또는 `/dev/urandom`에서 읽는 소프트웨어는 MicroVM 이미지 스냅샷과 함께 사용 시 무작위성을 유지합니다.
+ 애플리케이션 코드가 OpenSSL을 사용하는 경우 `public.ecr.aws/lambda/microvms:al2023-minimal`의 AWS 제공 기본 컨테이너 이미지를 사용하여 MicroVM 이미지를 빌드하세요. 이 이미지에는 스냅샷 기능과 호환되는 AWS 패치 버전의 OpenSSL이 포함되어 있습니다. OpenSSL과 함께 자체 기본 이미지를 사용하려면 [Amazon Linux 2023 패키지 목록](https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages.html)에 있는 패치가 적용된 OpenSSL 버전(openssl-snapsafe-libs)을 사용하세요.