Integrando o Lambda com serviços da AWS

Aplicações Serverless com AWS Lambda

Claudio Canales

Senior DevOps Engineer

O ciclo de integração

  • Evento entra.
  • Lógica do handler.
  • Chamada ao SDK.

Evento -> handler -> loop do SDK

Aplicações Serverless com AWS Lambda

Gatilhos vs chamadas ao SDK

Gatilho

  • Decide quando o Lambda roda.

Chamada ao SDK (no handler)

  • Lê e grava em serviços como DynamoDB e S3.

Gatilho vs chamada ao SDK

Aplicações Serverless com AWS Lambda

Um exemplo concreto

  • Um arquivo chega no S3.
  • O Lambda roda.
  • Armazene um registro pequeno no DynamoDB.

Upload no S3 -> Lambda -> DynamoDB

Aplicações Serverless com AWS Lambda

Payload do evento: encontre o que precisa

{
  "Records": [{
    "s3": {
      "bucket": {"name": "…"},
      "object": {"key": "…"}
    }
  }]
}

Anotações do payload de evento do S3

Aplicações Serverless com AWS Lambda

Onde o AWS SDK entra

  • Seu código chama o SDK (boto3).
  • O SDK chama as APIs da AWS.
  • O IAM é o porteiro.

Handler -> SDK -> AWS API

Aplicações Serverless com AWS Lambda

Execution role = credenciais

  • Credenciais temporárias do execution role.
  • Sem access keys no código.
  • Se o role não pode chamar a API, o SDK falha.

Execution role fornece credenciais

Aplicações Serverless com AWS Lambda

Privilégio mínimo: limite ações + recursos

  • Reduz o impacto de falhas.
  • Conceda só as ações e recursos necessários.
  • Evite curingas salvo real necessidade.

Privilégio mínimo: ações e recursos

Aplicações Serverless com AWS Lambda

DynamoDB: escolha a operação certa

  • PutItem escreve.
  • GetItem lê por chave.
  • Query encontra itens relacionados.
  • Prefira operações focadas a varreduras amplas.

Operações do DynamoDB

Aplicações Serverless com AWS Lambda

S3: trabalhe com bucket + key

  • Objetos vivem em bucket + key.
  • GetObject busca o conteúdo.
  • PutObject grava um arquivo derivado.

Bucket e key no S3

Aplicações Serverless com AWS Lambda

Ponha a configuração em variáveis de ambiente

  • Fixar nomes de recursos é frágil.
  • Use variáveis de ambiente.
  • Implante o mesmo código em dev e prod.

Configuração por variáveis de ambiente

Aplicações Serverless com AWS Lambda

Código com SDK: mantenha pequeno e testável

import boto3
ddb = boto3.client("dynamodb")
def handler(event, context):
    ddb.put_item(
        TableName="files",
        Item={"pk": {"S": "1"}},
    )
  • Valide entradas, chame o SDK, retorne.
  • Teste unitário na lógica pura.

Handler pequeno com chamada ao SDK

Aplicações Serverless com AWS Lambda

Trate erros do SDK de forma intencional

  • Erros de permissão são comuns no início.
  • Se a chamada falhar, deixe claro o motivo.
  • Bons logs facilitam o debug.

Caminhos de sucesso e falha

Aplicações Serverless com AWS Lambda

Quando o IAM está errado, o código parece certo

AccessDeniedException
required action denied
  • Corrija o IAM primeiro, depois a lógica do handler.

Acesso negado

Aplicações Serverless com AWS Lambda

Idempotência: repetições e duplicatas seguras

  • Você pode receber o mesmo evento duas vezes.
  • Chaves de idempotência evitam processar em dobro.
  • Escritas condicionais mantêm repetições seguras.

Padrão de chave de idempotência

Aplicações Serverless com AWS Lambda

Juntando tudo (end-to-end)

  • Evento do S3 traz bucket e key.
  • O handler faz o parse.
  • PutItem grava metadados no DynamoDB.
  • O CloudWatch Logs mostra o que ocorreu.

Resumo da integração de ponta a ponta

Aplicações Serverless com AWS Lambda

Pontos principais

  • Separe gatilhos de chamadas ao SDK.
  • Mantenha permissões enxutas com o execution role.
  • Torne a config portátil com variáveis de ambiente.

Principais lições de integração

Aplicações Serverless com AWS Lambda

Vamos praticar!

Aplicações Serverless com AWS Lambda

Preparing Video For Download...