0Pricing
AWS Solutions Architect · Aula

Camadas do Lambda e pacotes de implantação

Agrupe dependências compartilhadas em camadas reutilizáveis do Lambda e gerencie pacotes de implantação para ambientes de execução grandes.

Camadas do Lambda e pacotes de implantação é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.

O problema das dependências no Lambda

Os pacotes de implantação do Lambda devem ser autocontidos: todas as dependências (bibliotecas, SDKs e binários) devem ser incluídas no ZIP. Isso aumenta rapidamente o tamanho do pacote: uma função de ciência de dados em Python com NumPy, Pandas e SciPy pode exceder 200 MB descompactada. Cada atualização do código da função exige o recarregamento de todo o pacote, incluindo as bibliotecas que não foram alteradas. As camadas do Lambda resolvem esse problema separando as dependências compartilhadas do código da função.

O que é uma camada do Lambda

Uma camada do Lambda é um arquivo ZIP que contém bibliotecas, ambientes de execução personalizados, dados ou arquivos de configuração. As camadas são armazenadas separadamente do código da função e montadas no ambiente de execução da função em /opt. Várias funções podem compartilhar a mesma camada: atualize a camada uma vez e todas as funções que a utilizam se beneficiarão. Cada função do Lambda pode ter até 5 camadas, e o tamanho combinado após a descompactação deve ser inferior a 250 MB.

Criar e publicar uma camada

Para criar uma camada, empacote suas dependências na estrutura de diretórios correta para o ambiente de execução (por exemplo, python/lib/python3.12/site-packages/ para Python), compacte-as em um ZIP e publique-o. Depois de publicada, a camada recebe um ARN de versão. Faça referência a esse ARN ao anexar a camada a uma função. Uma nova versão é criada sempre que você atualiza a camada; as funções continuam usando a versão com a qual foram configuradas até que você as atualize explicitamente.

# Build layer for Python
mkdir -p layer/python
pip install pandas numpy -t layer/python/
cd layer && zip -r ../my-data-layer.zip python/

# Publish the layer
aws lambda publish-layer-version \
  --layer-name 'DataScienceLayer' \
  --zip-file fileb://my-data-layer.zip \
  --compatible-runtimes python3.12 python3.11

Anexar camadas a uma função

Adicione camadas a uma função usando o parâmetro --layers ao criar ou atualizar uma função. O Lambda monta todas as camadas anexadas em /opt antes de a função ser iniciada. Os pacotes Python em /opt/python são automaticamente incluídos no caminho do Python; os módulos Node.js em /opt/nodejs/node_modules são encontrados automaticamente. Seu código de função pode usar import ou require para os pacotes da camada como se eles estivessem instalados localmente.

aws lambda update-function-configuration \
  --function-name 'DataProcessor' \
  --layers \
    'arn:aws:lambda:us-east-1:123456789012:layer:DataScienceLayer:3' \
    'arn:aws:lambda:us-east-1:123456789012:layer:UtilsLayer:1'

Camadas públicas fornecidas pela AWS

A AWS publica camadas oficiais que você pode usar sem criar as suas próprias. Os exemplos incluem a camada AWS Lambda Powertools (registro estruturado, rastreamento e sinalizadores de recursos), camadas de controladores de banco de dados e a camada Extensão do Lambda para parâmetros e segredos da AWS, que armazena localmente em cache valores do SSM/Secrets Manager. Fornecedores terceirizados, como Datadog e New Relic, também publicam camadas públicas para seus agentes de monitoramento. Consulte o Repositório de Aplicações sem servidor e o console do Lambda para verificar as camadas públicas disponíveis.

Extensões do Lambda por meio de camadas

As extensões do Lambda são executadas como processos separados junto com o código da sua função, dentro do mesmo ambiente de execução. Elas se conectam aos eventos do ciclo de vida do Lambda (inicialização, invocação e encerramento) para realizar tarefas como coleta de telemetria, varredura de segurança ou armazenamento em cache de configurações. As extensões são distribuídas como camadas do Lambda. A AWS fornece a extensão CloudWatch Lambda Insights e a extensão AWS AppConfig; os fornecedores disponibilizam agentes de monitoramento personalizados como extensões.

Formatos de pacotes de implantação: ZIP ou contêiner

O Lambda oferece suporte a dois formatos de implantação:

  • ZIP (até 50 MB compactado e 250 MB após a descompactação): carregamento rápido, suporte a camadas e compatibilidade com todos os ambientes de execução.
  • Imagem de contêiner (até 10 GB): armazenada no Amazon ECR, usa as ferramentas padrão do Docker, não oferece suporte a camadas e é ideal para dependências muito grandes (modelos de ML e binários grandes).

As imagens de contêiner devem implementar a Interface de execução do Lambda (usando as imagens-base fornecidas pela AWS) para que o Lambda saiba como invocar sua função de tratamento.

# Dockerfile for a Lambda container image
FROM public.ecr.aws/lambda/python:3.12
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ['app.lambda_handler']

Fluxo de trabalho de uma imagem de contêiner

Criar e implantar uma imagem de contêiner do Lambda segue um fluxo de trabalho padrão de contêineres: crie a imagem com docker build, envie-a para o Amazon ECR e faça referência ao URI da imagem ao criar ou atualizar a função do Lambda. As imagens de contêiner são imutáveis: cada identificador de imagem corresponde a uma versão específica da função. O Lambda armazena imagens de contêiner em cache na própria infraestrutura, portanto as inicializações a frio subsequentes à primeira são mais rápidas.

# Build and push to ECR
docker build -t my-lambda-function .
aws ecr get-login-password | docker login --username AWS \
  --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker tag my-lambda-function \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest

Versionamento e aliases

As versões do Lambda são instantâneos imutáveis do código e da configuração da sua função. Sempre que você publica uma versão, o Lambda congela o pacote de implantação, as variáveis de ambiente e as camadas. Aliases são ponteiros nomeados para versões específicas: prod pode apontar para a versão 5, e staging, para a versão 6. Você também pode usar aliases ponderados para direcionar uma porcentagem do tráfego a uma nova versão em implantações canário (por exemplo, 10% para v6 e 90% para v5).

# Publish a version and create/update an alias
aws lambda publish-version --function-name 'DataProcessor'
# Returns version number, e.g., "Version": "7"

aws lambda update-alias \
  --function-name 'DataProcessor' \
  --name 'prod' \
  --function-version '7' \
  --routing-config 'AdditionalVersionWeights={"6": 0.1}'

Versionamento e descontinuação de camadas

As camadas também têm versões. Quando você publica uma nova versão de camada, as funções existentes continuam usando a versão fixada até que você as atualize. Isso permite atualizar com segurança uma camada compartilhada sem interromper todas as funções simultaneamente: distribua a nova versão de forma incremental. Com o tempo, descontinue as versões antigas da camada para reduzir o custo de armazenamento e manutenção. O Lambda mantém as versões das camadas mesmo que você as exclua do console, até que nenhuma função faça referência a elas.

Escolher entre camadas e imagens de contêiner

Use camadas quando o tamanho total após a descompactação for inferior a 250 MB, você quiser compartilhar dependências entre várias funções e precisar de iterações rápidas (atualize a camada uma vez e todas as funções se beneficiarão). Use imagens de contêiner quando as dependências excederem 250 MB, você precisar usar pacotes personalizados do sistema operacional, já tiver fluxos de trabalho com Docker ou quiser incluir recursos grandes (modelos de ML e bancos de dados de referência). As imagens de contêiner não são compatíveis com as camadas do Lambda, mas oferecem maior flexibilidade.

Verificação rápida

Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) apresentados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: as camadas do Lambda empacotam dependências compartilhadas separadamente do código da função, reduzindo o tamanho do pacote e permitindo a reutilização em várias funções; as imagens de contêiner (de até 10 GB por meio do ECR) são a escolha certa quando as dependências excedem o limite de 250 MB do ZIP ou quando os fluxos de trabalho com Docker já estão em uso; e o versionamento e os aliases permitem lançamentos imutáveis e implantações canário com divisão ponderada do tráfego. A seguir, exploraremos o Lambda@Edge e os padrões orientados a eventos.

Perguntas Frequentes

A aula “Camadas do Lambda e pacotes de implantação” é grátis?

Sim — o texto completo de “Camadas do Lambda e pacotes de implantação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.

O que vou aprender em “Camadas do Lambda e pacotes de implantação”?

Agrupe dependências compartilhadas em camadas reutilizáveis do Lambda e gerencie pacotes de implantação para ambientes de execução grandes. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AWS Solutions Architect?

Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Camadas do Lambda e pacotes de implantação”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AWS Solutions Architect?

Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Funções do Lambda: ambientes de execução, acionadores e manipuladores
  2. Concorrência, limitação e concorrência reservada
  3. Camadas do Lambda e pacotes de implantação
  4. Lambda@Edge e padrões orientados a eventos
← Voltar para AWS Solutions Architect