

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 no Step Functions.
<a name="concepts-statemachines"></a>

O Step Functions é baseado em *máquinas de estado*, que também são chamadas de *fluxos de trabalho*. Os fluxos de trabalho são compostos por uma série de etapas orientadas por eventos. 

Um fluxo de trabalho é definido usando a Amazon States Language, também conhecida como ASL. Opcionalmente, você pode usar o Workflow Studio, um designer visual de fluxo de trabalho, para criar e editar seus fluxos de trabalho.

Cada etapa no fluxo de trabalho é chamada de *estado*. Há dois tipos de estados: estados de fluxo e estados de tarefa. 

**Estados de fluxo**  
 Os estados de fluxo controlam o fluxo de execução das etapas. Por exemplo, **estados de escolha **fornecem lógica condicional; **estados de espera** pausam a execução do fluxo de trabalho; **estados de mapa** executam fluxos de trabalho secundários para cada item em um conjunto de dados; e **estados paralelos** criam ramificações separadas em seus fluxos de trabalho. 

**Estados de tarefa**  
Os estados da tarefa representam uma unidade de trabalho que outro AWS serviço executa, como chamar outro AWS service (Serviço da AWS) ou uma API. Os estados de tarefa também são conhecidos como **Ações**. Você pode escolher centenas de ações para realizar trabalhos em serviços externos AWS e internos. (Observação: você também pode usar operadores que são executados fora do Step Functions para realizar tarefas. Para obter mais informações, consulte [Atividades](concepts-activities.md).)

![\[Exemplo ilustrativo dos componentes de um fluxo de trabalho do Step Functions.\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/images/state-machine-conceptual-jsonata.png)


**Execuções e tratamento de erros**

Ao executar fluxos de trabalho, o Step Functions cria uma instância de fluxo de trabalho chamada *execução*. Você pode monitorar o status das execuções do fluxo de trabalho. Se uma execução apresentar um erro, o fluxo de trabalho poderá detectar o erro. Dependendo do caso de uso, você poderá reconduzir a execução posteriormente para retomar o fluxo de trabalho. 

**Transferência de dados**

Opcionalmente, você pode fornecer **dados de entrada** na forma de texto JSON para seus fluxos de trabalho. Cada **etapa** pode passar dados para as etapas subsequentes usando variáveis e saída de estado. Os dados armazenados em variáveis podem ser usados em etapas posteriores. A saída de estado se torna a entrada da etapa seguinte. Para saber mais sobre a transferência de dados, consulte [Transmitir dados entre estados com variáveis](workflow-variables.md).

No final dos fluxos de trabalho, a máquina de estado pode, opcionalmente, produzir uma saída, também em JSON. 

**Transformando dados**

Estados e máquinas de estado podem transformar dados usando uma **linguagem de consulta**. A linguagem de consulta recomendada é, no entanto **JSONata**, máquinas de estado criadas antes do uso do re:Invent 2024. **JSONPath** Para compatibilidade com versões anteriores, suas máquinas de estado ou estados individuais devem optar JSONata por usar sua linguagem de consulta. 

Você pode reconhecer máquinas de JSONata estado e estados individuais pelo `QueryLanguage` campo definido como "JSONata”. Máquinas estatais e estados que usam JSONPath, carecem do `QueryLanguage` campo. 

Os estados usados JSONPath terão campos de estado como InputPath, Parâmetros ResultSelector ResultPath,, OutputPath e. Nas definições de máquina de JSONPath estado, você também verá nomes de campo que terminam em `.$` e valores prefixados com `$.` e`$$.`, ambos representando caminhos. Nos caminhos, há várias funções intrínsecas, como `States.MathAdd`. As funções intrínsecas são usadas **somente** em. JSONPath 

JSONata os estados usam **os campos Argumentos** e **Saída**. Nesses campos opcionais, você pode ver JSONata expressões parecidas com as seguintes:`"{% $type = 'local' %}"`. Com JSONata, você pode usar expressões, operadores e funções. Para saber mais, consulte [Transformando dados com Step JSONata Functions](transforming-data.md). 

**nota**  
Você só pode usar uma linguagem de consulta por estado. Você não pode misturar JSONPath e JSONata em uma única etapa. 

## Principais conceitos
<a name="key-concepts-get-started"></a>



A seguir, apresentamos uma visão geral dos principais termos de contexto do Step Functions. 




| Prazo | Description | 
| --- | --- | 
| Fluxo de trabalho | Uma sequência de etapas que geralmente reflete um processo de negócios. | 
| Estados |  As etapas individuais da máquina de estado que podem tomar decisões com base nos dados de entrada, realizar ações com base nesses dados e transmitir os dados de saída para outros estados. Para obter mais informações, consulte [Descobrir estados de fluxo de trabalho a serem usados no Step Functions](workflow-states.md).  | 
| 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 [Desenvolver fluxos de trabalho no Workflow Studio do Step Functions](workflow-studio.md).  | 
| Máquina de estado | Um fluxo de trabalho definido usando texto JSON que representa os estados ou etapas individuais no fluxo de trabalho junto com campos `StartAt`, `TimeoutSeconds` e `Version`. Para obter mais informações, consulte [Estrutura da máquina de estado na Amazon States Language para fluxos de trabalho do Step Functions](statemachine-structure.md). | 
| Amazon States Language |   Uma linguagem estruturada baseada em JSON usada para definir máquinas de estado. Com a ASL, é definida uma coleção de [estados](workflow-states.md) que podem realizar trabalho ([estado `Task`](state-task.md)), determinar para quais estados mudar depois ([estado `Choice`](state-choice.md)) e parar uma execução com um erro ([estado `Fail`](state-fail.md)).  Para obter mais informações, consulte [Usar a Amazon States Language para definir fluxos de trabalho do Step Functions](concepts-amazon-states-language.md).  | 
| Configuração de entrada e saída |  Os estados em um fluxo de trabalho recebem dados JSON como entrada e geralmente transmitem dados JSON como saída para o próximo estado. O Step Functions oferece filtros para controlar o fluxo de dados entre os estados. Para obter mais informações, consulte [Processar entrada e saída no Step Functions](concepts-input-output-filtering.md).  | 
| Integração de serviços |  Você pode chamar ações AWS de API de serviço a partir do seu fluxo de trabalho.  Para obter mais informações, consulte [Integrar serviços ao Step Functions](integrate-services.md). | 
| Tipo de integração de serviços |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/concepts-statemachines.html)  | 
| Padrão de integração de serviço | Ao chamar um AWS service (Serviço da AWS), você usa um dos seguintes padrões de integração de serviços: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/concepts-statemachines.html)  | 
| 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 [Iniciar as execuções de uma máquina de estado no Step Functions](statemachine-starting.md).  | 

## Dados da máquina de estado
<a name="concepts-state-machine-data"></a>

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 de uma máquina de estado são formatados e usados no AWS Step Functions.

**Topics**
+ [Formatos de dados](#concepts-state-machine-data-format)
+ [Entrada/saída de máquina de estado](#concepts-state-machine-data-state-machine-input-output)
+ [Entrada/saída de estado](#concepts-state-machine-data-state-input-output)

### Formatos de dados
<a name="concepts-state-machine-data-format"></a>

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

**nota**  
Os números no formato de texto JSON estão em conformidade com a JavaScript semântica. Esses números geralmente correspondem a valores [IEEE-854](https://standards.ieee.org/findstds/standard/854-1987.html) de dupla precisão.
Veja um texto JSON válido a seguir.   
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](concepts-input-output-filtering.md).

### Entrada/saída de máquina de estado
<a name="concepts-state-machine-data-state-machine-input-output"></a>

Você pode fornecer seus dados de entrada iniciais para uma máquina de AWS Step Functions estado de duas maneiras. Você pode passar os dados para uma ação `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` ao iniciar uma execução. Você também pode passar os dados para a máquina de estado do [console do Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/). 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 texto JSON 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](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)`. Você pode visualizar os resultados da execução no [console do Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/). 

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 obter mais informações, consulte [Usando CloudWatch Logs para registrar o histórico de execução em Step Functions](cw-logs.md) e [Visualizar os detalhes da execução no console do Step Functions](concepts-view-execution-details.md).

Você também deve considerar cotas relacionadas à sua máquina de estado. Para obter mais informações, consulte [Cotas de serviço do Step Functions](service-quotas.md).

### Entrada/saída de estado
<a name="concepts-state-machine-data-state-input-output"></a>

A entrada de cada estado compreende o texto JSON do estado precedente ou, para o estado `StartAt`, a entrada da 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 a 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 });
   }
   ```

1. 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:region:123456789012:function:Add",
             "End": true
           }
       }
   }
   ```

1. Inicie uma execução com o texto JSON a seguir.

   ```
   { "numbers": [3, 4] }
   ```

   O estado `Add` recebe o texto JSON e o passa para a função do 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 [Processar entrada e saída no Step Functions](concepts-input-output-filtering.md).

## Invocar AWS Step Functions de outros serviços
<a name="concepts-invoke-sfn"></a>

Você pode configurar vários outros serviços para invocar máquinas de estado. Com base no [tipo de fluxo de trabalho](choosing-workflow-type.md) 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 maneira síncrona, use a chamada de API `[StartSyncExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartSyncExecution.html)` ou a integração do Amazon API Gateway com fluxos de trabalho expresso. 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 chamada [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html). 
+  [Amazon API Gateway](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html) 
+  [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) 
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-StepFunctions.html) 
+  [AWS IoT Mecanismo de regras](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html) 
+  [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/connect-stepfunctions.html) 

As invocações do Step Functions são governadas pela cota `StartExecution`. Para obter mais informações, consulte:
+ [Cotas de serviço do Step Functions](service-quotas.md)

## Transições em máquinas de estado
<a name="concepts-transitions"></a>

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](concepts-amazon-states-language.md) 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ê [redrive](redrive-executions.md) uma execução, ela é considerada uma transição de estado. Além disso, todos os estados que são executados novamente em um redrive também são considerados 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
<a name="dist-map-transitions"></a>

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 a definição de preço do Step Functions, consulte [Definição de preço para o AWS Step Functions](https://aws.amazon.com/step-functions/pricing/).

## Consistência de leitura no Step Functions
<a name="concepts-read-consistency"></a>

Eventualmente, as atualizações da máquina de estado AWS Step Functions são consistentes. Todas as chamadas de `StartExecution` em um lapso de alguns segundos usarão a definição atualizada e `roleArn` (o Nome de recurso da Amazon para o perfil do IAM). 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 saber mais, consulte:
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html) na *Referência de API do AWS Step Functions *