Pular para o conteúdo principal

MÓDULO 11 - Serverless: AWS Lambda

Visão Geral​

Este módulo introduz o serverless com AWS Lambda. É um paradigma diferente onde você não precisa gerenciar servidores - você apenas escreve o código que é executado sob demanda.

Avaliação Somativa

Este módulo inclui a Avaliação 3 (25%) cobrindo Lambda e validação.

LocalStack Suporta Lambda!

Boa notícia: o LocalStack emula bem o Lambda. Você poderá praticar de verdade neste módulo!

Objetivos de Aprendizagem​

  • Compreender o paradigma serverless
  • Comparar Lambda vs máquinas virtuais
  • Criar e fazer deploy de funções Lambda
  • Configurar permissões IAM mínimas
  • Analisar logs do CloudWatch
  • Testar e validar funções

Conteúdo da Semana​

1. Serverless vs VM​

┌─────────────────────────────────────────────────────────────┐
│ SERVERLESS vs VM │
├─────────────────────────────────────────────────────────────┤
│ │
│ EC2 (VM) LAMBDA (Serverless) │
│ ──────── ──────────────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Instance │ │ Função │ │
│ │ (24/7) │ │ (sob demanda) │ │
│ │ │ │ │ │
│ │ OS + Runtime │ │ Apenas código │ │
│ │ + Aplicação │ │ │ │
│ │ │ │ Acionada por │ │
│ │ Sempre UP │ │ evento │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Você gerencia: Você gerencia: │
│ • OS • Código │
│ • Patching • Configuração │
│ • Scaling │
│ • Disponibilidade AWS gerencia o resto! │
│ │
│ Faturamento: Faturamento: │
│ • Por hora • Por execução │
│ • Mesmo se ocioso • R$0 se não executar │
│ │
└─────────────────────────────────────────────────────────────┘

2. Anatomia de uma Função Lambda​

# Exemplo Python

def handler(event, context):
"""
Handler = Ponto de entrada da função

event = Dados de entrada (JSON)
context = Infos de runtime (timeout restante, memória...)
"""

# Sua lógica aqui
name = event.get('name', 'World')
message = f"Hello, {name}!"

# Retorno (formato depende do trigger)
return {
'statusCode': 200,
'body': message
}

3. Triggers (Disparadores)​

TriggerDescriçãoExemplo
API GatewayRequisição HTTPREST API
S3Upload de arquivoProcessamento de imagem
DynamoDBMudança de dadosSync, notificação
SQSMensagem em filaProcessamento assíncrono
CloudWatch EventsAgendamentoCron job
SNSNotificaçãoFan-out

4. Limites do Lambda​

LimiteValorObservações
Timeout máx15 minutosPor execução
Memória128 MB - 10 GBCPU proporcional
Pacote50 MB (zip) / 250 MB (descompactado)Código + dependências
Concorrência1000 (padrão)Por conta/região
/tmp storage512 MB - 10 GBTemporário

Lab Prático com LocalStack​

Criar uma Função Lambda​

# 1. Criar o arquivo da função
cat > lambda_function.py << 'EOF'
def handler(event, context):
name = event.get('name', 'World')
return {
'statusCode': 200,
'body': f'Hello, {name}!'
}
EOF

# 2. Compactar
zip function.zip lambda_function.py

# 3. Criar a função no LocalStack
awslocal lambda create-function \
--function-name hello-function \
--runtime python3.9 \
--handler lambda_function.handler \
--zip-file fileb://function.zip \
--role arn:aws:iam::000000000000:role/lambda-role

# 4. Invocar a função
awslocal lambda invoke \
--function-name hello-function \
--payload '{"name": "AWS Student"}' \
output.txt

# 5. Ver o resultado
cat output.txt

Testar com API Gateway (LocalStack)​

# Criar uma API REST
awslocal apigateway create-rest-api \
--name 'Hello API'

# Listar as APIs
awslocal apigateway get-rest-apis

Avaliação 3 (25%)​

Formato​

  • Lab prático LocalStack (60%)
  • Questões teóricas (40%)

Conteúdo Abrangido​

  • Criação de funções Lambda
  • Invocação e testes
  • Leitura de logs
  • Casos de uso serverless
  • Comparação com EC2

Entregável​

Função Lambda documentada + testes:

  • Código fonte comentado
  • Capturas de tela da invocação
  • Análise dos logs
  • Propostas de melhoria
  1. Conceitos Lambda
  2. Criação de Funções
  3. Quiz de Validação - 30 questões para validar seus conhecimentos
  4. Lab: Lambda

Próxima semana: MÓDULO 12 - Troubleshooting Lambda