

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

# 에서 Lambda 계층을 사용하여 효율성 향상 AWS SAM
<a name="serverless-sam-cli-layers"></a>

를 사용하면 서버리스 애플리케이션에 계층을 포함할 AWS SAM수 있습니다. AWS Lambda 계층을 사용하면 Lambda 함수에서 Lambda 계층으로 코드를 추출한 다음 여러 Lambda 함수에서 사용할 수 있습니다. 이렇게 하면 배포 패키지의 크기를 줄이고, 핵심 함수 로직을 종속성과 분리하며, 여러 함수에서 종속성을 공유할 수 있습니다. 계층에 대한 자세한 내용은AWS Lambda 개발자 안내서**의 [Lambda 계층](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html)을 참조하세요.

이 주제는 다음과 관련된 정보를 제공합니다.
+ 애플리케이션에 레이어 포함
+ 레이어가 로컬에 캐싱되는 방법

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

## 애플리케이션에 레이어 포함
<a name="including-layers"></a>

애플리케이션에 레이어를 포함하려면 [AWS::Serverless::Function](sam-resource-function.md) 리소스 유형의 `Layers` 속성을 사용합니다.

다음은 계층을 포함하는 Lambda 함수가 있는 예제 AWS SAM 템플릿입니다.

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

## 레이어가 로컬에 캐싱되는 방법
<a name="local-testing-with-layers"></a>

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

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


****  

| OS | Location | 
| --- | --- | 
| Windows 7 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| Windows 8 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| Windows 10 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| macOS | \$1/.aws-sam/layers-pkg | 
| Unix | \$1/.aws-sam/layers-pkg | 

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

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

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

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

귀하의 템플릿에 정의된 LayerVersionARN이 주어지면 AWS SAMCLI는 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
```