Configurando funções Lambda

Aplicações Serverless com AWS Lambda

Claudio Canales

Senior DevOps Engineer

Por que a configuração importa

  • O mesmo código pode agir bem diferente com configurações distintas.
  • Configuração afeta desempenho, custo e segurança.
  • Objetivo: comportamento previsível em dev e prod.

Mesmo código, configurações diferentes

Aplicações Serverless com AWS Lambda

Código vs. configuração

Pacote de código

  • Pacote de código
  • Lógica do handler + dependências.
  • Mudanças exigem deploy.

Configuração da função

  • Configuração da função
  • Memória, timeout, variáveis de ambiente.
  • Execution role + layers.
Aplicações Serverless com AWS Lambda

Os controles que você ajusta

  • Runtime + handler: qual código a Lambda executa.
  • Memória + timeout: desempenho, custo, segurança.
  • Variáveis de ambiente: configurar sem hardcode.
  • Execution role: permissões para APIs da AWS.
  • Layers: dependências compartilhadas entre funções.

Ajustes de configuração da Lambda

Aplicações Serverless com AWS Lambda

Noções de runtime e handler

  • Runtime = ambiente de linguagem (ex.: Python).
  • Handler = ponto de entrada chamado pela Lambda.
  • Formato do handler: file.function.
  • Exemplo: lambda_function.lambda_handler.

Quebra da string do handler

Aplicações Serverless com AWS Lambda

String do handler: o que pode dar errado

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Importar e depois chamar o handler

Aplicações Serverless com AWS Lambda

A execution role (IAM)

  • IAM = Identity and Access Management (permissões).
  • A execution role define o que tua função pode fazer.
  • Controla quais APIs da AWS teu código pode chamar.

Execution role como crachá de acesso

Aplicações Serverless com AWS Lambda

O que é uma Lambda layer?

  • Uma layer é um ZIP anexado à função.
  • A Lambda disponibiliza os arquivos da layer em runtime em /opt.
  • Use layers para libs compartilhadas e utilitários comuns.
  • Atualize a layer uma vez; várias funções reutilizam.

Layer montada em /opt

Aplicações Serverless com AWS Lambda

Onde as layers aparecem em runtime

  • O código da função é montado em /var/task.
  • As layers anexadas ficam em /opt.
  • A Lambda também fornece pasta temporária em /tmp.

Pastas de runtime: /var/task, /opt, /tmp

Aplicações Serverless com AWS Lambda

Memória também afeta a CPU

  • Mais memória -> mais CPU.
  • Pode reduzir o tempo em tarefas CPU-bound.
  • O custo depende da duração e da memória.

Memória aumenta CPU

Aplicações Serverless com AWS Lambda

Ajuste a memória com medições

  • Começa com um padrão razoável (ex.: 256 MB).
  • Testa com eventos realistas.
  • Compara duração e custo entre tamanhos de memória.

Varredura de memória: medir duração e custo

Aplicações Serverless com AWS Lambda

Timeouts e execução segura

  • Timeout evita execuções descontroladas.
  • Verifique o tempo restante antes de trabalhos longos.
  • Fail fast e faça retry quando fizer sentido.

Timeout como temporizador de segurança

Aplicações Serverless com AWS Lambda

Passo a passo: checando o tempo restante

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Proteção com contagem regressiva do contexto

Aplicações Serverless com AWS Lambda

Variáveis de ambiente

  • Mantenha config fora do código.
  • Separe configs de dev/test/prod.
  • Use Secrets Manager para valores sensíveis.

Variáveis de ambiente configuram o comportamento

Aplicações Serverless com AWS Lambda

Passo a passo: lendo variáveis de ambiente

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Padrões tornam testes locais mais seguros

  • Importe os para acessar variáveis de ambiente.
  • os.getenv retorna o valor ou o padrão.
Aplicações Serverless com AWS Lambda

Armadilhas comuns de configuração

  • Fixar o stage no código.
  • Timeout baixo demais ou falta de permissões IAM.
  • Segredos em variáveis de ambiente sem proteção.

Armadilhas e boas práticas

Aplicações Serverless com AWS Lambda

Vamos praticar!

Aplicações Serverless com AWS Lambda

Preparing Video For Download...