Empacotar seu conteúdo de camada - AWS Lambda

Empacotar seu conteúdo de camada

Uma camada do Lambda é um arquivo .zip que pode conter código ou dados adicionais. As camadas geralmente contêm dependências de biblioteca, um runtime personalizado ou arquivos de configuração.

Esta seção explica como empacotar adequadamente o conteúdo da camada. Para obter mais informações conceituais sobre camadas e por que você pode considerar usá-las, consulte Gerenciar dependências do Lambda com camadas.

A primeira etapa para criar uma camada é agrupar todo o conteúdo da camada em um arquivo .zip. Devido às funções do Lambda serem executadas no Amazon Linux, seu conteúdo da camada deve ser capaz de compilar e criar em um ambiente Linux.

Para garantir o funcionamento correto do seu conteúdo de camada em um ambiente Linux, recomendamos criar seu conteúdo de camada usando uma ferramenta como o Docker ou o AWS Cloud9. O AWS Cloud9 é um ambiente de desenvolvimento integrado (IDE) baseado em nuvem que fornece acesso integrado a um servidor Linux para execução e teste de código. Para obter mais informações, consulte Using Lambda layers to simplify your development process no AWS Blog de computação.

Caminhos da camada para cada runtime do Lambda

Quando você adiciona uma camada a uma função, o Lambda carrega o conteúdo da camada no diretório /opt desse ambiente de execução. Para cada runtime do Lambda, a variável PATH já inclui caminhos de pasta específica no diretório /opt. Para garantir que a variável PATH colete o conteúdo da camada, o arquivo .zip da camada deve ter suas dependências nos seguintes caminhos de pasta:

Caminhos de camada para cada runtime do Lambda
Runtime Path

Node.js

nodejs/node_modules

nodejs/node14/node_modules (NODE_PATH)

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages (diretórios do site)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.2.0 (GEM_PATH)

ruby/lib (RUBYLIB)

Todos os runtimes

bin (PATH)

lib (LD_LIBRARY_PATH)

Os exemplos a seguir mostram como você pode estruturar as pastas no seu arquivo .zip da camada.

Node.js
exemplo estrutura de arquivos do AWS X-Ray SDK for Node.js
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
exemplo estrutura de arquivos da biblioteca Requests
layer_content.zip └ python └ lib └ python3.11 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
exemplo estrutura de arquivos da gem JSON
json.zip └ ruby/gems/2.7.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
exemplo estrutura de arquivos do arquivo JAR do Jackson
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
exemplo estrutura de arquivos da biblioteca jq
jq.zip └ bin/jq

Para obter instruções específicas da linguagem sobre como empacotar, criar e adicionar uma camada, consulte as páginas a seguir: