

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Démarrer une nouvelle machine à AWS Step Functions états à partir d'une exécution en cours
<a name="connect-stepfunctions"></a>

Step Functions s'intègre à sa propre API en tant que service d'intégration. Apprenez à utiliser Step Functions pour démarrer une nouvelle exécution d'une machine à états directement à partir de l'état de la tâche d'une exécution en cours. Utilisez des [exécutions de workflows imbriqués](concepts-nested-workflows.md) pour réduire la complexité de vos principaux workflows et réutiliser les processus courants lors de la création de nouveaux workflows.

**Principales fonctionnalités de l'intégration d'Optimized Step Functions**  
Le modèle [Exécuter une tâche (.sync)](connect-to-resource.md#connect-sync) d'intégration est disponible.

Pour plus d’informations, consultez les ressources suivantes :
+ [Commencer à partir d'une tâche](concepts-nested-workflows.md)
+ [Intégration des services ](integrate-services.md)
+ [Transmission de paramètres à une API de service dans Step Functions](connect-parameters.md)

## Step Functions optimisées 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)

## Exemples de flux de travail
<a name="connect-stepfunctions-api-examples"></a>

L'exemple suivant inclut un état `Task` qui démarre l'exécution d'une autre machine d'état et attend qu'elle se termine.

```
{  
   "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
}
```

L'exemple suivant inclut un état `Task` qui démarre l'exécution d'une autre machine d'état.

```
{  
   "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
}
```

L'exemple suivant inclut un état `Task` qui implémente le modèle d'intégration de service de [rappel](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
}
```

Pour associer une exécution de flux de travail imbriquée à l'exécution parent qui l'a démarrée, transmettez un paramètre spécialement nommé qui inclut l'ID d'exécution extrait de l'[objet Context](input-output-contextobject.md). Lorsque vous démarrez une exécution imbriquée, utilisez un paramètre nommé `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Transmettez l'ID d'exécution et référencez l'ID dans l'objet Context avec`$states.context.Execution.Id`. Pour de plus amples informations, veuillez consulter [Accès à l'objet Context](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
}
```

 Les machines d'état imbriquées renvoient les éléments suivants : 


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

Ces deux éléments attendent que la machine d'état imbriquée se termine, mais renvoient des formats `Output` différents. Par exemple, si vous créez une fonction Lambda qui renvoie l'objet`{ "MyKey": "MyValue" }`, vous obtiendrez les réponses suivantes :

Pour startExecution.sync :

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

Pour startExecution.sync:2 :

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

### Configuration des autorisations IAM pour les machines à états imbriqués
<a name="nested-stepfunctions-iam-permissions"></a>

Une machine d'état parent détermine si une machine d'état enfant a terminé son exécution à l'aide d'interrogations et d'événements. Le sondage nécessite une autorisation, `states:DescribeExecution` tandis que les événements envoyés EventBridge à Step Functions nécessitent des autorisations pour `events:PutTargets``events:PutRule`, et`events:DescribeRule`. Si ces autorisations sont absentes de votre rôle IAM, un délai peut s'écouler avant qu'une machine d'état parent ne soit informée de la fin de l'exécution de la machine d'état enfant.

Pour une machine à états nécessitant l'exécution d'un seul flux de travail imbriqué, utilisez une politique IAM qui limite les autorisations à cette machine à états. `StartExecution` 

## Politiques IAM pour appeler des flux de travail Step Functions imbriqués
<a name="stepfunctions-iam"></a>

Pour une machine à états nécessitant l'exécution d'un seul flux de travail imbriqué, utilisez une politique IAM qui limite les autorisations à cette machine à états. `StartExecution` 

****  

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

Pour plus d’informations, consultez les ressources suivantes :
+ [Intégrer les services avec Step Functions](integrate-services.md)
+ [Transmission de paramètres à une API de service dans Step Functions](connect-parameters.md)
+ [Démarrer une nouvelle machine à AWS Step Functions états à partir d'une exécution en cours](#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}}"
            ]
        }
    ]
}
```

------

**types d'ARN requis**  
Dans la politique relative à **Synchrone**, notez que cela `states:StartExecution` nécessite un ARN de machine à états alors que `states:DescribeExecution` cela `states:StopExecution` nécessite un ARN d'exécution.  
Si vous combinez par erreur les trois actions, le JSON sera valide mais la politique IAM sera incorrecte. Une politique incorrecte peut entraîner des problèmes d' and/or accès aux flux de travail bloqués lors de l'exécution du flux de travail.

Pour de plus amples informations sur les exécutions de workflows imbriqués, veuillez consulter [Lancer des exécutions de flux de travail à partir d'un état de tâche dans Step Functions](concepts-nested-workflows.md).