AWS Lambda Layer(계층) 사용법 정리 (for Python)
AWS Lambda Layer 사용법에 대해 간단히 정리해본다.
Layer(계층) 만들기
패키지 저장 명령어는 다음과 같다.
pip install \
--platform manylinux2014_aarch64 \
--target=python \
--implementation cp \
--python-version 3.11 \
--only-binary=:all: --upgrade \
<package_name>
platform
: OS 정보
Lambda에서 x86_64 또는 arm64 아키텍처를 선택할 수 있다.
arm64 Lambda에서 패키지가 실행되지 않는 경우만 x86_64만 사용하기를 권장한다.
성능도 나아지고 무엇보다 비용을 20%나 절감할 수 있기 때문이다.
Amazon Linux 2 기준 (CentOS 기반)
아키텍처 | platform |
---|---|
arm64 | manylinux2014_aarch64 |
x86_64 | manylinux2014_x86_64 |
OS 정보는 pypa/manylinux에서 확인할 수 있다.
참고
Python 3.11까지는 Lambda OS가 Amazon Linux 2이고 3.12 부터는 Amazon Linux 2023가 사용된다.
확인해보지 않았으나 3.12부터는 platform 정보가 달라질 수도 있다.
자세한 정보는 Lambda 런타임 - in AWS에서 확인할 수 있다.
target
: 저장할 폴더 위치
Lambda에서 패키지를 바로 읽을 수 있도록 하려면 python 폴더를 생성 후 저장해야 한다.
자세한 정보는 종속 항목을 위한 Python 계층 생성 - in AWS에서 알 수 있다.
python-version
: 파이썬 버전
패키지 저장 후 zip 파일을 생성하면 된다.
zip -r lambda-layer-duckdb-python-arm64.zip python
Layer(계층) 등록하기
S3 링크 URL
보통 바로 업로드할 수 있지만 zip 파일이 10MB가 넘는 경우 S3에 먼저 업로드한 후 링크 URL을 입력해야 한다.
링크 URL은 업로드된 S3 객체를 클릭해보면 객체 URL 정보로 확인할 수 있다.
Layer(계층) 적용하기
콘솔에서 Lambda 선택 후 제일 아래에서 추가할 수 있다.
등록한 계층은 사용자 지정 계층에서 확인할 수 있고 런타임 설정에 맞는 계층만 선택가능하다.
참고로, 최대 추가 가능한 계층은 5개이다.
References
: