계층으로 Lambda 종속성 관리 - AWS Lambda

계층으로 Lambda 종속성 관리

Lambda 계층은 추가 코드 또는 데이터를 포함하는 .zip 파일 아카이브입니다. 계층에는 일반적으로 라이브러리 종속 항목, 사용자 지정 런타임 또는 구성 파일이 포함됩니다.

계층 사용을 고려하는 데에는 여러 가지 이유가 있습니다.

  • 배포 패키지의 크기를 줄이기 위해. 모든 함수 종속 항목을 함수 코드와 함께 배포 패키지에 포함하는 대신 계층에 배치합니다. 이렇게 하면 배포 패키지가 작고 체계적으로 유지됩니다.

  • 핵심 함수 로직을 종속 항목과 분리하기 위해. 계층을 사용하면 함수 코드와 독립적으로 함수 종속 항목을 업데이트할 수 있으며 그 반대의 경우도 마찬가지입니다. 이렇게 하면 관심사를 분리하고 함수 로직에 집중할 수 있습니다.

  • 여러 함수에서 종속 항목을 공유하기 위해. 계층을 생성한 후 계정의 여러 함수에 적용할 수 있습니다. 계층이 없으면 각 개별 배포 패키지에 동일한 종속 항목을 포함해야 합니다.

  • Lambda 콘솔 코드 편집기를 사용하기 위해. 코드 편집기는 함수 코드의 부분 업데이트를 빠르게 테스트하는 데 유용한 도구입니다. 그러나 배포 패키지 크기가 너무 큰 경우 편집기를 사용할 수 없습니다. 계층을 사용하면 패키지 크기가 줄어들고 코드 편집기를 사용할 수 있습니다.

Go 또는 Rust에서 Lambda 함수를 사용하는 경우 계층을 사용하지 않는 것이 좋습니다. Go 및 Rust 함수의 경우 컴파일된 함수 코드와 모든 종속성을 포함하는 실행 파일로 함수 코드를 제공합니다. 종속 항목을 계층에 추가하면 함수가 초기화 단계에서 수동으로 추가 어셈블리를 로드해야 하기 때문에 콜드 시간이 늘어날 수 있습니다. Go 및 Rust 함수의 성능을 최적화하려면 배포 패키지와 함께 종속 항목을 포함하세요.

다음 다이어그램에서는 종속 항목을 공유하는 두 함수 간의 중요 아키텍처 차이를  보여줍니다. 하나는 Lambda 계층을 사용하고 다른 하나는 사용하지 않습니다.

계층을 사용하지 않는 두 함수와 계층을 공유하는 두 함수에 대한 비교

함수에 계층을 추가하면 Lambda는 계층 콘텐츠를 함수 실행 환경의 /opt 디렉터리로 추출합니다. 기본적으로 지원되는 모든 Lambda 런타임에는 /opt 디렉터리 내의 특정 디렉터리에 대한 경로가 포함되어 있습니다. 이를 통해 함수가 계층 콘텐츠에 액세스할 수 있습니다. 이러한 특정 경로와 계층을 올바르게 패키징하는 방법에 대한 자세한 내용은 계층 콘텐츠 패키징 섹션을 참조하세요.

함수당 최대 5개의 계층을 포함할 수 있습니다. 또한 .zip 파일 아카이브로 배포된 Lambda 함수에서만 계층을 사용할 수 있습니다. 컨테이너 이미지로 정의된 함수의 경우 컨테이너 이미지를 생성할 때 기본 런타임 및 모든 코드 종속 항목을 패키징합니다. 자세한 내용은 AWS 컴퓨팅 블로그에서 컨테이너 이미지의 Lambda 계층 및 익스텐션 작업을 참조하세요.

계층 사용 방법

계층을 생성하려면 일반 배포 패키지를 생성하는 방법과 유사하게 종속 항목을 .zip 파일로 패키징합니다. 보다 구체적으로, 계층을 생성하고 사용하는 일반적인 프로세스에는 다음 세 단계가 포함됩니다.

계층 및 계층 버전

계층 버전은 특정 계층 버전의 변경 불가능한 스냅샷입니다. 새 계층을 생성하면 Lambda는 버전 번호가 1인 새 계층 버전을 생성합니다. 계층에 업데이트를 게시할 때마다 Lambda는 버전 번호를 늘리고 새 계층 버전을 생성합니다.

모든 계층 버전은 고유한 Amazon 리소스 이름(ARN)으로 식별됩니다. 함수에 계층을 추가할 때 사용하려는 정확한 계층 버전을 지정해야 합니다.