Arquitetura Serverless na Prática com AWS Step Functions e AWS Lambda.
Este é o repositório oficial do tutorial "Desacoplar para Conquistar: Arquitetura Serverless na Prática com AWS Step Functions e AWS Lambda" apresentado na Python Norte 2025 por mim, Jorge Hermes.
🎯 Objetivo: Fornecer todo o material necessário para que os participantes possam revisar o conteúdo apresentado e reproduzir o projeto posteriormente, implementando um oráculo usando arquitetura serverless na AWS.
Uma aplicação serverless que:
- 📝 Recebe uma mensagem de texto.
- 🔍 Analisa o sentimento (positivo, negativo ou neutro).
- ⚙️ Orquestra o fluxo entre múltiplas funções AWS Lambda.
- 🔮 Retorna uma "profecia" personalizada baseada no sentimento detectado.
- Antes (Monólito): Uma função faz tudo (monolito.py).
- Depois (Desacoplado): 4 funções especializadas e 1 orquestrador.
- AWS Lambda: Executores de código sob demanda.
- AWS Step Functions: Orquestrador visual de workflows.
- Pay-per-use: Pague apenas pelo que usar.
- Responsabilidade única por função.
- Facilita manutenção e testes.
- Permite reutilização de componentes.
├── 📄 README.md # Documentação
├── 📄 monolito.py # Versão monolítica
├── 📄 LICENSE # Licença MIT
├── 📁 lambda_functions/
│ ├── 📁 analisar_sentimento/
│ │ └── 📄 lambda_function.py # Análise de sentimento
│ ├── 📁 profecia_positiva/
│ │ └── 📄 lambda_function.py # Gera profecias positivas
│ ├── 📁 profecia_negativa/
│ │ └── 📄 lambda_function.py # Gera profecias negativas
│ └── 📁 profecia_neutra/
│ └── 📄 lambda_function.py # Gera profecias neutras
├── 📁 step_functions/
│ └── 📄 oraculo_sentimentos.json # Definição da máquina de estados
└── 📁 exemplos/
└── 📄 inputs_teste.json # Entradas para teste
Você precisará de:
- ✅ Uma Conta AWS ativa (Free Tier é suficiente).
- ✅ Acesso ao Console AWS com permissões para Lambda e Step Functions.
- ✅ Conhecimento básico de Python.
1.1. Configuração Inicial
-
Acesse o Console AWS Lambda.

-
Clique em "Create a function".
1.2. Criar as Funções Lambda
Para cada função, siga este padrão:
- Author From Scratch.
- Runtime:
Python 3.13(ou superior). - Architecture:
x86_64.
Funções a criar:
| Nome da Função | Localização do Código |
|---|---|
analisar_sentimento_pybr |
lambda_functions/analisar_sentimento/lambda_function.py |
profecia_positiva_pybr |
lambda_functions/profecia_positiva/lambda_function.py |
profecia_negativa_pybr |
lambda_functions/profecia_negativa/lambda_function.py |
profecia_neutra_pybr |
lambda_functions/profecia_neutra/lambda_function.py |
Copy ARN e anote o ARN copiado. (formato: arn:aws:lambda:REGION:ACCOUNT_ID:function:NOME_FUNCAO).

1.3 Configuração dos Códigos
Para cada função criada, siga estes passos:
- Copie o código de acordo com a tabela acima e cole-o na seção Code Source do painel da função Lambda.

- Após colar, clique em
Deploy (Ctrl+Shift+U).
2.1. Criar Role para Step Functions
-
Acesse o IAM Console.

-
Em Select Trusted Entity, defina o Service or Use Case como
Step Functions.
-
Defina o Role name como
StepFunctions-OraculoSentimento-rolee crie o Role.
3.1. Configuração da State Machine
-
Acesse o Step Functions Console.
-
Copie o conteúdo de step_functions/oraculo_sentimentos.json e cole-o no editor de ASL.

-
⚠️ CUIDADO: SubstituaREGION:ACCOUNT_IDpelos seus valores reais nos ARNs.
-
Clique em Config para abrir as configurações da State Machine.

-
Defina o State Machine Name como
StepFunctions-Oraculo-stateMachine. -
Selecione
StepFunctions-OraculoSentimento-roleem Execution Role.
4.1. Primeira Execução Para testarmos a arquitetura, clique em Start Execution e cole o input abaixo em Input - Optional. Após isso, clique em Start Execution.
{
"mensagem": "Eu adorei a palestra, foi um sucesso!"
}4.2. Testes Adicionais Use os exemplos em exemplos/inputs_teste.json para testar diferentes sentimentos.
| Erro | Causa | Solução |
|---|---|---|
InvalidParameterValueException |
ARN incorreto no JSON | Verificar ARNs das Lambda Functions |
AccessDeniedException |
Permissões insuficientes | Verificar IAM Role da Step Function |
| Function não encontrada | Região incorreta | Confirmar região das funções |
Este tutorial é TOTALMENTE GRATUITO:
- ✅ Lambda: 1M requests/mês grátis.
- ✅ Step Functions: 4.000 transições/mês grátis.
- NÃO ME RESPONSABILIZO POR QUALQUER CUSTO RELATIVO AO TUTORIAL, LEMBRE-SE SEMPRE DE DELETAR OS RECURSOS APÓS O USO.
Após o tutorial, delete:
- a State Machine.
- as Lambda Functions.
- os Roles do IAM.
- API Gateway: Criar endpoints REST.
- Amazon Comprehend: Análise de sentimento gerenciada pela AWS.
- DynamoDB: Persistência de dados.
- CloudWatch: Monitoramento e alertas.
- Interface Web: Frontend para consumir a API.
Abra uma Issue descrevendo:
- O que você estava tentando fazer.
- O erro que ocorreu.
- Screenshots (se aplicável).
- Faça um Fork do repositório.
- Crie uma branch para sua feature.
- Submeta um Pull Request.
Este tutorial foi apresentado na Python Norte 2025 como parte do compromisso com a educação, com a democratização do conhecimento em tecnologia e em comemoração à minha recente certificação como AWS Certified Cloud Practitioner.
🔗 Conecte-se:
- 🌐 Meu Website: https://jhermesn.dev/.
- 📧 Contato Profissional: https://linkedin.com/in/jhermesn/.
Este projeto está licenciado sob a Licença MIT.
Gostou do tutorial?
- ⭐ Deixe uma estrela no repositório.
- 🔄 Compartilhe com colegas.
- 📝 Contribua com melhorias.
- 🐦 Comente nas redes sociais.








