Teoria
O que são funções de etapa?
Do AWS Docs: Step Functions é um serviço de orquestração sem servidor que permite combinar funções do AWS Lambda e outros serviços da AWS para criar aplicativos essenciais aos negócios. Com o console gráfico Step Functions, você vê o fluxo de trabalho do seu aplicativo como uma série de etapas orientadas a eventos. Funções de etapa são baseadas em máquinas de estado e tarefas. Uma máquina de estado é um fluxo de trabalho. Uma tarefa é um estado em um fluxo de trabalho que é uma unidade de trabalho que está sendo executada por outro serviço da AWS. Cada etapa do fluxo de trabalho é um estado.
Com os controles de Funções de Etapa integrados, você verifica o status de cada etapa do fluxo de trabalho para garantir que seu aplicativo esteja sendo executado na ordem correta e conforme o esperado. Dependendo do seu caso de uso, Step Functions pode chamar serviços da AWS como Lambda para realizar tarefas. Você pode criar fluxos de trabalho para processar e publicar modelos de aprendizado de máquina. Você pode usar funções de etapa para gerenciar serviços da AWS, como AWS Glue, para criar fluxos de trabalho de extração, transformação e carga (ETL). Você também pode criar fluxos de trabalho automatizados longos para aplicativos que requerem interação humana.
Ou, em palavras simples, um serviço de gerenciamento de seus processos.
Quais são os possíveis casos de uso para funções de etapa?
- Funções de orquestração Lambda
- Ramificação
- Tratamento de exceções (repetir ou pegar)
- Participação humana no processo
- Paralelismo
Tipos de processo em funções de etapa
- Padrão - necessário para processos em execução por um longo tempo, tem amplo suporte para serviços e opções de interação
- Express - necessário para processos de execução rápida (5 minutos), economizando cerca de 20 vezes por milhão de processos executados. Tem menos integração com os serviços AWS
Tipos de integração com serviços AWS
Solicitar uma resposta (padrão) - chama o serviço e permite que as funções de etapa vão para o próximo estado após receber a resposta HTTP.
Executar um trabalho (.sync) - chama o serviço e aguarda a conclusão do trabalho.
Aguarde um retorno de chamada com um token de tarefa (.waitForTaskToken) - chama o serviço com o token de tarefa e espera que o token de tarefa retorne usando o retorno de chamada.
Comparação de integração com serviços da AWS em tipos padrão e expresso
Integrações de serviço com suporte para padrão
Serviço | Solicitar Resposta | Executar um trabalho (.sync) | Aguarde o retorno de chamada (.waitForTaskToken) |
---|---|---|---|
Lambda | ✓ | ✓ | |
AWS Batch | ✓ | ✓ | |
DynamoDB | ✓ | ||
Amazon ECS / AWS Fargate | ✓ | ✓ | ✓ |
Amazon SNS | ✓ | ✓ | |
Amazon SQS | ✓ | ✓ | |
Cola AWS | ✓ | ✓ | |
SageMaker | ✓ | ✓ | |
Amazon EMR | ✓ | ✓ | |
CodeBuild | ✓ | ✓ | |
Funções de etapa da AWS | ✓ | ✓ | ✓ |
Integrações de serviço com suporte para Express
Serviço | Solicitar Resposta | Executar um trabalho (.sync) | Aguarde o retorno de chamada (.waitForTaskToken) |
---|---|---|---|
Lambda | ✓ | ||
AWS Batch | ✓ | ||
DynamoDB | ✓ | ||
Amazon ECS / AWS Fargate | ✓ | ||
Amazon SNS | ✓ | ||
Amazon SQS | ✓ | ||
Cola AWS | ✓ | ||
SageMaker | ✓ | ||
Amazon EMR | ✓ | ||
CodeBuild | ✓ | ||
Funções de Etapa | ✓ | ✓ |
Chega de teoria, vamos por exemplo.
Exemplo teórico
Para ter pelo menos alguma ideia de como é o serviço, considere o exemplo Hello world.
Condições prévias
- Conta AWS
- Vá para o serviço Step Functions na conta AWS
Então, o seguinte é o que fazemos:
- Vá para "Criar funções de etapa"
- Definir máquina de estado = Autor com trechos de código
- Tipo = padrão
- Definição =
{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World", "End": true } } }
Clique em Iniciar execução. Insert pode ser omitido. Você deve ver um diagrama como este:

Parabéns, você criou as funções de etapa mais simples.
Em vez de uma conclusão
Se este tópico for interessante, na próxima parte criaremos funções de etapa com integração AWS Lambda + SQS + SNS, conforme mostrado no diagrama:

Links para fontes:
https://docs.aws.amazon.com/step-functions/