3. Lambda quebrada
Seu progresso
Fica salvo só neste navegador.
A dúvida: “O que esse erro quer dizer, e como eu descubro sozinho?”
Você vai quebrar uma função de propósito, ler o erro e usar a IA para aprender a investigar, e não só para receber a resposta pronta.
| Tempo | Cerca de 1 hora |
| Custo | Normalmente zero: o nível gratuito do Lambda inclui 1 milhão de requisições por mês |
| Sem conta AWS? | Faz os passos 1 a 3 no seu computador, só com Python |
| Você leva | Um jeito de ler logs que serve em qualquer sistema |
1. Escreva sua hipótese
Seção intitulada “1. Escreva sua hipótese”Olhe a função, em lambda_function.py:
def lambda_handler(event, context): nome = event["nome"] return {"statusCode": 200, "body": json.dumps({"mensagem": f"Oi, {nome}!"})}Anote: o que acontece se ela receber um evento vazio, {}? E qual código de status você espera ver?
2. Quebre no seu computador
Seção intitulada “2. Quebre no seu computador”Baixe os arquivos lambda_function.py e rodar_local.py e rode:
python3 rodar_local.py '{}'KeyError: 'nome'Agora com um evento certo:
python3 rodar_local.py '{"nome": "Ana"}'3. Use a IA como tutora, não como oráculo
Seção intitulada “3. Use a IA como tutora, não como oráculo”Você é meu tutor. Estou aprendendo a ler erros e NÃO quero a correção pronta.
Este é meu código: [cole a função]Este é o erro: [cole o erro]
1. Me diga em qual linha olhar e o que essa linha espera receber.2. Me faça uma pergunta que me ajude a achar a causa sozinho.3. Só depois que eu responder, compare a minha resposta com a sua.Quando entender a causa, corrija você mesmo. Por exemplo: o que a função deveria fazer quando nome não vem?
4. Quebre na AWS
Seção intitulada “4. Quebre na AWS”Pule se ainda não tem conta. Na CloudShell, região us-east-1:
B=https://raw.githubusercontent.com/fernando-moretes/aws-builder-workshops/main/missoes/03-lambda-quebradacurl -sO $B/lambda_function.pycurl -sO $B/politica-confianca.jsonzip f.zip lambda_function.py
CONTA=$(aws sts get-caller-identity --query Account --output text)aws iam create-role --role-name missao3-role \ --assume-role-policy-document file://politica-confianca.jsonaws iam attach-role-policy --role-name missao3-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRolesleep 15
aws lambda create-function --function-name missao3 --runtime python3.13 \ --handler lambda_function.lambda_handler \ --role arn:aws:iam::$CONTA:role/missao3-role --zip-file fileb://f.zipaws lambda wait function-active-v2 --function-name missao3Chame a função com um evento vazio:
aws lambda invoke --function-name missao3 --cli-binary-format raw-in-base64-out \ --payload '{}' resposta.jsoncat resposta.jsonEsta foi a resposta real no nosso teste:
{ "StatusCode": 200, "FunctionError": "Unhandled" }{"errorMessage": "'nome'", "errorType": "KeyError"}Olhe o detalhe: o status é 200, e mesmo assim a função falhou. O 200 diz que a chamada ao serviço Lambda funcionou. O erro da sua função está em FunctionError. Quem olha só o status acha que deu tudo certo.
5. Leia o log, e pegue a IA errando
Seção intitulada “5. Leia o log, e pegue a IA errando”Espere uns 15 segundos e leia os logs:
aws logs tail /aws/lambda/missao3 --since 10m --format short[ERROR] KeyError: 'nome' File "/var/task/lambda_function.py", line 5, in lambda_handler nome = event["nome"]REPORT ... Duration: 52.74 ms Memory Size: 128 MB Max Memory Used: 32 MBPergunte à sua IA, sem mostrar esta página:
Chamei uma função Lambda pela AWS CLI e o StatusCode voltou 200.Isso quer dizer que a minha função rodou sem erro? Cite a documentação.Ela percebeu a diferença? O link que ela citou confirma? Abra e anote. A documentação da API Invoke diz, com todas as letras: “The status code in the API response doesn’t reflect function errors”.
Limpeza
Seção intitulada “Limpeza”Rode tudo e confira que nada sobrou:
aws lambda delete-function --function-name missao3aws iam detach-role-policy --role-name missao3-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRoleaws iam delete-role --role-name missao3-roleaws logs delete-log-group --log-group-name /aws/lambda/missao3aws lambda list-functions --query "Functions[?FunctionName=='missao3'].FunctionName"A última linha precisa mostrar [].
Agora vire isso em conteúdo
Seção intitulada “Agora vire isso em conteúdo”| Campo | Exemplo do que anotar |
|---|---|
| Tema | Minha Lambda respondeu 200 e estava quebrada |
| Público | Quem está aprendendo a ler logs |
| Problema | Confiar só no código de status |
| Objetivo | Encontrar um erro pelo log, sem pedir a resposta pronta |
| Evidências | Sua hipótese, a saída real, o log e o que a IA acertou ou errou |
Continue em Do teste ao artigo.
O que foi testado
Seção intitulada “O que foi testado”Em 06/11/2026, a função, as saídas acima e a limpeza rodaram em uma conta real com a AWS CLI, em us-east-1 e Python 3.13. Os nomes usados no teste foram diferentes, com prefixo próprio, e nada sobrou na conta. Os comandos não foram executados dentro da CloudShell.
Fontes, consultadas em 06/11/2026: API Invoke, preço do Lambda e CloudShell.
Projeto independente de comunidade de Fernando Azevedo, AWS Community Builder. Não é material oficial da AWS nem tem o endosso dela. AWS e nomes relacionados são marcas da Amazon.com, Inc. ou de suas afiliadas. Licença MIT.