레이어 작업 - AWS Serverless Application Model

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

레이어 작업

AWS SAM를 사용하여 서버리스 애플리케이션에 레이어를 포함할 수 있습니다. 레이어에 대한 자세한 내용을 알아보려면 AWS Lambda개발자 안내서AWS Lambda레이어를 참조하세요.

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

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

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

사용자 지정 레이어를 구축하는 방법에 대한 자세한 정보는 레이어 구축를 참조하세요.

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

애플리케이션에 레이어를 포함하려면 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 오버레이합니다. 는 빌드한 이미지의 이름과 캐시에 LayerVersions 보관된 이미지의 이름을 AWS SAM CLI 생성합니다. 다음 단원들에서 스키마에 관한 더 자세한 내용을 확인할 수 있습니다.

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

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

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

템플릿에 정의된 LayerVersionArn a가 주어지면 는 ARN에서 LayerName 및 버전을 AWS SAM CLI 추출합니다. 그러면 레이어 콘텐츠를 명명된 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