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.
Introdução às máquinas de estado
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 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 |
|
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 FunctionsStartAt
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.
-
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 }); }
-
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 } } }
-
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:
-
AWS Lambda, usando a
StartExecution
chamada.
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 estadostart
é definido pelo valor do campoStartAt
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.
-
UpdateStateMachine
no AWS Step Functions APIReferência -
Atualizar um fluxo de trabalho em Saiba como começar a usar o Step Functions.