Saiba mais sobre máquinas de estado em Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Saiba mais sobre máquinas de estado em Step Functions

O Step Functions é baseado em máquinas e tarefas de estado. Em Step Functions, as máquinas de estado são chamadas de fluxos de trabalho, que são uma série de etapas orientadas por eventos. Cada etapa em um fluxo de trabalho é chamada de estado. Por exemplo, um estado de tarefa representa uma unidade de trabalho que outra AWS o serviço é executado, como ligar para outro AWS service (Serviço da AWS) ouAPI. As instâncias de fluxos de trabalho em execução executando tarefas são chamadas de execuções em Step Functions.

Exemplo ilustrativo de um diagrama de fluxo de trabalho do Step Functions.

Principais conceitos

A seguir, é apresentada uma visão geral dos principais termos do Step Functions para contextualizar.

Prazo Descrição
Fluxo de trabalho Uma sequência de etapas que geralmente reflete um processo de negócios.
Estados

Etapas individuais em sua máquina de estado que podem tomar decisões com base em suas entradas, executar ações a partir dessas entradas e passar a saída para outros estados.

Para obter mais informações, consulte Descobrindo estados de fluxo de trabalho para usar em Step Functions.

Workflow Studio

Um designer de fluxo de trabalho visual que ajuda você a criar protótipos e criar fluxos de trabalho com mais rapidez.

Para obter mais informações, consulte Desenvolvendo fluxos de trabalho no Step Functions Workflow Studio.

Máquina de estado

Um fluxo de trabalho definido usando JSON texto representando os estados ou etapas individuais no fluxo de trabalho junto com campos StartAtTimeoutSeconds, como, Version e.

Para obter mais informações, consulte Estrutura da máquina de estado na Amazon States Language para fluxos de trabalho do Step Functions.

Amazon States Language

Uma linguagem estruturada e JSON baseada usada para definir suas máquinas de estado. ComASL, você define uma coleção de estados que podem funcionar (Taskestado), determina quais estados fazer a transição para o próximo (Choiceestado) e interrompe uma execução com um erro (Failestado).

Para obter mais informações, consulte Usando a Amazon States Language para definir fluxos de trabalho do Step Functions.

Configuração de entrada e saída

Os estados em um fluxo de trabalho recebem JSON dados como entrada e geralmente passam JSON dados como saída para o próximo estado. Step Functions fornece filtros para controlar o fluxo de dados entre os estados.

Para obter mais informações, consulte Processando entrada e saída em Step Functions.

Integração de serviços

Você pode ligar AWS APIações de serviço do seu fluxo de trabalho.

Para obter mais informações, consulte Integrando serviços com Step Functions.

Tipo de integração de serviços
  • AWS SDKintegrações — Forma padrão de ligar para qualquer um dos mais de duzentos Serviços da AWS e mais de nove mil API ações diretamente de sua máquina estatal.

  • Integrações otimizadas — integrações personalizadas que simplificam as chamadas e a troca de dados com determinados serviços. Por exemplo, o Lambda Invoke converterá automaticamente o Payload campo da resposta de uma JSON string de escape em um objeto. JSON

Padrão de integração de serviço

Ao ligar para um AWS service (Serviço da AWS), você usa um dos seguintes padrões de integração de serviços:

Execução

As execuções de máquinas de estado são instâncias em que o fluxo de trabalho é executado para a realização de tarefas.

Para obter mais informações, consulte Iniciando execuções de máquinas de estado em Step Functions.

Dados da máquina de estado

Os dados da máquina de estado assumem as seguintes formas:

  • A entrada inicial em uma máquina de estado

  • Os dados passados entre estados

  • A saída de uma máquina de estado

Esta seção descreve como os dados da máquina de estado são formatados e usados no AWS Step Functions.

Formatos de dados

Os dados da máquina de estado são representados por JSON texto. Você pode fornecer valores para uma máquina de estado usando qualquer tipo de dados suportado peloJSON.

nota
  • Os números em formato JSON de texto estão em conformidade com a JavaScript semântica. Esses números normalmente correspondem a valores de precisão dupla de IEEE-854.

  • O JSON texto a seguir é válido:

    • Cadeias de caracteres autônomas, delimitadas por aspas

    • Objetos

    • Matrizes

    • Números

    • Valores boolianos

    • null

  • A saída de um estado se torna a entrada do estado seguinte. No entanto, você pode restringir os estados para que trabalhem em um subconjunto de dados de entrada usando o Processamento de entrada e saída.

Entrada/saída de máquina de estado

Você pode fornecer seus dados de entrada iniciais para um AWS Step Functions máquina de estado de duas maneiras. Você pode passar os dados para uma ação StartExecution ao iniciar uma execução. Você também pode passar os dados para a máquina de estado do console do Step Functions. Os dados iniciais são passados para o estado StartAt da máquina de estado. Se não for fornecida nenhuma entrada, o padrão será um objeto vazio ({}).

O resultado da execução é retornado pelo último estado (terminal). Essa saída aparece como JSON texto no resultado da execução.

Para fluxos de trabalho padrão, você pode recuperar os resultados de execução do histórico usando chamadores externos, por exemplo, na ação DescribeExecution. Você pode visualizar os resultados da execução no console do Step Functions.

Para fluxos de trabalho expressos, se você habilitou o registro em log, poderá recuperar os resultados dos CloudWatch Logs ou visualizar e depurar as execuções no console Step Functions. Para ter mais informações, consulte Usando CloudWatch Logs para registrar o histórico de execução em Step Functions e Visualizando detalhes da execução no console Step Functions.

Você também deve considerar cotas relacionadas à sua máquina de estado. Para ter mais informações, consulte Cotas de serviço do Step Functions

Entrada/saída de estado

A entrada de cada estado consiste em JSON texto do estado anterior ou, para o StartAt estado, na entrada na execução. Em alguns estados de controle de fluxo, a entrada ecoa a saída.

No exemplo a seguir, a máquina de estado adiciona dois números ao mesmo tempo.

  1. Defina o AWS Lambda função.

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. Defina a máquina de estado .

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. Inicie uma execução com o JSON texto a seguir.

    { "numbers": [3, 4] }

    O Add estado recebe o JSON texto e o passa para a função Lambda.

    A função do Lambda retorna o resultado do cálculo para o estado.

    O estado retorna o valor a seguir em sua saída.

    { "result": 7 }

    Como Add é também o estado final na máquina de estado, esse valor é retornado como a saída da máquina de estado.

    Se o estado final não retornar nenhuma saída, a máquina de estado retornará um objeto vazio ({}).

Para obter mais informações, consulte Processando entrada e saída em Step Functions.

Invocar AWS Step Functions de outros serviços

Você pode configurar vários outros serviços para invocar máquinas de estado. Com base no tipo de fluxo de trabalho da máquina de estado, você pode invocar máquinas de estado de forma assíncrona ou síncrona. Para invocar máquinas de estado de forma síncrona, use a StartSyncExecution API chamada ou a integração do Amazon API Gateway com o Express Workflows. Com a invocação assíncrona, o Step Functions pausa a execução do fluxo de trabalho até que um token de tarefa seja retornado. No entanto, a espera por um token de tarefa torna o fluxo de trabalho síncrono.

Os serviços que você pode configurar para invocar o Step Functions incluem:

As invocações do Step Functions são governadas pela cota StartExecution. Para obter mais informações, consulte:

Transições em máquinas de estado

Ao iniciar uma nova execução da máquina de estado, o sistema começa com o estado mencionado no campo de nível superior StartAt. Esse campo, uma string. deve corresponder exatamente, inclusive em maiúsculas e minúsculas, ao nome de um estado no fluxo de trabalho.

Depois que um estado é executado, AWS Step Functions usa o valor do Next campo para determinar o próximo estado para o qual avançar.

Os campos Next também especificam nomes de estados como strings. Essa string diferencia maiúsculas de minúsculas e deve corresponder exatamente ao nome do estado especificado na descrição da máquina de estado.

Por exemplo, o estado a seguir inclui uma transição para NextState.

"SomeState" : { ..., "Next" : "NextState" }

A maioria dos estados permite somente uma regra de transição com o campo Next. No entanto, determinados estados de controle de fluxo, por exemplo, um estado Choice, permitem que você especifique várias regras de transição, cada uma com o próprio campo Next. A Amazon States Language fornece detalhes sobre cada um dos tipos de estado que você pode especificar, bem como informações sobre como especificar transições.

Os estados podem ter várias transições de entrada de outros estados.

Esse processo se repete até alcançar um estado terminal (um estado com "Type": Succeed, "Type": Fail ou "End": true) ou até que ocorra um erro de runtime.

Quando você redriveuma execução, é considerada uma transição de estado. Além disso, todos os estados que são executados novamente em um redrive também são consideradas transições de estado.

As regras a seguir aplicam-se a estados dentro de uma máquina de estado:

  • Os estados podem ocorrer em qualquer ordem no bloco delimitador. No entanto, a ordem em que eles estão listados não afeta a ordem em que estão sendo executados. Essa ordem é determinada pelo conteúdo dos estados.

  • Em uma máquina de estado, só pode haver um estado designado como o estado start. O estado start é definido pelo valor do campo StartAt na estrutura de nível superior.

  • Dependendo da lógica da máquina de estado, por exemplo, se a máquina de estado tiver várias ramificações lógicas, você pode ter mais de um estado end.

  • Se a máquina de estado tiver somente um estado, esse estado poderá ser início ou fim.

Transições no estado Mapa Distribuído

Ao usar o estado Map no modo distribuído, será cobrada uma transição de estado para cada execução de fluxo de trabalho secundária iniciada pelo estado Mapa distribuído. Quando você usa o estado Map no modo em linha, não é cobrada uma transição de estado para cada iteração do estado Mapa inline.

Você pode otimizar o custo usando o estado Map no modo distribuído e incluir um fluxo de trabalho aninhado na definição do estado Map. O estado Mapa Distribuído também agrega mais valor ao iniciar execuções de fluxo de trabalho secundárias do tipo Express. O Step Functions armazena a resposta e o status das execuções do fluxo de trabalho secundário do Express, o que reduz a necessidade de armazenar dados de execução em CloudWatch registros. Você também pode obter acesso aos controles de fluxo disponíveis com um estado Mapa Distribuído, como definir limites de erro ou agrupar um grupo de itens em lotes. Para obter informações sobre os preços do Step Functions, consulte AWS Step Functions preços.

Consistência de leitura no Step Functions

Atualizações da máquina de estado em AWS Step Functions são eventualmente consistentes. Todas as StartExecution chamadas em alguns segundos usarão a definição atualizada e roleArn (o nome de recurso da Amazon para a IAM função). Execuções que iniciarem imediatamente após a chamada de UpdateStateMachine podem usar a definição de máquina de estado anterior e roleArn.

Para obter mais informações, consulte as informações a seguir.