Gerenciar dependências do Lambda com camadas - AWS Lambda

Gerenciar dependências do Lambda com camadas

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.

Há vários motivos pelos quais você pode considerar o uso de camadas:

  • Para reduzir o tamanho de seus pacotes de implantação. Em vez de incluir todas as dependências da função junto com o código da função no pacote de implantação, coloque-as em uma camada. Isso mantém os pacotes de implantação pequenos e organizados.

  • Para separar a lógica da função central das dependências. Com camadas, você pode atualizar suas dependências de função independentemente do código da função, e vice-versa. Isso promove a separação de preocupações e ajuda você a se concentrar na lógica da sua função.

  • Para compartilhar dependências em várias funções. Depois de criar uma camada, você pode aplicá-la a qualquer número de funções em sua conta. Sem camadas, você precisa incluir as mesmas dependências em cada pacote de implantação individual.

  • Para usar o editor de código do console do Lambda. O editor de código é uma ferramenta útil para testar rapidamente pequenas atualizações de código de funções. No entanto, você não pode usar o editor se o tamanho do pacote de implantação for muito grande. O uso de camadas reduz o tamanho do pacote e pode desbloquear o uso do editor de código.

O diagrama a seguir ilustra as diferenças arquitetônicas de alto nível entre duas funções que compartilham dependências. Uma usa camadas do Lambda e a outra, não.

Diferenças arquitetônicas entre duas funções do Lambda que não usam camadas e duas funções que compartilham uma camada.

Quando você adiciona uma camada a uma função, o Lambda extrai o conteúdo da camada para o diretório /opt no ambiente de execução da sua função. Todos os runtimes do Lambda com suporte nativo incluem caminhos para diretórios específicos dentro do diretório /opt. Isso dá à sua função acesso ao conteúdo da camada. Para obter mais informações sobre esses caminhos específicos e como empacotar adequadamente suas camadas, consulte Empacotar seu conteúdo de camada.

Você pode incluir até cinco camadas por função. Também é possível usar camadas somente com funções do Lambda implantadas como um arquivo .zip. Para funções definidas como uma imagem de contêiner, empacote seu runtime preferido e todas as dependências de código ao criar a imagem de contêiner. Para obter mais informações, consulte  Working with Lambda layers and extensions in container images  no AWS Compute Blog.

Como usar camadas

Para criar uma camada, empacote suas dependências em um arquivo .zip, da mesma forma como você cria um pacote de implantação normal. Mais especificamente, o processo geral de criação e o uso de camadas envolve estas três etapas:

Camadas e versões da camada

Uma versão da camada é um snapshot imutável de uma versão específica de uma camada. Quando você cria uma nova camada, o Lambda cria uma nova versão da camada com um número de versão de 1. Sempre que você publica uma atualização na camada, o Lambda incrementa o número da versão e cria uma nova versão da camada.

Cada versão da camada é identificada por um nome do recurso da Amazon (ARN) único. Ao adicionar uma camada à função, você deve especificar a versão exata da camada que deseja usar.