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
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 o Lambda colete o conteúdo da camada, o arquivo .zip da camada deve ter suas dependências nos seguintes caminhos de pasta:
Runtime | Path |
---|---|
Node.js |
|
|
|
|
|
|
|
Python |
|
|
|
Java |
|
Ruby |
|
|
|
Todos os runtimes |
|
|
Os exemplos a seguir mostram como você pode estruturar as pastas no seu arquivo .zip da camada.
Para obter instruções específicas da linguagem sobre como empacotar, criar e adicionar uma camada, consulte as páginas a seguir:
-
Node.js: Trabalho com camadas para funções do Lambda com Node.js
-
Python: Como trabalhar com camadas para funções do Lambda em Python
-
Ruby: Como trabalhar com camadas em Ruby para funções do Lambda
-
Java: Como trabalhar com camadas para funções do Lambda em Java
-
TypeScript – Como trabalhar com camadas para funções do Lambda em TypeScript
Recomendamos não usar camadas para gerenciar dependências de funções do Lambda escritas em Go e Rust. Isso ocorre porque as funções do Lambda escritas nessas linguagens são compiladas em um único executável que você fornece ao Lambda ao implantar sua função. Esse executável contém seu código de função compilado, junto com todas as suas dependências. O uso de camadas não apenas complica esse processo, mas também aumenta os tempos de inicialização a frio, pois suas funções precisam carregar manualmente assemblies extras na memória durante a fase inicial.
Para usar dependências externas com funções do Lambda em Go e Rust, inclua-as diretamente em seu pacote de implantação.