함수에 계층 추가
Lambda 계층은 추가 코드 또는 데이터를 포함하는 .zip 파일 아카이브입니다. 계층에는 일반적으로 라이브러리 종속 항목, 사용자 지정 런타임 또는 구성 파일이 포함됩니다.
이 섹션에서는 Lambda 함수에 계층을 추가하는 방법을 설명합니다. 계층에 대한 개념 정보와 계층 사용을 고려하는 이유에 대한 자세한 내용은 계층으로 Lambda 종속성 관리 섹션을 참조하세요.
계층을 사용하도록 Lambda 함수를 구성하려면 먼저 다음을 수행해야 합니다.
-
계층 버전에 대해 GetLayerVersion API를 직접적으로 호출할 권한이 있는지 확인합니다. AWS 계정의 함수인 경우 사용자 정책에 이 권한이 있어야 합니다. 다른 계정에서 계층을 사용하려면 해당 계정의 소유자가 리소스 기반 정책에서 계정 권한을 부여해야 합니다. 예제는 Lambda 계층에 다른 계정에 대한 액세스 권한 부여을 참조하세요.
Lambda 함수에 최대 5개의 계층을 추가할 수 있습니다. 함수 및 모든 계층의 압축되지 않은 총 크기는 압축 해제된 배포 패키지 크기 할당량인 250MB를 초과할 수 없습니다. 자세한 내용은 Lambda 할당량 단원을 참조하십시오.
함수는 이미 추가한 모든 계층 버전을 계속 사용할 수 있습니다. 이는 해당 계층 버전이 삭제되거나 계층 액세스 권한이 취소된 후에도 마찬가지입니다. 그러나 삭제된 계층 버전을 사용하는 새 함수는 작성할 수 없습니다.
참고
함수에 추가하는 계층이 함수의 런타임 및 명령 세트 아키텍처와 호환되는지 확인합니다.
함수에 태그 추가(콘솔)
Lambda 콘솔의 함수 페이지
를 엽니다. -
구성할 함수를 선택합니다.
-
[계층(Layers)]에서 [계층 추가(Add a layer)]를 선택합니다.
-
계층 선택에서 계층 소스를 선택합니다.
-
AWS 계층 또는 사용자 지정 계층 계층 소스의 경우 풀다운 메뉴에서 계층을 선택합니다. [버전(Version)의 풀다운 메뉴에서 계층 버전을 선택합니다.
-
ARN 지정 계층 소스의 경우 텍스트 상자에 ARN을 입력하고 확인을 선택합니다. 그런 다음 추가를 선택합니다.
-
계층을 추가하는 순서에 따라 나중에 Lambda가 계층 콘텐츠를 실행 환경에 병합하는 순서가 결정됩니다. 콘솔을 사용하여 계층 병합 순서를 변경할 수 있습니다.
함수의 계층 병합 순서 업데이트(콘솔)
Lambda 콘솔의 함수 페이지
를 엽니다. -
구성할 함수를 선택합니다.
-
[계층(Layers)]에서 [편집(Edit)]을 선택합니다.
-
계층 중 하나를 선택합니다.
-
[앞에 병합(Merge earlier)] 또는 [뒤에 병합(Merge later)]을 선택하여 계층의 순서를 조정합니다.
-
Save(저장)를 선택합니다.
계층의 버전이 지정됩니다. 각 계층 버전의 콘텐츠는 변경할 수 없습니다. 계층의 소유자는 새 계층 버전을 릴리스하여 업데이트된 콘텐츠를 제공할 수 있습니다. 콘솔을 사용하여 함수에 연결된 계층 버전을 업데이트할 수 있습니다.
함수의 계층 버전 업데이트(콘솔)
-
Lambda 콘솔의 계층 페이지
를 엽니다. -
버전을 업데이트하려는 계층을 선택합니다.
-
이 버전을 사용하는 함수 탭을 선택합니다.
-
수정하려는 함수를 선택하고 편집을 선택합니다.
-
계층 버전에서 변경할 계층 버전을 선택합니다.
-
함수 업데이트(Update functions)를 선택합니다.
여러 AWS 계정에 걸쳐 함수의 계층 버전을 업데이트할 수 없습니다.
함수에서 계층 콘텐츠 액세스
Lambda 함수에 계층이 포함되어 있는 경우 Lambda는 함수 실행 환경의 /opt
디렉터리에 계층 콘텐츠를 추출합니다. Lambda는 함수에 의해 나열된 순서(낮음에서 높음)로 계층을 추출합니다. Lambda는 이름이 같은 폴더를 병합합니다. 동일한 파일이 여러 계층에 나타나면 마지막으로 적용된 계층의 버전이 사용됩니다.
각 Lambda 런타임은 PATH
변수에 특정 /opt
디렉터리 폴더를 추가합니다. 함수 코드는 경로를 지정하지 않고도 계층 콘텐츠에 액세스할 수 있습니다. Lambda 실행 환경의 경로 설정에 관한 자세한 내용은 정의된 런타임 환경 변수 섹션을 참조하세요.
계층을 생성할 때 라이브러리를 어디에 포함해야 하는지 알아보려면 각 Lambda 런타임에 대한 계층 경로 섹션을 참조하세요.
Node.js 또는 Python 런타임을 사용하는 경우 Lambda 콘솔에서 기본 제공 코드 편집기를 사용할 수 있습니다. 현재 함수에 계층으로 추가한 모든 라이브러리를 가져올 수 있어야 합니다.
계층 정보 찾기
계정에서 함수의 런타임과 호환되는 계층을 찾으려면 ListLayers API를 사용하세요. 예를 들어, 다음 list-layers
AWS Command Line Interface(CLI) 명령을 사용할 수 있습니다.
aws lambda list-layers --compatible-runtime python3.9
다음과 유사한 출력 화면이 표시되어야 합니다.
{ "Layers": [ { "LayerName": "my-layer", "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LatestMatchingVersion": { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "python3.9", "python3.10", "python3.11", ] } } ] }
계정의 모든 계층을 나열하려면 --compatible-runtime
옵션을 생략합니다. 응답 세부 정보에는 각 계층의 최신 버전이 표시됩니다.
ListLayerVersions API를 사용하여 최신 버전의 계층을 가져올 수도 있습니다. 예를 들어, 다음 list-layer-versions
CLI 명령을 사용할 수 있습니다.
aws lambda list-layer-versions --layer-name my-layer
다음과 유사한 출력 화면이 표시되어야 합니다.
{ "LayerVersions": [ { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "java11" ] }, { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Version": 1, "Description": "My layer", "CreatedDate": "2023-11-15T00:27:46.592+0000", "CompatibleRuntimes": [ "java11" ] } ] }