Lambda가 런타임 버전 업데이트를 관리하는 방법 이해 - AWS Lambda

Lambda가 런타임 버전 업데이트를 관리하는 방법 이해

Lambda는 보안 업데이트, 버그 수정, 새로운 기능, 성능 개선 사항 및 마이너 버전 릴리스에 대한 지원을 통해 각 관리형 런타임을 최신 상태로 유지합니다. 이러한 런타임 업데이트는 런타임 버전으로 게시됩니다. Lambda는 이전 런타임 버전에서 새 런타임 버전으로 함수를 마이그레이션하여 함수에 런타임 업데이트를 적용합니다.

관리형 런타임을 사용하는 함수의 경우 Lambda는 기본적으로 런타임 업데이트를 자동으로 적용합니다. 자동 런타임 업데이트를 통해, Lambda는 런타임 버전에 패치를 적용하는 데 따른 운영 부담을 덜어줍니다. 대부분의 고객은 자동 업데이트를 선택하는 것이 좋습니다. 런타임 관리 설정을 구성하여 이 기본 동작을 변경할 수 있습니다.

또한 Lambda는 각각의 새 런타임 버전을 컨테이너 이미지로 게시합니다. 컨테이너 기반 함수의 런타임 버전을 업데이트하려면 업데이트된 기본 이미지에서 새 컨테이너 이미지를 생성하고 함수를 재배포해야 합니다.

각 런타임 버전은 버전 번호 및 ARN(Amazon 리소스 이름)과 연결됩니다. 런타임 버전 번호는 프로그래밍 언어에서 사용하는 버전 번호에 관계없이 Lambda가 정의하는 번호 지정 스키마를 사용합니다. 런타임 버전 ARN은 각 런타임 버전의 고유 식별자입니다. Lambda 콘솔 또는 함수 로그의INIT_START 줄에서 함수의 현재 런타임 버전 ARN을 확인할 수 있습니다.

런타임 버전을 런타임 식별자와 혼동해서는 안 됩니다. 각 런타임에는 python3.12 또는 nodejs20.x와 같은 고유한 런타임 식별자가 있습니다. 이 식별자는 각각의 메이저 프로그래밍 언어 릴리스에 해당합니다. 런타임 버전은 개별 런타임의 패치 버전을 설명합니다.

참고

동일한 런타임 버전 번호의 ARN은 AWS 리전 및 CPU 아키텍처마다 다를 수 있습니다.

런타임 업데이트 모드

Lambda는 기존 함수와 호환되는 런타임 업데이트를 제공하기 위해 노력합니다. 하지만 소프트웨어 패치와 마찬가지로, 드물지만 런타임 업데이트가 기존 함수에 부정적인 영향을 미칠 수 있는 경우도 있습니다. 예를 들어 보안 패치는 이전의 안전하지 않은 동작에 의존하는 기존 함수의 근본적인 문제를 노출시킬 수 있습니다. Lambda 런타임 관리 제어는 드물게 런타임 버전 비호환성이 발생하는 경우 워크로드에 영향을 미칠 위험을 줄이는 데 도움이 됩니다. 각 함수 버전($LATEST 또는 게시된 버전)에 대해 다음 런타임 업데이트 모드 중 하나를 선택할 수 있습니다.

  • 자동(기본값) - 2단계 런타임 버전 롤아웃을 사용하여 가장 최신의 안전한 런타임 버전으로 자동 업데이트합니다. 런타임 업데이트의 이점을 항상 누릴 수 있도록 대부분의 고객에게 이 모드를 권장합니다.

  • 함수 업데이트 - 함수를 업데이트하면 최신의 안전한 런타임 버전으로 업데이트합니다. 함수를 업데이트하면 Lambda는 함수의 런타임 버전을 최신의 안전한 런타임 버전으로 업데이트합니다. 이 방식은 런타임 업데이트를 함수 배포와 동기화하여 Lambda가 런타임 업데이트를 적용하는 시점을 사용자가 제어할 수 있도록 합니다. 이 모드를 사용하면 드물게 발생하는 런타임 업데이트 비호환성을 조기에 감지하여 해결할 수 있습니다. 이 모드를 사용하는 경우 런타임을 최신 상태로 유지하려면 함수를 정기적으로 업데이트해야 합니다.

  • 수동 — 런타임 버전을 수동으로 업데이트합니다. 사용자가 함수 구성에서 런타임 버전을 지정합니다. 이 런타임 버전이 함수에 무기한으로 사용됩니다. 드문 경우지만 새 런타임 버전이 기존 함수와 호환되지 않는 경우 이 모드를 사용하여 함수를 이전 런타임 버전으로 롤백할 수 있습니다. 배포 전반에서 런타임 일관성을 유지하는 데 수동 모드를 사용하지 않는 것이 좋습니다. 자세한 내용은 Lambda 런타임 버전 롤백 단원을 참조하십시오.

함수에 런타임 업데이트를 적용할 책임의 여부는 선택한 런타임 업데이트 모드에 따라 달라집니다. 자세한 내용은 Lambda 런타임 관리를 위한 공동 책임 모델의 이해 단원을 참조하십시오.

2단계 런타임 버전 롤아웃

Lambda는 다음 순서로 새 런타임 버전을 도입합니다.

  1. 첫 번째 단계에서 Lambda는 사용자가 함수를 생성하거나 업데이트할 때마다 새 런타임 버전을 적용합니다. 함수는 사용자가 UpdateFunctionCode 또는 UpdateFunctionConfiguration API 작업을 호출할 때 업데이트됩니다.

  2. 두 번째 단계에서 Lambda는 자동 런타임 업데이트 모드를 사용하고 아직 새 런타임 버전으로 업데이트되지 않은 모든 함수를 업데이트합니다.

롤아웃 프로세스의 전체 기간은 런타임 업데이트에 포함된 보안 패치의 심각도를 비롯한 여러 요인에 따라 달라집니다.

함수를 적극적으로 개발 및 배포하는 경우 첫 번째 단계에서 새 런타임 버전을 선택할 가능성이 높습니다. 이렇게 하면 런타임 업데이트가 함수 업데이트와 동기화됩니다. 드물지만 최신 런타임 버전이 애플리케이션에 부정적인 영향을 미치는 경우, 이 방법을 사용하면 즉각적인 시정 조치를 취할 수 있습니다. 현재 개발 중이 아닌 함수는 여전히 두 번째 단계에서 자동 런타임 업데이트라는 운영상의 이점을 누릴 수 있습니다.

이 방법은 함수 업데이트 모드 또는 수동 모드로 설정된 함수에는 영향을 미치지 않습니다. 함수 업데이트 모드를 사용하는 함수의 경우 생성하거나 업데이트할 때만 최신 런타임 업데이트가 적용됩니다. 수동 모드를 사용하는 함수의 경우 런타임 업데이트가 적용되지 않습니다.

Lambda는 여러 AWS 리전에 새로운 런타임 버전을 점진적, 순차적으로 게시합니다. 함수가 자동 또는 함수 업데이트 모드로 설정된 경우 여러 리전에 동시에 배포되거나 동일한 리전에서 서로 다른 시간에 배포된 함수에 서로 다른 런타임 버전이 적용될 수 있습니다. 여러 환경에서 런타임 버전 일관성을 보장해야 하는 고객은 컨테이너 이미지를 사용하여 Lambda 함수를 배포해야 합니다. 수동 모드는 드물게 런타임 버전이 함수와 호환이 안 되는 경우에 런타임 롤백을 지원하기 위한 임시 문제 해결 조치로 설계되었습니다.