AWS SAM에서 Lambda 계층을 사용하여 효율성 향상 - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SAM에서 Lambda 계층을 사용하여 효율성 향상

AWS SAM을 사용하면 서버리스 애플리케이션에 계층을 포함할 수 있습니다. AWS Lambda 계층을 사용하면 Lambda 함수에서 Lambda 계층으로 코드를 추출한 다음 여러 Lambda 함수에서 사용할 수 있습니다. 이렇게 하면 배포 패키지의 크기를 줄이고, 핵심 함수 로직을 종속성과 분리하며, 여러 함수에서 종속성을 공유할 수 있습니다. 계층에 대한 자세한 내용은 AWS Lambda 개발자 안내서Lambda 계층을 참조하세요.

이 주제는 다음과 관련된 정보를 제공합니다.

  • 애플리케이션에 레이어 포함

  • 레이어가 로컬에 캐싱되는 방법

사용자 지정 레이어를 구축하는 방법에 대한 자세한 정보는 에서 Lambda 계층 빌드 AWS SAM를 참조하세요.

애플리케이션에 레이어 포함

애플리케이션에 레이어를 포함하려면 AWS::Serverless::Function 리소스 유형의 Layers 속성을 사용합니다.

다음은 레이어를 포함하는 Lambda 함수가 포함된 예제 AWS SAM 템플릿입니다.

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - <LayerVersion ARN>

레이어가 로컬에 캐싱되는 방법

sam local 명령 중 하나를 사용하여 함수를 호출하면 함수의 레이어 패키지가 다운로드되어 로컬 호스트에 캐시됩니다.

다음 표는 각 운영 체제의 기본 캐시 디렉토리 위치를 나타냅니다.

OS 위치
Windows 7 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 8 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 10 C:\Users\<user>\AppData\Roaming\AWS SAM
macOS ~/.aws-sam/layers-pkg
Unix ~/.aws-sam/layers-pkg

패키지가 캐시되면 함수를 호출하는 데 사용되는 Docker 이미지에 레이어를 AWS SAM CLI 오버레이합니다. AWS SAM CLI는 그것이 구축한 이미지의 이름과 캐시에 보관된 LayerVersion을 생성합니다. 다음 단원들에서 스키마에 관한 더 자세한 내용을 확인할 수 있습니다.

오버레이된 레이어를 검사하려면 다음 명령을 실행하여 검사하려는 이미지에서 배쉬 세션을 시작합니다.

docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i

레이어 캐싱 디렉터리 이름 스키마

귀하의 템플릿에 정의된 LayerVersionARN이 주어지면 AWS SAM CLI는 ARN에서 레이어 이름과 버전을 추출합니다. 그러면 레이어 콘텐츠를 명명된 LayerName-Version-<first 10 characters of sha256 of ARN>에 배치할 디렉터리가 생성됩니다.

예시

ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 Directory name = myLayer-1-926eeb5ff1

Docker 이미지 태그 스키마

고유 레이어 해시를 계산하려면 모든 고유 레이어 이름을 구분자 '-'로 결합하고 SHA256 해시를 가져온 다음 처음 10자를 취합니다.

예시

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 - arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1

고유 이름은 레이어 캐싱 디렉터리 이름 스키마와 동일하게 계산됩니다.

arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 = myLayer-1-926eeb5ff1 arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1 = mySecondLayer-1-6bc1022bdf

고유한 레이어 해시를 계산하려면 모든 고유 레이어 이름을 구분자 '-'로 결합하고 sha256 해시를 사용하여 처음 25자를 취합니다.

myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef

그런 다음 이 값을 함수의 런타임 및 아키텍처와 결합하고 구분자를 '-'로 지정합니다.

python3.7-x86_64-2dd7ac5ffb30d515926aefffd