계층 콘텐츠 패키징 - AWS Lambda

계층 콘텐츠 패키징

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

이 섹션에서는 계층 콘텐츠를 올바르게 패키징하는 방법을 설명합니다. 계층에 대한 개념 정보와 계층 사용을 고려하는 이유에 대한 자세한 내용은 계층으로 Lambda 종속성 관리 섹션을 참조하세요.

계층을 생성하는 첫 번째 단계는 모든 계층 콘텐츠를.zip 파일 아카이브로 번들링하는 것입니다. Lambda 함수는 Amazon Linux에서 실행되기 때문에 계층 콘텐츠는 Linux 환경에서 컴파일하고 빌드할 수 있어야 합니다.

Linux 환경에서 계층 콘텐츠가 제대로 작동하도록 하려면 Docker 또는 AWS Cloud9과 같은 도구를 사용하여 계층 콘텐츠를 만드는 것이 좋습니다. AWS Cloud9은 코드를 실행하고 테스트하기 위해 Linux 서버에 대한 기본 제공 액세스를 제공하는 클라우드 기반 통합 개발 환경(IDE)입니다. 자세한 내용은 AWS Compute Blog의 Using Lambda layers to simplify your development process를 참조하세요.

각 Lambda 런타임에 대한 계층 경로

함수에 계층을 추가하면 Lambda는 계층 콘텐츠를 해당 실행 환경의 /opt 디렉터리로 추출합니다. 각 Lambda 런타임에 대해 PATH 변수에는 /opt 디렉터리 내의 특정 폴더 경로가 이미 포함되어 있습니다. PATH 변수가 계층 콘텐츠를 가져오도록 하려면 계층 .zip 파일의 종속성이 다음 폴더 경로에 있어야 합니다.

각 Lambda 런타임에 대한 계층 경로
런타임 경로

Node.js

nodejs/node_modules

nodejs/node14/node_modules (NODE_PATH)

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages(사이트 디렉터리)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.2.0 (GEM_PATH)

ruby/lib (RUBYLIB)

모든 런타임

bin (PATH)

lib (LD_LIBRARY_PATH)

다음 예제는 계층 .zip 아카이브에 폴더를 구성하는 방법을 보여줍니다.

Node.js
예 Node.js 용 AWS X-Ray SDK 파일 구조
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
예 Requests 라이브러리의 파일 구조
layer_content.zip └ python └ lib └ python3.11 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
예 JSON gem에 대한 파일 구조
json.zip └ ruby/gems/2.7.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
예 Jackson JAR 파일의 파일 구조
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
예 jq 라이브러리의 파일 구조
jq.zip └ bin/jq

계층 패키징, 생성, 추가에 대한 언어별 지침은 다음 페이지를 참조하세요.