Todo sistema complexo é o resultado da orquestração de vários subsistemas. Construir e manter esse tipo de sistema segue sendo um desafio comum, especialmente ao lidar com infraestruturas em nuvem.
Felizmente, diversas ferramentas foram desenvolvidas para simplificar a orquestração de fluxos de trabalho, independentemente do nível de complexidade. Entre elas, o AWS Step Functions se destaca pela utilidade e pelos inúmeros benefícios.
Este artigo mostra como usar o Step Functions para orquestrar workflows na AWS Cloud. Começamos explicando o que são step functions, seus benefícios e recursos-chave.
Em seguida, guiamos você pelos passos para começar com o Step Functions, da configuração do ambiente AWS à exploração da interface. Com essa base, avançamos pelo processo passo a passo de criação e deploy de um workflow real.
O que é o AWS Step Functions?
AWS Step Functions é um serviço serverless de orquestração criado para facilitar a construção de workflows visuais, permitindo coordenar funções AWS Lambda e outros recursos da AWS sem atrito.
Suas integrações são amplas, com suporte a conexões com Amazon EC2, Amazon ECS, servidores on-premise, Amazon API Gateway e filas Amazon SQS, entre outras. Isso garante workflows completos, que interagem com um ecossistema amplo de serviços AWS.
A versatilidade do AWS Step Functions o torna adequado a uma grande variedade de aplicações. Seja para gerenciar o cumprimento de pedidos, processar dados, sustentar aplicações web ou orquestrar sequências complexas de tarefas, o Step Functions oferece uma solução robusta para automação e gestão de workflows.
Recursos e benefícios
Antes de entrar nos detalhes técnicos do AWS Step Functions, vamos explorar seus principais recursos e vantagens.
Recursos principais
O Step Functions oferece diversos recursos para agilizar a criação e a gestão de workflows. Entre os principais, destacam-se:
Integração com endpoints HTTPS: permite que workflows invoquem qualquer serviço web que suporte HTTPS, facilitando a integração de várias APIs web aos seus processos.
Coordenação de componentes distribuídos: torna possível coordenar componentes de sistemas distribuídos, o que é crucial em aplicações complexas e com múltiplos serviços.
Gerenciamento de estado nativo: ao monitorar minuciosamente o andamento de cada execução, preserva o estado das aplicações ao longo do fluxo e gerencia os dados transferidos entre as etapas.
Aprovação humana: ter humanos no loop é essencial em qualquer automação. Esse recurso oferece um mecanismo para incluir intervenções manuais em um workflow automatizado quando necessário.
Benefícios
Os recursos do AWS Step Functions trazem múltiplos benefícios para desenvolvedores e organizações, melhorando fluxos operacionais e de desenvolvimento.
Para desenvolvedores
Para organizações
Uma plataforma amigável e de baixo código para desenhar workflows complexos com eficiência, simplificando bastante o desenvolvimento.
A escalabilidade do AWS Step Functions elimina a necessidade de gerenciar infraestrutura.
Tratamento de erros e gestão de estado nativos aumentam a confiabilidade e a robustez das aplicações.
A redução de intervenções manuais e a otimização do uso de recursos podem gerar economia significativa.
Projetar e executar workflows rapidamente encurta ciclos de desenvolvimento, acelerando o lançamento de funcionalidades e produtos.
Automação e tratamento de erros aumentam a confiabilidade e reduzem falhas humanas, tornando processos de negócio mais eficientes.
Exemplos reais e estudos de caso
Com base nos recursos e benefícios acima, não há dúvida de que o Step Functions pode ter um papel crucial em diferentes áreas, permitindo que empresas desenhem, automatizem e escalem seus workflows com eficiência.
Nesta seção, exploramos exemplos de como diferentes setores usam o AWS Step Functions para ganhar competitividade, inovação e eficiência.
Coordenação de microsserviços
Organizações com arquiteturas baseadas em microsserviços costumam usar o AWS Step Functions para gerenciar as interações entre esses serviços.
Uma varejista, por exemplo, pode usar Step Functions para orquestrar etapas de autenticação de usuários, gestão de estoque, processamento de pagamentos e despacho de pedidos, garantindo uma experiência de compra fluida.
Segurança e operações de TI
O AWS Step Functions pode automatizar tarefas repetitivas como verificações de segurança, atualizações de sistema e checagens de conformidade.
Em segurança de TI, por exemplo, o Step Functions pode estruturar workflows de resposta a incidentes, reduzindo erros humanos e tempos de resposta ao gerir sistematicamente cada fase, do alerta inicial à resolução.
Workflows de dados e processos de ETL
Para empresas data-intensive, o AWS Step Functions pode orquestrar processamento de dados e tarefas de ETL. Isso pode incluir fluxos para extrair dados de múltiplas fontes, transformá-los para um formato consistente e carregá-los em plataformas analíticas ou data lakes.
Uma empresa de analytics, por exemplo, pode implementar Step Functions para automatizar seu pipeline de dados, garantindo tratamento eficiente para embasar decisões estratégicas.
Operações de machine learning
O Step Functions também é útil na operação de machine learning, incluindo preparação de dados, treinamento de modelos, avaliação e deploy.
Uma healthtech pode usar Step Functions para gerenciar o pipeline de re-treinamento periódico de algoritmos de diagnóstico, mantendo a performance dos modelos conforme chegam novos dados.
Pipelines de processamento de mídia
Em mídia e entretenimento, o AWS Step Functions pode orquestrar workflows complexos de processamento, incluindo codificação de vídeo, processamento de imagens e análise de conteúdo.
Uma empresa de mídia pode aplicar Step Functions para garantir que, assim que um novo conteúdo for enviado, a conversão de formato, extração de thumbnails e enriquecimento de metadados sejam disparados automaticamente antes da publicação.
Primeiros passos com o AWS Step Functions
As seções seguintes abordam o uso do Step Functions em conjunto com outros serviços AWS. Por isso, é importante entender o básico do Step Functions antes de avançar.
O objetivo desta seção é ajudar você a começar com o AWS Step Functions, dos blocos de construção à navegação pela interface.
Blocos de construção do Step Functions
Todo sistema ou módulo é composto por subcomponentes — e com o Step Functions não é diferente. Ele se baseia em: (1) state machines e (2) tasks.
Vamos entender esses conceitos com um exemplo.
State machines: um workflow que define a sequência de eventos, a lógica condicional e o fluxo geral de execução de tarefas. Em resumo, uma state machine pode ser vista como um workflow.
Tasks: uma ação que executa uma atividade específica. Recebe uma entrada e gera uma saída. Exemplos: consultar um banco de dados, fazer uma chamada de API ou invocar uma função Lambda.
Considere um caso de uso que realiza o processo de matrícula em uma creche usando AWS Step Functions. Antes de mergulhar no uso do Step Functions, vamos entender as etapas gerais:
Coletar informações de matrícula: a primeira etapa é coletar dados de matrícula dos pais. Isso pode ser feito por um formulário web, mas, no nosso caso, usamos JSON. Ao enviar, uma função Lambda é acionada e passa as informações de matrícula para a próxima etapa do fluxo.
Verificar informações de matrícula: na sequência, uma função Lambda verifica os dados de matrícula. Ela confere se todos os campos obrigatórios foram preenchidos e se a idade da criança está dentro da faixa aceita pela creche. Se estiver tudo certo, o fluxo segue; se não, uma mensagem de erro é enviada aos pais.
Checar disponibilidade: depois de verificar as informações, outra função Lambda checa a disponibilidade de vagas na creche. Se houver vagas, o fluxo continua; caso contrário, uma mensagem informa aos pais que a creche está lotada.
Confirmar matrícula: a etapa final é uma função Lambda que confirma a matrícula e envia uma mensagem de confirmação aos pais, incluindo detalhes sobre a data de início e as mensalidades.
Esse workflow tem uma state machine com quatro tarefas principais, todas autoexplicativas.
checkInformation
checkAgeRange
checkSpotsAvailability
confirmRegistration
Workflow de matrícula em creche usando AWS Step Functions
Construindo sua primeira AWS Step Function
As seções acima trouxeram a base teórica; agora vamos para a prática — dos pré-requisitos do Step Functions à implementação e ao deploy de um workflow ponta a ponta.
Pré-requisitos para implementar Step Functions
Antes dos detalhes do caso de uso, revise os pré-requisitos para uma implementação bem-sucedida:
Conta AWS: necessária para acessar os serviços AWS; você pode criar uma no site da AWS.
Conhecimentos básicos de serviços AWS: familiaridade com AWS Lambda e Amazon Simple Notification Service (SNS) é necessária para este caso de uso.
Conhecimento de JSON: entender o básico de JSON ajuda a compreender os formatos de entrada e saída.
AWS IAM: é preciso entender o AWS Identity and Access Management (IAM) para configurar as permissões corretas das funções Lambda usadas.
Habilidades de programação:noções de Python para escrever as funções Lambda.
Navegando na interface do AWS Step Functions
Vamos explorar a interface do Step Functions. Após fazer login na sua conta AWS, siga estes quatro passos:
Digite “Step Functions” na barra de busca no topo.
Selecione o ícone correspondente nos resultados.
Clique em “Get Started” para começar a criar sua primeira step function.
Como queremos criar nossa própria state machine, selecione a aba “Create your own”.
Quatro passos para acessar a interface do Step Functions
Após o quarto passo, você pode começar a desenhar a state machine na aba “Design”, que reúne três funcionalidades: “Actions”, “Flow” e “Patterns”.
Os três componentes da aba "Design"
Actions: operações individuais executadas dentro do workflow, correspondendo a serviços AWS específicos, como invocar uma função Lambda, publicar uma mensagem no SNS, executar uma tarefa no ECS ou iniciar um job no AWS Glue.
Flow: representa os construtos de controle de fluxo que ditam o caminho de execução da state machine. Elementos como "Choice" (ramificações), "Parallel" (execução concorrente), "Map" (iteração sobre uma coleção), "Pass" (no-op ou enriquecimento de dados), "Wait" (atrasos), "Success" (término com sucesso) e "Fail" (término por erro) compõem o controle de fluxo.
Patterns: modelos e melhores práticas pré-definidos para cenários comuns, facilitando a construção de state machines complexas. Podem incluir padrões específicos para processamento de dados (S3, JSON, CSV) ou gerais, como um job poller para orquestrar execuções assíncronas.
Criando o workflow
O workflow inicial deu uma visão geral dos principais componentes da state machine. Agora, vamos revisar a implementação.
Precisaremos de quatro funções Lambda, cada uma correspondente a uma tarefa.
Os sete passos abaixo cobrem o processo para criar uma função Lambda. O processo é o mesmo para as quatro; o que muda é o conteúdo de cada uma.
Todo o código do artigo está disponível na página no GitHub. Embora o código seja simples de entender, recomendamos seguir todo o conteúdo deste artigo para uma melhor experiência.
7 passos para criar uma função Lambda
Depois de concluir os sete passos, a janela abaixo deve aparecer, exibindo informações importantes, como:
A área integrada para implementar a lógica da função.
Detalhes da função Lambda checkInformation
Agora, repita o mesmo processo para as três funções restantes: checkAgeRange, checkSpotsAvailability e confirmRegistration.
Um exemplo de JSON de entrada está abaixo. É importante entendê-lo, pois influencia a forma como as funções são implementadas.
O JSON contém informações sobre a criança a ser matriculada, como nome, sobrenome e data de nascimento.
Também inclui dados dos pais, os dias da semana em que a criança irá à creche e quaisquer observações adicionais.
{"registration_info":{"child":{"firstName":"Mohamed","lastName":"Diallo","dateOfBirth":"2016-07-01"},"parents":{"mother":{"firstName":"Aicha","lastName":"Cisse","email":"[email protected]","phone":"123-456-7890"},"father":{"firstName":"Ibrahim","lastName":"Diallo","email":"[email protected]","phone":"098-765-4321"}},"daysOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"specialInstructions":"Mohamed has a peanut allergy."}}Tecnologia
Cada função Lambda é descrita abaixo:
Função
Descrição
checkInformation
Extrai as informações de matrícula do evento
Confere se todos os campos obrigatórios estão presentes
Retorna sucesso se todas as checagens passarem, ou uma mensagem de erro se algum campo obrigatório estiver faltando
checkAgeRange
Extrai a data de nascimento da criança do evento e calcula sua idade
Confere se a idade está dentro da faixa aceitável da creche
Retorna sucesso se a idade estiver na faixa, ou uma mensagem de erro caso contrário
checkSpotsAvailability
Verifica a disponibilidade de vagas na creche
Retorna sucesso se houver vagas, ou uma mensagem de erro se a creche estiver lotada
confirmRegistration
Define as mensalidades com base na faixa etária da criança e na data de início (duas semanas após a matrícula)
Confirma a matrícula e envia uma mensagem de confirmação aos pais
Retorna sucesso com a mensagem de confirmação
A implementação de cada função é apresentada abaixo:
checkInformation function
import json
defcheckInformation(event, context):
registration_info = event['registration_info']
required_fields =['child','parents','daysOfWeek']for field in required_fields:if field notin registration_info:return{'statusCode':400,'body':f'Missing required field: {field}'}return{'statusCode':200,'body': json.dumps(registration_info)}Tecnologia
checkAgeRange function
import json
import datetime
defcheckAgeRange(event, context):
registration_info = json.loads(event['body'])
dob = registration_info['child']['dateOfBirth']
today = datetime.date.today()
dob_date = datetime.datetime.strptime(dob,'%Y-%m-%d').date()
age = today.year - dob_date.year -((today.month, today.day)<(dob_date.month, dob_date.day))if age <2or age >5:return{'statusCode':400,'body': json.dumps('Child is not within the acceptable age range for this daycare.')}
registration_info['child']['age']= age
return{'statusCode':200,'body': json.dumps(registration_info)}Tecnologia
checkSpotsAvailability function
import json
defcheckSpotsAvailability(event, context):
registration_info = json.loads(event['body'])
spots_available =20# This should be dynamically determined, not hardcoded if spots_available <=0:return{'statusCode':400,'body': json.dumps('No spots available in the daycare.')}return{'statusCode':200,'body': json.dumps(registration_info)}Tecnologia
confirmRegistration function
import json
import datetime
defconfirmRegistration(event, context):
registration_info = json.loads(event['body'])
age = registration_info['child']['age']# This was added in the checkAgeRange function if age >=2and age <3:
fees =800elif age >=3and age <4:
fees =750elif age >=4and age <5:
fees =700else:# age >= 5
fees =650
start_date = datetime.date.today()+ datetime.timedelta(weeks=2)
confirmation_details ={'fees': fees,'start_date': start_date.isoformat()}
response ={**registration_info,**confirmation_details}return{'statusCode':200,'body': json.dumps(response)}Tecnologia
Com tudo pronto, podemos criar nossa state machine da creche usando a interface gráfica do Step Functions.
A state machine final está abaixo. Vamos entender as principais etapas que levaram a esse workflow:
State machine do caso de uso da creche
Antes de começarmos, é importante notar que o campo statusCode da saída de cada função Lambda define o próximo estado da state machine.
Se o valor for 200, a checagem teve sucesso e seguimos para a próxima etapa.
Se o statusCode for 400, a checagem falhou e retornamos a mensagem correspondente, de acordo com a função executada.
Check Information
A state machine começa aqui.
Uma função Lambda verifica se todas as informações obrigatórias estão presentes no formulário de matrícula.
Se estiver tudo completo, passamos para a próxima etapa. Caso contrário, finaliza em estado de falha informando que os dados estão incompletos.
Check Age Range
Essa etapa é alcançada apenas se a verificação anterior for bem-sucedida.
Outra função Lambda checa se a idade da criança está dentro da faixa aceita pela creche.
Se estiver na faixa, seguimos; se não, finaliza com falha informando idade inválida.
Check Spots Availability
Só chegamos aqui se a checagem de idade tiver sido aprovada.
Uma função Lambda verifica se há vagas disponíveis.
Se houver, seguimos; se não, finaliza com falha informando que não há vagas.
Confirm Registration
Etapa final, alcançada apenas se houver vagas.
Uma função Lambda confirma a matrícula e calcula as mensalidades com base na idade da criança.
O processo termina aqui com sucesso, confirmando a matrícula.
Para saber mais sobre funções Lambda, o curso Streaming Data with AWS Kinesis and Lambda ensina a trabalhar com dados em streaming usando tecnologias serverless na AWS.
Criar roles do IAM
O próximo passo é definir as roles do IAM para que as step functions possam invocar nossas funções Lambda. Siga estes passos:
Primeiros nove passos para criar uma role do IAM
10º e 11º passos para criar uma role do IAM
Você pode atribuir essa role do IAM à state machine a partir da aba “Config”, conforme abaixo.
3 passos para conceder a role do IAM
Após salvar, você deverá ver a mensagem abaixo indicando que deu tudo certo.
Mensagem de sucesso da criação da state machine
Quando estiver satisfeito com a state machine, clique em Create no canto superior direito para criá-la.
Ilustração da execução da state machine
Fazendo deploy e testando seu workflow
Com o workflow em produção, é hora de testar a state machine. Vamos avaliar dois cenários:
Um caso de falha com faixa etária válida, em que a criança que tentamos matricular tem mais de 5 anos. Isso corresponde ao JSON inicial.
Um caso de sucesso em que a criança tem 3 anos.
Resultado de um caso de sucesso
Resultado de um caso de falha
Otimizando seu Step Functions
Otimizar qualquer processo começa pela adoção de boas práticas, que elevam desempenho e reduzem custos. As recomendações abaixo ajudam você a tirar o máximo do AWS Step Functions.
Boas práticas de performance: incluem minimizar transições de estado, usar timeouts adequados e otimizar suas funções AWS Lambda.
Boas práticas de custo-benefício: escolher o tipo certo de state machine (Standard ou Express), gerenciar custos do AWS Lambda e compreender a precificação do Step Functions.
Conclusão
Este artigo trouxe um guia completo para entender e usar o AWS Step Functions. Começamos apresentando o serviço, seus recursos e benefícios.
Depois, mostramos como configurar o ambiente AWS e navegar pela interface do AWS Step Functions.
Na sequência, passamos pela construção da sua primeira AWS Step Function, da criação do workflow ao deploy e testes. Também exploramos recursos avançados e casos de uso, e encerramos com dicas de otimização para máxima eficiência e economia.
O primeiro compara os principais serviços necessários para trabalhos com dados e IA — de engenharia e análise de dados a data science e criação de aplicações. Esse cheat sheet ajuda a entender o panorama de serviços de nuvem para data science e IA nas três grandes plataformas.
O segundo oferece uma introdução simples ao AWS Boto em Python, mostrando como usar a nuvem para otimizar seu fluxo de dados. É um ótimo recurso para quem quer automatizar operações AWS com Python.
A AWS tem muitos serviços, e o segredo para dominar o AWS Step Functions é entender os requisitos da sua aplicação e combinar os serviços e recursos certos para atendê-los.
A Zoumana desenvolve ferramentas de IA LLM para ajudar as empresas a realizar due diligence de sustentabilidade e avaliações de risco. Anteriormente, ele trabalhou como cientista de dados e engenheiro de aprendizado de máquina na Axionable e na IBM. Zoumana é o fundador da plataforma de tecnologia educacional de aprendizagem entre pares ETP4Africa. Ele escreveu mais de 20 tutoriais para o DataCamp.
Saiba mais sobre a certificação e o exame AWS Certified Cloud Practitioner com nosso guia completo. Descubra dicas, recursos e estratégias para garantir que você tenha sucesso.
Dá uma olhada no nosso guia completo sobre as certificações da AWS, incluindo qual é a melhor para você e como passar nos exames. Além disso, dá uma olhada nos recursos do DataCamp pra te ajudar!
Este guia prático ajudará você a começar a usar o AWS Athena. Explore sua arquitetura e seus recursos e saiba como consultar dados no Amazon S3 usando SQL.
Este guia do AWS Redshift abrange a configuração e o gerenciamento de um data warehouse na nuvem, o carregamento de dados, a execução de consultas complexas, a otimização do desempenho, a integração com ferramentas de BI e fornece práticas recomendadas e dicas de solução de problemas para que você tenha sucesso.
Este tutorial abrangente ensina você a usar o AWS SageMaker para criar, treinar e implantar modelos de machine learning. Nós guiamos você por todo o fluxo de trabalho, desde a configuração do seu ambiente AWS e a criação de uma instância de notebook do SageMaker até a preparação de dados, modelos de treinamento e sua implementação como endpoints.
Todo sistema complexo é o resultado da orquestração de vários subsistemas. Construir e manter esse tipo de sistema segue sendo um desafio comum, especialmente ao lidar com infraestruturas em nuvem.
Felizmente, diversas ferramentas foram desenvolvidas para simplificar a orquestração de fluxos de trabalho, independentemente do nível de complexidade. Entre elas, o AWS Step Functions se destaca pela utilidade e pelos inúmeros benefícios.
Este artigo mostra como usar o Step Functions para orquestrar workflows na AWS Cloud. Começamos explicando o que são step functions, seus benefícios e recursos-chave.
Em seguida, guiamos você pelos passos para começar com o Step Functions, da configuração do ambiente AWS à exploração da interface. Com essa base, avançamos pelo processo passo a passo de criação e deploy de um workflow real.
O que é o AWS Step Functions?
AWS Step Functions é um serviço serverless de orquestração criado para facilitar a construção de workflows visuais, permitindo coordenar funções AWS Lambda e outros recursos da AWS sem atrito.
Suas integrações são amplas, com suporte a conexões com Amazon EC2, Amazon ECS, servidores on-premise, Amazon API Gateway e filas Amazon SQS, entre outras. Isso garante workflows completos, que interagem com um ecossistema amplo de serviços AWS.
A versatilidade do AWS Step Functions o torna adequado a uma grande variedade de aplicações. Seja para gerenciar o cumprimento de pedidos, processar dados, sustentar aplicações web ou orquestrar sequências complexas de tarefas, o Step Functions oferece uma solução robusta para automação e gestão de workflows.
Recursos e benefícios
Antes de entrar nos detalhes técnicos do AWS Step Functions, vamos explorar seus principais recursos e vantagens.
Recursos principais
O Step Functions oferece diversos recursos para agilizar a criação e a gestão de workflows. Entre os principais, destacam-se:
Benefícios
Os recursos do AWS Step Functions trazem múltiplos benefícios para desenvolvedores e organizações, melhorando fluxos operacionais e de desenvolvimento.
Para desenvolvedores
Para organizações
Exemplos reais e estudos de caso
Com base nos recursos e benefícios acima, não há dúvida de que o Step Functions pode ter um papel crucial em diferentes áreas, permitindo que empresas desenhem, automatizem e escalem seus workflows com eficiência.
Nesta seção, exploramos exemplos de como diferentes setores usam o AWS Step Functions para ganhar competitividade, inovação e eficiência.
Coordenação de microsserviços
Organizações com arquiteturas baseadas em microsserviços costumam usar o AWS Step Functions para gerenciar as interações entre esses serviços.
Uma varejista, por exemplo, pode usar Step Functions para orquestrar etapas de autenticação de usuários, gestão de estoque, processamento de pagamentos e despacho de pedidos, garantindo uma experiência de compra fluida.
Segurança e operações de TI
O AWS Step Functions pode automatizar tarefas repetitivas como verificações de segurança, atualizações de sistema e checagens de conformidade.
Em segurança de TI, por exemplo, o Step Functions pode estruturar workflows de resposta a incidentes, reduzindo erros humanos e tempos de resposta ao gerir sistematicamente cada fase, do alerta inicial à resolução.
Workflows de dados e processos de ETL
Para empresas data-intensive, o AWS Step Functions pode orquestrar processamento de dados e tarefas de ETL. Isso pode incluir fluxos para extrair dados de múltiplas fontes, transformá-los para um formato consistente e carregá-los em plataformas analíticas ou data lakes.
Uma empresa de analytics, por exemplo, pode implementar Step Functions para automatizar seu pipeline de dados, garantindo tratamento eficiente para embasar decisões estratégicas.
Operações de machine learning
O Step Functions também é útil na operação de machine learning, incluindo preparação de dados, treinamento de modelos, avaliação e deploy.
Uma healthtech pode usar Step Functions para gerenciar o pipeline de re-treinamento periódico de algoritmos de diagnóstico, mantendo a performance dos modelos conforme chegam novos dados.
Pipelines de processamento de mídia
Em mídia e entretenimento, o AWS Step Functions pode orquestrar workflows complexos de processamento, incluindo codificação de vídeo, processamento de imagens e análise de conteúdo.
Uma empresa de mídia pode aplicar Step Functions para garantir que, assim que um novo conteúdo for enviado, a conversão de formato, extração de thumbnails e enriquecimento de metadados sejam disparados automaticamente antes da publicação.
Primeiros passos com o AWS Step Functions
As seções seguintes abordam o uso do Step Functions em conjunto com outros serviços AWS. Por isso, é importante entender o básico do Step Functions antes de avançar.
O objetivo desta seção é ajudar você a começar com o AWS Step Functions, dos blocos de construção à navegação pela interface.
Blocos de construção do Step Functions
Todo sistema ou módulo é composto por subcomponentes — e com o Step Functions não é diferente. Ele se baseia em: (1) state machines e (2) tasks.
Vamos entender esses conceitos com um exemplo.
Considere um caso de uso que realiza o processo de matrícula em uma creche usando AWS Step Functions. Antes de mergulhar no uso do Step Functions, vamos entender as etapas gerais:
Esse workflow tem uma state machine com quatro tarefas principais, todas autoexplicativas.
checkInformationcheckAgeRangecheckSpotsAvailabilityconfirmRegistrationWorkflow de matrícula em creche usando AWS Step Functions
Construindo sua primeira AWS Step Function
As seções acima trouxeram a base teórica; agora vamos para a prática — dos pré-requisitos do Step Functions à implementação e ao deploy de um workflow ponta a ponta.
Pré-requisitos para implementar Step Functions
Antes dos detalhes do caso de uso, revise os pré-requisitos para uma implementação bem-sucedida:
Navegando na interface do AWS Step Functions
Vamos explorar a interface do Step Functions. Após fazer login na sua conta AWS, siga estes quatro passos:
Quatro passos para acessar a interface do Step Functions
Após o quarto passo, você pode começar a desenhar a state machine na aba “Design”, que reúne três funcionalidades: “Actions”, “Flow” e “Patterns”.
Os três componentes da aba "Design"
Criando o workflow
O workflow inicial deu uma visão geral dos principais componentes da state machine. Agora, vamos revisar a implementação.
Precisaremos de quatro funções Lambda, cada uma correspondente a uma tarefa.
Os sete passos abaixo cobrem o processo para criar uma função Lambda. O processo é o mesmo para as quatro; o que muda é o conteúdo de cada uma.
Todo o código do artigo está disponível na página no GitHub. Embora o código seja simples de entender, recomendamos seguir todo o conteúdo deste artigo para uma melhor experiência.
7 passos para criar uma função Lambda
Depois de concluir os sete passos, a janela abaixo deve aparecer, exibindo informações importantes, como:
Detalhes da função Lambda
checkInformationAgora, repita o mesmo processo para as três funções restantes:
checkAgeRange,checkSpotsAvailabilityeconfirmRegistration.Um exemplo de JSON de entrada está abaixo. É importante entendê-lo, pois influencia a forma como as funções são implementadas.
Cada função Lambda é descrita abaixo:
Função
Descrição
checkInformationcheckAgeRangecheckSpotsAvailabilityconfirmRegistrationA implementação de cada função é apresentada abaixo:
checkInformationfunctioncheckAgeRangefunctioncheckSpotsAvailabilityfunctionconfirmRegistrationfunctionCom tudo pronto, podemos criar nossa state machine da creche usando a interface gráfica do Step Functions.
A state machine final está abaixo. Vamos entender as principais etapas que levaram a esse workflow:
State machine do caso de uso da creche
Antes de começarmos, é importante notar que o campo
statusCodeda saída de cada função Lambda define o próximo estado da state machine.statusCodefor 400, a checagem falhou e retornamos a mensagem correspondente, de acordo com a função executada.Check Information
Check Age Range
Check Spots Availability
Confirm Registration
Para saber mais sobre funções Lambda, o curso Streaming Data with AWS Kinesis and Lambda ensina a trabalhar com dados em streaming usando tecnologias serverless na AWS.
Criar roles do IAM
O próximo passo é definir as roles do IAM para que as step functions possam invocar nossas funções Lambda. Siga estes passos:
Primeiros nove passos para criar uma role do IAM
10º e 11º passos para criar uma role do IAM
Você pode atribuir essa role do IAM à state machine a partir da aba “Config”, conforme abaixo.
3 passos para conceder a role do IAM
Após salvar, você deverá ver a mensagem abaixo indicando que deu tudo certo.
Mensagem de sucesso da criação da state machine
Quando estiver satisfeito com a state machine, clique em Create no canto superior direito para criá-la.
Ilustração da execução da state machine
Fazendo deploy e testando seu workflow
Com o workflow em produção, é hora de testar a state machine. Vamos avaliar dois cenários:
Resultado de um caso de sucesso
Resultado de um caso de falha
Otimizando seu Step Functions
Otimizar qualquer processo começa pela adoção de boas práticas, que elevam desempenho e reduzem custos. As recomendações abaixo ajudam você a tirar o máximo do AWS Step Functions.
Conclusão
Este artigo trouxe um guia completo para entender e usar o AWS Step Functions. Começamos apresentando o serviço, seus recursos e benefícios.
Depois, mostramos como configurar o ambiente AWS e navegar pela interface do AWS Step Functions.
Na sequência, passamos pela construção da sua primeira AWS Step Function, da criação do workflow ao deploy e testes. Também exploramos recursos avançados e casos de uso, e encerramos com dicas de otimização para máxima eficiência e economia.
Fechando
Nossos artigos AWS, Azure e GCP: comparação de serviços para data science e IA e Introduction to AWS Boto in Python podem ser excelentes próximos passos.
O primeiro compara os principais serviços necessários para trabalhos com dados e IA — de engenharia e análise de dados a data science e criação de aplicações. Esse cheat sheet ajuda a entender o panorama de serviços de nuvem para data science e IA nas três grandes plataformas.
O segundo oferece uma introdução simples ao AWS Boto em Python, mostrando como usar a nuvem para otimizar seu fluxo de dados. É um ótimo recurso para quem quer automatizar operações AWS com Python.
A AWS tem muitos serviços, e o segredo para dominar o AWS Step Functions é entender os requisitos da sua aplicação e combinar os serviços e recursos certos para atendê-los.