Skip to content

jhermesn/DesacoplarParaConquistarPyN25

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐍 Desacoplar para Conquistar | Python Norte 2025

Python AWS

Arquitetura Serverless na Prática com AWS Step Functions e AWS Lambda.

📅 Sobre este Repositório

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.

🏗️ O Projeto: O Oráculo

✨ O que é?

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.

🏛️ Arquitetura

Arquitetura

📚 Conceitos Abordados

🎯 Desacoplamento

  • Antes (Monólito): Uma função faz tudo (monolito.py).
  • Depois (Desacoplado): 4 funções especializadas e 1 orquestrador.

☁️ Serverless

  • AWS Lambda: Executores de código sob demanda.
  • AWS Step Functions: Orquestrador visual de workflows.
  • Pay-per-use: Pague apenas pelo que usar.

🧹 Arquitetura Limpa

  • Responsabilidade única por função.
  • Facilita manutenção e testes.
  • Permite reutilização de componentes.

📁 Estrutura do Projeto

├── 📄 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

🚀 Guia de Implementação

🔧 Pré-requisitos

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.

📋 Implementação Passo a Passo

Etapa 1: Criar as Funções Lambda

1.1. Configuração Inicial

  1. Acesse o Console AWS Lambda. Console AWS Lambda

  2. 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.

Criar Função

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

⚠️ Importante: Após criar cada função, clique em Copy ARN e anote o ARN copiado. (formato: arn:aws:lambda:REGION:ACCOUNT_ID:function:NOME_FUNCAO). Copiar ARN

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. Painel da Função Lambda
  • Após colar, clique em Deploy (Ctrl+Shift+U). Sucesso no Deploy

Etapa 2: Configurar Permissões IAM

2.1. Criar Role para Step Functions

  1. Acesse o IAM Console. IAM Console

  2. Clique em Roles e depois, em Create role. IAM Roles

  3. Em Select Trusted Entity, defina o Service or Use Case como Step Functions. IAM Use Case

  4. Em Add Permissions, adicione a permissão AWSLambdaRole. IAM Add Permissions

  5. Defina o Role name como StepFunctions-OraculoSentimento-role e crie o Role. IAM Criar Role

Etapa 3: Criar a Step Function

3.1. Configuração da State Machine

  1. Acesse o Step Functions Console.

  2. Feche o pop-up do Create your state machine. Fechar Create your State Machine

  3. Clique em Code para abrir a aba de IaC. Code

  4. Copie o conteúdo de step_functions/oraculo_sentimentos.json e cole-o no editor de ASL. Editor ASL

  5. ⚠️ CUIDADO: Substitua REGION:ACCOUNT_ID pelos seus valores reais nos ARNs. Editor ASL com ARNs definidas

  6. Clique em Config para abrir as configurações da State Machine. Configurações da State Machine

  7. Defina o State Machine Name como StepFunctions-Oraculo-stateMachine.

  8. Selecione StepFunctions-OraculoSentimento-role em Execution Role. Configurações Completas

  9. Clique em Create. State Machine Criada

Etapa 4: Testar o Oráculo

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!"
}

Teste de Execução Detalhes da Execução

4.2. Testes Adicionais Use os exemplos em exemplos/inputs_teste.json para testar diferentes sentimentos.

🔧 Troubleshooting

Problemas Comuns

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

💰 Custos e Free Tier

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.

🧹 Limpeza de Recursos

Após o tutorial, delete:

  1. a State Machine.
  2. as Lambda Functions.
  3. os Roles do IAM.

🎯 Próximos Passos

  • 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.

📚 Recursos Complementares.

🤝 Contribuições

🐛 Encontrou um Problema?

Abra uma Issue descrevendo:

  • O que você estava tentando fazer.
  • O erro que ocorreu.
  • Screenshots (se aplicável).

💡 Sugestões de Melhoria

  • Faça um Fork do repositório.
  • Crie uma branch para sua feature.
  • Submeta um Pull Request.

👤 Sobre a Palestra

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:

📄 Licença

Este projeto está licenciado sob a Licença MIT.

⭐ Apoie o Projeto

Gostou do tutorial?

  • ⭐ Deixe uma estrela no repositório.
  • 🔄 Compartilhe com colegas.
  • 📝 Contribua com melhorias.
  • 🐦 Comente nas redes sociais.

About

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.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages