

# Empaquetado del contenido de la capa
<a name="packaging-layers"></a>

Una capa de Lambda es un archivo .zip que contiene código o datos adicionales. Las capas suelen contener dependencias de biblioteca, un [tiempo de ejecución personalizado](runtimes-custom.md) o archivos de configuración. 

En esta sección se explica cómo empaquetar correctamente el contenido de la capa. Para obtener más información conceptual sobre las capas y los motivos por los que podría considerar la posibilidad de utilizarlas, consulte [Administración de las dependencias de Lambda con capas](chapter-layers.md).

El primer paso para crear una capa consiste en agrupar todo el contenido de la capa en un archivo .zip. Dado que las funciones de Lambda se ejecutan en [Amazon Linux](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html), el contenido de la capa debe poder compilarse y crearse en un entorno de Linux.

Para garantizar que el contenido de su capa funcione correctamente en un entorno Linux, le recomendamos crear el contenido de la capa con una herramienta como [Docker](https://docs.docker.com/get-docker).

**Topics**
+ [

## Rutas de capa para cada tiempo de ejecución de Lambda
](#packaging-layers-paths)

## Rutas de capa para cada tiempo de ejecución de Lambda
<a name="packaging-layers-paths"></a>

Cuando agrega una capa a una función, Lambda carga el contenido de la capa en el directorio `/opt` de ese entorno de ejecución. Para cada tiempo de ejecución de Lambda, la variable `PATH` ya incluye rutas de carpeta específicas en el directorio `/opt`. Para garantizar que Lambda recoja el contenido de la capa, el archivo .zip de la capa, debe tener sus dependencias en las siguientes rutas de carpeta:

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

En los siguientes ejemplos se muestra cómo puede estructurar las carpetas en el archivo .zip de su capa.

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

**Example estructura de archivos para el SDK de AWS X-Ray para Node.js**  

```
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 estructura de archivos para la gema de JSON**  

```
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 estructura de archivos para el archivo JAR de Jackson**  

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

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

**Example estructura de archivos para la biblioteca jq**  

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

------

Para obtener instrucciones específicas del idioma sobre cómo empaquetar, crear y agregar una capa, consulte las siguientes páginas:
+ **Node.js**: [Uso de capas para funciones de Lambda en Node.js](nodejs-layers.md)
+ **Python**: [Uso de capas para funciones de Lambda en Python](python-layers.md)
+ **Ruby**: [Uso de capas para funciones de Lambda en Ruby](ruby-layers.md)
+ **Java**: [Uso de capas para funciones de Lambda en Java](java-layers.md)

**No recomendamos** usar capas para administrar las dependencias de las funciones de Lambda escritas en Go y Rust. Esto se debe a que las funciones de Lambda escritas en esos lenguajes se compilan en un único ejecutable, que se proporciona a Lambda al implementar la función. Este ejecutable contiene el código de la función compilada, junto con todas sus dependencias. El uso de capas no solo complica este proceso, sino que también aumenta los tiempos de arranque en frío, ya que las funciones tienen que cargar manualmente los ensamblajes adicionales en la memoria durante la fase de inicialización.

Para usar dependencias externas con las funciones de Lambda de Go y Rust, inclúyalas directamente en el paquete de implementación.