

# 계층 콘텐츠 패키징
<a name="packaging-layers"></a>

Lambda 계층은 추가 코드 또는 데이터를 포함하는 .zip 파일 아카이브입니다. 계층에는 일반적으로 라이브러리 종속 항목, [사용자 지정 런타임](runtimes-custom.md) 또는 구성 파일이 포함됩니다.

이 섹션에서는 계층 콘텐츠를 올바르게 패키징하는 방법을 설명합니다. 계층에 대한 개념 정보와 계층 사용을 고려하는 이유에 대한 자세한 내용은 [계층으로 Lambda 종속성 관리](chapter-layers.md) 섹션을 참조하세요.

계층을 생성하는 첫 번째 단계는 모든 계층 콘텐츠를.zip 파일 아카이브로 번들링하는 것입니다. Lambda 함수는 [Amazon Linux](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)에서 실행되기 때문에 계층 콘텐츠는 Linux 환경에서 컴파일하고 빌드할 수 있어야 합니다.

Linux 환경에서 계층 콘텐츠가 제대로 작동하도록 하려면 [Docker](https://docs.docker.com/get-docker)와 같은 도구를 사용하여 계층 콘텐츠를 생성하는 것이 좋습니다.

**Topics**
+ [

## 각 Lambda 런타임에 대한 계층 경로
](#packaging-layers-paths)

## 각 Lambda 런타임에 대한 계층 경로
<a name="packaging-layers-paths"></a>

함수에 계층을 추가하면 Lambda는 계층 콘텐츠를 해당 실행 환경의 `/opt` 디렉터리로 추출합니다. 각 Lambda 런타임에 대해 `PATH` 변수에는 `/opt` 디렉터리 내의 특정 폴더 경로가 이미 포함되어 있습니다. Lambda가 계층 콘텐츠를 가져오도록 하려면 계층 .zip 파일의 종속성이 다음 폴더 경로 중 하나에 있어야 합니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lambda/latest/dg/packaging-layers.html)

다음 예제는 계층 .zip 아카이브에 폴더를 구성하는 방법을 보여줍니다.

------
#### [ Node.js ]

**Example Node.js 용 AWS X-Ray SDK 파일 구조**  

```
xray-sdk.zip
└ nodejs/node_modules/aws-xray-sdk
```

------
#### [ Python ]

**Example**  

```
python/              # Required top-level directory
└── requests/
└── boto3/
└── numpy/
└── (dependencies of the other packages)
```

------
#### [ Ruby ]

**Example JSON gem에 대한 파일 구조**  

```
json.zip
└ ruby/gems/3.4.0/
               | build_info
               | cache
               | doc
               | extensions
               | gems
               | └ json-2.1.0
               └ specifications
                 └ json-2.1.0.gemspec
```

------
#### [ Java ]

**Example Jackson JAR 파일의 파일 구조**  

```
layer_content.zip
└ java
    └ lib
        └ jackson-core-2.17.0.jar
        └ <other potential dependencies>
        └ ...
```

------
#### [ All ]

**Example jq 라이브러리의 파일 구조**  

```
jq.zip
└ bin/jq
```

------

계층 패키징, 생성, 추가에 대한 언어별 지침은 다음 페이지를 참조하세요.
+ **Node.js** – [Node.js Lambda 함수를 위한 계층 작업](nodejs-layers.md)
+ **Python** – [Python Lambda 함수를 위한 계층 작업](python-layers.md)
+ **Ruby** – [Ruby Lambda 함수를 위한 계층 작업](ruby-layers.md)
+ **Java** – [Java Lambda 함수를 위한 계층 작업](java-layers.md)

Go 및 Rust로 작성된 Lambda 함수의 종속성을 관리하는 데는 계층을 **사용하지 않는 것**이 좋습니다. 이는 이러한 언어로 작성된 Lambda 함수가 단일 실행 파일로 컴파일되어 함수를 배포할 때 Lambda에 제공하기 때문입니다. 이 실행 파일에는 컴파일된 함수 코드와 모든 종속성이 포함되어 있습니다. 계층을 사용하면 이 프로세스가 복잡해질 뿐만 아니라 함수가 초기화 단계에서 추가 어셈블리를 메모리에 수동으로 로드해야 하기 때문에 콜드 스타트 시간이 늘어납니다.

Go 및 Rust Lambda 함수와 함께 외부 종속성을 사용하려면 배포 패키지에 외부 종속성을 직접 포함하세요.