기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
레이어 작업
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