

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á.

# Inicie uma nova máquina de AWS Step Functions estado a partir de uma execução em execução
<a name="connect-stepfunctions"></a>

O Step Functions se integra à sua própria API como uma integração de serviço. Saiba como usar o Step Functions para iniciar uma nova execução de uma máquina de estado diretamente do estado da tarefa de uma execução em andamento. Ao criar novos fluxos de trabalho, use [execuções de fluxo de trabalho aninhado](concepts-nested-workflows.md) para reduzir a complexidade dos fluxos de trabalho principais e reutilizar processos comuns.

**Principais recursos da integração otimizada ao Step Functions**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) está disponível.

Para saber mais, consulte:
+ [Iniciar por meio de uma tarefa](concepts-nested-workflows.md)
+ [Integração de produtos da ](integrate-services.md)
+ [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

## Step Functions otimizadas APIs
<a name="connect-stepfunctions-api"></a>
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)

## Exemplos de fluxo de trabalho
<a name="connect-stepfunctions-api-examples"></a>

Veja a seguir um estado `Task` que inicia uma execução de outra máquina de estado e aguarda até que ela seja concluída.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync:2",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Veja a seguir um estado `Task` que inicia uma execução de outra máquina de estado.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Veja a seguir um estado `Task` que implementa o padrão de integração do serviço [retorno de chamada](connect-to-resource.md#connect-wait-token).

```
{ 
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
   "Arguments":{ 
      "Input":{
        "Comment": "Hello world!",
        "token": "{% $states.context.Task.Token %}"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Para associar a execução de um fluxo de trabalho aninhado à execução principal que o iniciou, transmita um parâmetro especialmente nomeado que inclua o ID de execução obtido do [objeto de contexto](input-output-contextobject.md). Ao iniciar uma execução aninhada, use um parâmetro chamado `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Passe o ID de execução e faça referência ao ID no objeto Context com`$states.context.Execution.Id`. Para obter mais informações, consulte [Acessar o objeto de contexto](input-output-contextobject.md#contextobject-access).

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID": "{% $states.context.Execution.Id %}"
       },
      "StateMachineArn":"arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

 Máquinas de estado aninhadas retornam o seguinte: 


| Recurso | Output | 
| --- | --- | 
| startExecution.sync | String | 
| startExecution.sync:2 | JSON | 

Ambos aguardarão a conclusão da máquina de estado aninhado, mas eles retornam formatos diferentes de `Output`. Por exemplo, se você criar uma função do Lambda que retorna o objeto `{ "MyKey": "MyValue" }`, você obteria as seguintes respostas:

Para startExecution.sync:

```
{
   {{<other fields>}}
   "Output": "{ \"MyKey\": \"MyValue\" }" 
}
```

Para startExecution.sync:2:

```
{
   {{<other fields>}} 
   "Output": {
      "MyKey": "MyValue"
   }
}
```

### Configurando permissões do IAM para máquinas de estado aninhado
<a name="nested-stepfunctions-iam-permissions"></a>

Uma máquina de estado principal determina se uma máquina de estado secundária concluiu a execução usando pesquisas e eventos. A enquete requer permissão, `states:DescribeExecution` enquanto os eventos enviados EventBridge para o Step Functions exigem permissões para `events:PutTargets``events:PutRule`, e. `events:DescribeRule` Se essas permissões estiverem ausentes em seu perfil do IAM, pode haver um atraso até que uma máquina de estado principal tome conhecimento da conclusão da execução da máquina de estado secundária.

Para uma máquina de estado que chama `StartExecution` para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado. 

## Políticas do IAM para chamar fluxos de trabalho aninhados do Step Functions
<a name="stepfunctions-iam"></a>

Para uma máquina de estado que chama `StartExecution` para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado. 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{myStateMachineName}}"
            ]
        }
    ]
}
```

Para saber mais, consulte:
+ [Integrar serviços ao Step Functions](integrate-services.md)
+ [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)
+ [Inicie uma nova máquina de AWS Step Functions estado a partir de uma execução em execução](#connect-stepfunctions)

------
#### [ Synchronous ]<a name="sync-async-iam-policies"></a>

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{stateMachineName}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "states:DescribeExecution",
                "states:StopExecution"
            ],
            "Resource": [
               "arn:aws:states:{{us-east-1}}:{{123456789012}}:execution:{{myStateMachineName}}:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:{{us-east-1}}:{{123456789012}}:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
            ]
        }
    ]
}
```

------
#### [ Asynchronous ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:{{us-east-1}}:{{123456789012}}:stateMachine:{{myStateMachineName}}"
            ]
        }
    ]
}
```

------

**Tipos de ARN necessários**  
Na política de **Síncrono**, observe que `states:StartExecution` requer um ARN de máquina de estado, enquanto `states:DescribeExecution` e `states:StopExecution` exigem um ARN de execução.  
Se você combinar as três ações por engano, o JSON será válido, mas a política do IAM estará incorreta. Uma política incorreta pode causar problemas de and/or acesso aos fluxos de trabalho bloqueados durante a execução do fluxo de trabalho.

Para obter mais informações sobre execuções de fluxos de trabalho aninhados, consulte: [Iniciar execuções de fluxo de trabalho usando um estado de tarefa no Step Functions](concepts-nested-workflows.md).