Perguntas frequentes sobre o AWS Step Functions

Visão geral

O AWS Step Functions é um serviço totalmente gerenciado que facilita a coordenação de componentes de aplicações e microsserviços distribuídos usando fluxos de trabalho visuais. A criação de aplicativos em componentes individuais, cada um deles executando uma função diferente, ajuda a escalar mais facilmente e alterar mais rapidamente os aplicativos.

O Step Functions é uma forma confiável de coordenar componentes e acessar as funções da aplicação. O Step Functions fornece um console gráfico para organizar e visualizar os componentes do seu aplicativo como uma série de etapas. Isso facilita a criação e a execução de aplicações com várias etapas.

O Step Functions aciona e monitora automaticamente todas as etapas e tenta executar novamente as etapas que apresentaram falha para que o aplicativo seja executado na ordem e da forma esperada. O Step Functions registra em log o estado de cada etapa de modo que, quando ocorre algum erro, você pode diagnosticar e depurar os problemas mais rapidamente. Você pode alterar e adicionar etapas sem escrever código, facilitando mais a evolução do aplicativo e agilizando a inovação.

Dividir uma aplicação em componentes de serviço (ou etapas) garante que a falha de um componente não derrube todo o sistema. Cada componente é escalado de forma independente e esse componente pode ser atualizado sem exigir que todo o sistema seja reimplantado após cada alteração.

A coordenação de componentes de serviço envolve o gerenciamento das dependências e da programação da execução, assim como a simultaneidade, de acordo com o fluxo lógico da aplicação. Nesses aplicativos, você pode usar a orquestração de serviços com essa finalidade e também para processar falhas.

O Step Functions é útil para qualquer problema computacional ou processo de negócios que possa ser subdividido em uma série de etapas. Também é útil para criar fluxos de trabalho de ponta a ponta para gerenciar tarefas com interdependências. Entre os casos de uso comuns, estão:

  • Processamento de dados: consolide dados de vários bancos de dados em relatórios unificados, refine e reduza grandes conjuntos de dados em formatos úteis, itere e processe milhões de arquivos em um bucket do Amazon Simple Storage Service (S3) com fluxos de trabalho de alta simultaneidade ou coordene análises de várias etapas e fluxos de trabalho de machine learning
  • Criação de aplicações de IA generativa sem servidor: aproveite o Step Functions para orquestrar interações com os modelos básicos do Amazon Bedrock, acelerar o encadeamento, ajustar e enriquecer com recursos de mais de 220 serviços da AWS
  • DevOps e automação de TI: crie ferramentas para integração contínua e implantação contínua ou crie aplicações orientadas por eventos que respondam automaticamente a mudanças na infraestrutura
  • Comércio eletrônico: automatize processos de negócios de missão crítica, como atendimento de pedidos e controle de inventário.
  • Aplicações web: implemente processos robustos de registro de usuários e autenticação de login.

Para obter mais detalhes, explore os casos de uso e os depoimentos de clientes do AWS Step Functions.

Ao usar o Step Functions, você define máquinas de estado que descrevem seu fluxo de trabalho como uma série de etapas, seus relacionamentos e suas entradas e saídas. Máquinas de estado contêm um número de estados, cada um dos quais representa uma etapa em um diagrama de fluxo de trabalho.

Os estados podem realizar trabalho, fazer escolhas, passar parâmetros, iniciar a execução paralela, gerenciar tempos limite ou encerrar seu fluxo de trabalho com êxito ou falha.

O console visual representa graficamente cada estado na ordem de execução de forma automática, o que facilita o projeto de aplicações com várias etapas. O console destaca o status de cada etapa em tempo real e oferece um histórico detalhado de cada execução.

Para obter mais informações, consulte Como funciona o Step Functions no guia do desenvolvedor do Step Functions.

Você pode orquestrar qualquer produto da AWS usando as integrações de serviços ou qualquer componente do aplicativo autogerenciado usando as tarefas de atividades.

As integrações de serviços ajudam a construir chamadas para os serviços da AWS e incluem a resposta no seu fluxo de trabalho. As integrações de serviços do SDK da AWS ajudam a invocar uma das mais de 9 mil ações de API da AWS de mais de 200 serviços diretamente do seu fluxo de trabalho.

As integrações de serviços otimizadas simplificam ainda mais o uso de serviços comuns, como o AWS Lambda, o Amazon Elastic Container Service (ECS), o AWS Glue ou o Amazon EMR, com recursos que incluem geração de políticas do IAM e o padrão RunAJob, que aguardará automaticamente a conclusão de trabalhos assíncronos.

As tarefas de atividades incorporam a integração com trabalhos de atividade que você executa no local de sua preferência, inclusive no Amazon Elastic Compute Cloud (EC2), no Amazon ECS, em um dispositivo móvel ou em um servidor on-premises. O operador da atividade pesquisa o Step Functions para o trabalho, usa qualquer contribuição do Step Functions, executa o trabalho usando seu código e retorna os resultados. Como os operadores da atividade solicitam trabalho, é fácil usar os operadores implantados atrás de um firewall.

Uma máquina de estado do Step Functions pode conter combinações de integrações de serviços e tarefas de atividades. Os aplicativos do Step Functions também podem combinar operadores de atividades executados em um datacenter com tarefas de serviço executadas na nuvem. Os funcionários no datacenter continuam executando normalmente, juntamente com todas as tarefas de serviço baseadas na nuvem.

Há várias maneiras de começar a usar o Step Functions:

As máquinas de estado do AWS Step Functions são definidas em JSON usando o método declarativo Amazon States Language.

Para criar um operador de atividade, você pode usar qualquer linguagem de programação, desde que possa se comunicar com o Step Functions usando APIs de serviço da Web.

Para maior praticidade, você pode usar um SDK da AWS na linguagem de sua preferência. O Lambda é compatível com código escrito em Node.js (JavaScript), Python, Golang (Go) e C # (usando o runtime do .NET Core e outras linguagens). Para obter mais informações sobre o modelo de programação do Lambda, consulte o Guia do desenvolvedor do Lambda.

Você pode compor os dois tipos de fluxos de trabalho:

  • Executando os Express Workflows como um fluxo de trabalho secundário dos Standard Workflows: o Express Workflow é invocado em um estado de Tarefa no fluxo de trabalho de orquestração principal e tem êxito ou falha como um todo na perspectiva do fluxo de trabalho principal. Ele está sujeito à política de nova tentativa principal para essa Tarefa.
     
  • Chamando os Express Workflows em um Express Workflow, contanto que todos os fluxos de trabalho não excedam o limite de duração do principal: você poderá fatorar os fluxos de trabalho dessa forma, se o seu caso de uso for uma combinação de etapas de longa duração que ocorrem uma única vez, e etapas de curta duração com alta ocorrência.

O Step Functions inclui um estado Map para paralelismo dinâmico. O estado Map tem dois modos operacionais, “Inline” e “Distributed”, e ambos executam o mesmo conjunto de etapas para uma coleção de itens. Um Map no modo “Inline” pode oferecer suporte à simultaneidade de 40 ramificações paralelas e limites de histórico de execução de 25.000 eventos ou aproximadamente 6.500 transições de estado em um fluxo de trabalho. Com o modo “Distributed”, você pode executar até 10.000 ramificações paralelas simultaneamente. O Distributed Map foi otimizado para o Amazon S3, ajudando você a iterar mais facilmente sobre objetos em um bucket do S3. Consulte as perguntas frequentes na seção de integração. As iterações de um Distributed Map são divididas em execuções paralelas para ajudar você a superar os limites de carga útil e histórico de execução. Você também pode escolher se cada iteração é executada por um fluxo de trabalho Standard, que é idempotente, ou fluxo de trabalho Express, que é de maior velocidade e menor custo, mas não idempotente. Saiba mais sobre o estado Map.

Agora você pode usar o novo campo Assign (atribuir) para definir variáveis de fluxo de trabalho e referenciar essas variáveis posteriormente usando a sintaxe $varName. Se o StateK precisar referenciar dados gerados por um StateA anterior, você precisará passar explicitamente os dados por todos os estados intervenientes sem variáveis, enquanto que com variáveis, você atribui o valor a uma variável no StateA e, em seguida, faz referência à variável no StateK.

O JSONata é uma linguagem de consulta/transformação de dados de código aberto para dados JSON, como o JSONPath, exceto que pode realizar operações mais poderosas, como geração de data e hora e cálculos matemáticos. Ele permite que consultas sofisticadas sejam expressas em uma notação compacta e poderosa. O JSONata fornece operadores e funções incorporados para manipular e combinar dados, e os resultados das consultas podem ser formatados em qualquer estrutura de saída JSON usando a sintaxe familiar de objetos e matrizes JSON.

Sim. As variáveis podem ser adicionadas a qualquer fluxo de trabalho existente atribuindo variáveis. As transformações de dados aprimoradas com JSONata estão disponíveis em qualquer fluxo de trabalho existente, declarando “QueryLanguage”:“JSONata” como a linguagem de consulta em estados individuais ou para todo o fluxo de trabalho. Os clientes atuais com workloads de produção podem aproveitar as variáveis e JSONata nos fluxos de trabalho existentes e podem optar por usar as diretivas de dados aprimoradas em novos fluxos de trabalho. Os recursos introduzidos pelas variáveis e JSONata, aplicados coletivamente, fornecem um caminho de aprendizado mais fácil para novos clientes à medida que eles se integram ao Step Functions na versão atual do ASL. Com essa abordagem, todos os recursos futuros do Step Functions estarão disponíveis para todos os clientes sem exigir que eles atualizem seus fluxos de trabalho para usar uma nova versão do ASL.

Em vez de usar o JSONPath e as Funções Intrínsecas para realizar a seleção e a transformação de dados como você faz hoje, você usará o JSONata. Para escrever uma expressão JSONata usando “QueryLanguage”:“JSONata”, coloque-a com {%%} desta forma: “{% expressão JSONata %}”. Por exemplo, você pode construir uma data para hoje desta forma: “DateStamp": "{% $now() %}”.

O JSONPath usa combinações variadas de cinco campos primários para consultar e transformar dados em cada estado (InputPath, Parameters, ResultSelector, ResultPath e OutputPath), que são difíceis de entender para os desenvolvedores. Agora, com o JSONata, você pode optar por usar “QueryLanguage”:“JSONata” substituindo os cinco campos por dois novos campos (Arguments e Output). O novo campo Arguments fornece recursos adicionais para construir o valor a ser enviado para uma API ou subfluxo de trabalho, e o novo campo Output fornece recursos adicionais para construir a saída de estado. Ambos os campos aceitam JSONata para manipulação de dados. “QueryLanguage”:“JSONata” fornece um conjunto simplificado de regras que não usa mais a convenção ”.$” para nomes de campo e, em vez disso, inclui expressões JSONata em {%%}. Agora você pode escrever as condições do estado à sua escolha em uma única linha usando o novo campo Condition. O campo Condition aceita um valor booleano ou um valor de string que deve ser uma expressão JSONPath ou JSONata, dependendo da configuração de QueryLanguage.

Comparações

Você deve usar o AWS Step Functions quando precisar coordenar os componentes de serviço no desenvolvimento de aplicativos altamente escaláveis e auditáveis. O Amazon Simple Queue Service (Amazon SQS) é usado quando for necessária uma fila hospedada confiável e altamente escalável para enviar, armazenar e receber mensagens entre serviços.

  • O Step Functions monitora todas as tarefas e eventos em um aplicativo. O SQS exige que você implemente seu próprio monitoramento do aplicativo, principalmente se o aplicativo usar filas múltiplas.
     
  • O console do Step Functions e as APIs de visibilidade fornecem uma visão centrada no aplicativo que permite pesquisar execuções, analisar os detalhes de uma execução e administrar execuções. O SQS requer a implementação dessas funcionalidades adicionais.
     
  • O Step Functions oferece diversos recursos que facilitam o desenvolvimento de aplicativos, como a passagem de dados entre tarefas e a flexibilidade da distribuição de tarefas, enquanto o SQS exige a implementação de funcionalidades no aplicativo.
     
  • O Step Functions tem recursos instantâneos para o desenvolvimento de fluxos de trabalho que coordenam o aplicativo distribuído. O SQS permite a criação de fluxos de trabalho básicos, porém tem funcionalidades limitadas.

Você deve considerar o uso do Step Functions para todos os aplicativos novos, pois ele oferece uma abordagem mais produtiva e ágil para a coordenação de componentes do aplicativo usando fluxos de trabalho visuais. Se você precisar de sinais externos para intervir em seus processos, ou se você quer lançar processos secundários que retornam um resultado para um processo principal, então considere o Amazon Simple Workflow Service (Amazon SWF).

Com o SWF, em vez de gravar máquinas de estado em JSON declarativo, você pode escrever um programa de decisão para separar as etapas de atividade das etapas de decisão. Isso fornece controle total sobre sua lógica de orquestração, mas aumenta a complexidade do desenvolvimento de aplicativos. É possível escrever programas administradores na sua linguagem de programação preferida. Também é possível usar o framework Flow para utilizar construções de programação que estruturam interações assíncronas para você.

O Amazon EventBridge é um serviço sem servidor que usa eventos para conectar componentes de aplicações, facilitando para os desenvolvedores a criação de aplicações escaláveis orientadas por eventos. O API Destinations é um recurso do EventBridge que permite criar regras para encaminhar eventos para endpoints de terceiros e dissociar produtores de eventos e consumidores.

A integração de endpoints HTTPS do AWS Step Functions permitirá invocar serviços baseados em HTTPS e receber uma resposta que pode ser usada para controlar o fluxo de sua execução com base em sua lógica de negócios. O Amazon EventBridge se concentra no roteamento de eventos, enquanto o Step Functions se concentra na orquestração de fluxos de trabalho e gerenciamento do estado. A integração da API Destinations do EventBridge e dos endpoints HTTPS da Step Functions pode oferecer suporte a uma conexão para autenticação, assim você pode reutilizar as credenciais de autenticação em todos os serviços. Os dois serviços podem ser usados juntos para criar aplicações distribuídas altamente escaláveis e robustas.

Integração

Os fluxos de trabalho que você cria com o Step Functions podem ser conectados e coordenados com mais de 200 serviços da AWS usando integrações de serviços. Por exemplo, é possível:

  • Invocar uma função do AWS Lambda
  • Executar uma tarefa do ECS ou do AWS Fargate
  • Obter um item existente de uma tabela do Amazon DynamoDB ou colocar um novo item em uma tabela do DynamoDB
  • Enviar um trabalho do AWS Batch e esperar que ele seja concluído
  • Invocar o modelo básico do Amazon Bedrock
  • Publicar uma mensagem em um tópico do SNS
  • Enviar uma mensagem para uma fila do Amazon SQS
  • Iniciar uma execução de trabalho da AWS Glue
  • Criar uma tarefa do Amazon SageMaker para treinar um modelo de machine learning ou transformar um conjunto de dados em lote

Para saber mais sobre como usar o Step Functions para se conectar com outros serviços da AWS, consulte o Guia do desenvolvedor do Step Functions. Você também pode criar tarefas nas máquinas de estado que executam aplicações. Consulte as Perguntas frequentes na seção Visão geral, Como o Step Functions se conecta aos meus recursos?

Para os casos de uso mais comuns do Step Functions, acesse a página de casos de uso, onde há casos detalhados e as visualizações de suas arquiteturas.

Usando a integração de endpoints HTTPS do AWS Step Functions, você pode se integrar diretamente com serviços baseados em HTTP, incluindo aplicações SaaS. Usando uma interface visual, você pode criar e orquestrar aplicações distribuídas compostas por serviços da AWS e aplicativos SaaS.

Você pode usar a API TestState para testar uma única etapa do seu fluxo de trabalho, possibilitando ciclos de feedback mais rápidos para acelerar o desenvolvimento. O TestState permite que você chame serviços e endpoints diretamente, modifique a entrada para simular diferentes cenários e analise a resposta. Você pode acessar o TestState por meio do Workflow Studio, o que facilita testar à medida que você cria sem a necessidade de implantar seu fluxo de trabalho. O TestState aceita uma única definição e entrada de estado e, em seguida, retorna de forma síncrona a saída do estado junto com as transformações de dados intermediárias. Depois de executar seu fluxo de trabalho, você pode analisar e depurar execuções por meio do Amazon CloudWatch Logs, do AWS X-Ray e diretamente no console de funções do Step por meio de uma experiência visual de operador que ajuda você a identificar rapidamente as áreas problemáticas. 

Você pode criar fluxos de trabalho usando um estado Map no modo Distributed para executar o processamento em grande escala de dados, como logs, arquivos de mídia, transações de vendas ou dados de sensor de IoT. O Step Functions percorrerá os itens e iniciará execuções de fluxo de trabalho paralelo instantaneamente, permitindo que você crie processamento de dados sob demanda em escala. O estado Distributed Map foi otimizado para funcionar com o S3. Você pode especificar um bucket do S3 com critérios de filtro, um arquivo de manifesto do S3, coleção JSON ou arquivo CSV armazenado no S3 como entradas para seu fluxo de trabalho. Você também pode especificar um bucket do S3 para as saídas de execução de um Distributed Map.

Você pode associar as APIs do Step Functions ao Amazon API Gateway para que essas APIs invoquem as máquinas de estado quando uma solicitação HTTPS for enviada para um método de API definido por você.

Você pode usar uma API do API Gateway para iniciar máquinas de estado do Step Functions que coordenam os componentes de uma aplicação de backend distribuída e integrar tarefas de atividade humana nas etapas da sua aplicação, como solicitações de aprovação e respostas.

Você também pode fazer chamadas assíncronas sem servidor para as APIs de serviços que o aplicativo usa. Para mais informações, experimente nosso tutorial, Criando uma API de funções de etapa usando o gateway de API.

Coreografia e orquestração são dois modelos diferentes para como os serviços distribuídos podem se comunicar entre si. Na orquestração, a comunicação é mais rigorosamente controlada e o Step Functions, um serviço de orquestração, coordena a interação e a ordem nas quais os serviços são invocados.

A coreografia obtém comunicação sem um controle rigoroso. Com o Amazon EventBridge, os eventos fluem entre os serviços sem uma coordenação centralizada. Muitos aplicativos usam a coreografia e a orquestração para diferentes casos de uso. 

Exemplos de como você pode usar o Step Functions e o EventBridge juntos incluem o envio de um evento ou a criação de uma programação com o EventBridge Scheduler para acionar um fluxo de trabalho do AWS Step Functions, seguido pela emissão de eventos em diferentes etapas do fluxo de trabalho.

O AWS Lambda é um serviço de computação com tecnologia sem servidor e orientado a eventos que permite executar código para praticamente qualquer tipo de aplicativo ou serviço de back-end sem que seja necessário provisionar ou gerenciar servidores. O Step Functions é um serviço de orquestração sem servidor que permite coordenar facilmente várias funções do Lambda em fluxos de trabalho fáceis de depurar e de alterar. O Step Functions manterá as funções do Lambda livres de lógica adicional acionando e monitorando cada etapa do aplicativo para você.

Sim, o Step Functions é um serviço de orquestração sem servidor. O Step Functions escala automaticamente as operações e a computação subjacente para executar as etapas do aplicativo para você em resposta às workloads dinâmicas. O Step Functions tem a tolerância a falhas integrada e mantém a capacidade de serviço em várias zonas de disponibilidade em cada região para proteger os aplicativos contra falhas no datacenter ou em uma máquina individual. Isso ajuda a garantir alta disponibilidade para o serviço em si e para o fluxo da aplicação que ele opera.

O Step Functions oferece modelo de pagamento conforme o uso para aumentar a agilidade e otimizar os custos. Saiba mais sobre a definição de preços do Step Functions.

O AWS Step Functions envia métricas para o Amazon CloudWatch e o AWS CloudTrail para o monitoramento de aplicações. O CloudWatch coleta e monitora métricas, define alarmes e reage automaticamente a alterações no AWS Step Functions.

O CloudTrail captura todas as chamadas de API para Funções de Etapa como eventos, incluindo chamadas do console do Step Functions e de chamadas de código para as APIs do Step Functions. O Step Functions também é compatível com regras gerenciadas do CloudWatch Events para cada serviço integrado em seu fluxo de trabalho e criará e gerenciará regras do CloudWatch Events na sua conta da AWS, conforme necessário.

Para obter mais informações, veja como monitorar e registrar logs no guia do desenvolvedor do Step Functions.

Por padrão, Express Workflows relatam todos os resultados nos CloudWatch Logs, incluindo entradas, saídas e etapas concluídas do fluxo de trabalho. Você pode selecionar diferentes níveis de registro em log para registrar somente os erros, e não registrar as entradas e as saídas. Fluxos de trabalho que tiverem um excesso de tentativas repetidas ou uma exceção não gerenciada devem ser executados novamente desde o início.

O Step Functions tem uma integração otimizada com o Amazon Bedrock. Você pode invocar os modelos básicos do Bedrock diretamente do fluxo de trabalho do Step Functions usando linguagem natural. Isso permite que você:   

  • Enriqueça os dados processados pelo Step Functions com recursos de IA generativa para reduzir a complexidade do tratamento de seus dados, como resumo de texto, geração de imagens ou personalização.
  • Recupere informações de bancos de dados, como os preços mais recentes de produtos e dados de personalização do usuário, e use as funções intrínsecas do Step Functions para injetá-las no prompt, certificando-se de que o LLM use os dados mais atuais para melhorar a precisão da resposta.
  • Gere incorporações fazendo com que o Step Functions examine documentos, extraia dados, agrupe os documentos e transforme os dados de texto digital em incorporação como um processo de várias etapas. Isso pode ser agendado como um processo recorrente.
  • Use fluxos de trabalho do Step Function para encadeamento imediato. Você pode orquestrar várias chamadas de LLM e escolher o melhor modelo para cada estágio da cadeia, formando uma cadeia personalizada de etapas de processamento, selecionando respostas mais contextuais e precisas do modelo fundamental.
  • Crie interações Human-in-the-loop (HITL) com seu fluxo de trabalho de IA generativa para moderar as respostas e evitar alucinações ou incorporar lógica para lidar com respostas que não são suportadas pelo modelo fundamental.

Segurança

O Step Functions também é compatível com endpoints da VPC (VPCE) usando o AWS PrivateLink. Você pode acessar o Step Functions nas funções do AWS Lambda habilitadas para VPC e de outros serviços da AWS sem acessar a Internet pública.

Para obter mais informações, consulte Amazon VPC Endpoints for Step Functions (Endpoints da Amazon VPC para Step Functions) no guia do desenvolvedor do Step Functions.

Conformidade

O Step Functions está em conformidade com a HIPAA, FedRAMP, SOC, GDPR e outros padrões de conformidade comuns. Consulte o site AWS Cloud Security para obter uma lista detalhada dos padrões de conformidade compatíveis.