

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Avvia una nuova macchina a AWS Step Functions stati da un'esecuzione in esecuzione
<a name="connect-stepfunctions"></a>

Step Functions si integra con la propria API come integrazione di servizi. Scopri come usare Step Functions per avviare una nuova esecuzione di una macchina a stati direttamente dallo stato dell'attività di un'esecuzione in esecuzione. Durante la creazione di nuovi flussi di lavoro, utilizza le [ esecuzioni di flusso di lavoro nidificate](concepts-nested-workflows.md) per ridurre la complessità dei flussi di lavoro principali e riutilizzare i processi comuni.

**Caratteristiche principali dell'integrazione Optimized Step Functions**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è disponibile.

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Inizia da un'attività](concepts-nested-workflows.md)
+ [Integrazione dei servizi ](integrate-services.md)
+ [Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md)

## Step Functions ottimizzate 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)

## Esempi di flussi di lavoro
<a name="connect-stepfunctions-api-examples"></a>

Di seguito è incluso uno stato `Task` che avvia l'esecuzione di un'altra macchina a stati e ne attende il completamento.

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

Di seguito è incluso uno stato `Task` che avvia l'esecuzione di un'altra macchina a stati.

```
{  
   "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’esempio seguente include uno stato `Task` che implementa il modello di integrazione del servizio di [callback](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
}
```

Per associare un'esecuzione annidata del workflow all'esecuzione principale che l'ha avviata, passate un parametro con nome speciale che include l'ID di esecuzione estratto dall'oggetto [Context](input-output-contextobject.md). Quando si avvia un'esecuzione nidificata, utilizza un parametro denominato `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Passa l'ID di esecuzione e fai riferimento all'ID nell'oggetto Context con. `$states.context.Execution.Id` Per ulteriori informazioni, consulta [Accesso all'oggetto 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
}
```

 Le macchine a stato nidificato restituiscono quanto segue: 


| Risorsa | Output | 
| --- | --- | 
| startExecution.sync | Stringa | 
| startExecution.sync:2 | JSON | 

Entrambi attenderanno il completamento della macchina a stati nidificati, ma restituiscono formati `Output` diversi. Ad esempio, se crei una funzione Lambda che restituisce l'oggetto`{ "MyKey": "MyValue" }`, otterrai le seguenti risposte:

Per startExecution.sync:

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

Per startExecution.sync:2:

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

### Configurazione delle autorizzazioni IAM per macchine a stati annidate
<a name="nested-stepfunctions-iam-permissions"></a>

Una macchina a stati principale determina se una macchina a stati figlio ha completato l'esecuzione utilizzando polling ed eventi. Il polling richiede l'autorizzazione `states:DescribeExecution` mentre gli eventi inviati EventBridge a Step Functions richiedono le autorizzazioni per `events:PutTargets``events:PutRule`, e. `events:DescribeRule` Se nel tuo ruolo IAM mancano queste autorizzazioni, potrebbe verificarsi un ritardo prima che una macchina a stati principale venga a conoscenza del completamento dell'esecuzione della macchina a stati secondari.

Per una macchina a stati che richiede `StartExecution` l'esecuzione di un singolo flusso di lavoro annidato, utilizza una policy IAM che limiti le autorizzazioni a quella macchina a stati. 

## Politiche IAM per chiamare flussi di lavoro Step Functions annidati
<a name="stepfunctions-iam"></a>

Per una macchina a stati che richiede `StartExecution` l'esecuzione di un singolo flusso di lavoro nidificato, utilizza una policy IAM che limiti le autorizzazioni a quella macchina a stati. 

****  

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

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Integrazione dei servizi con Step Functions](integrate-services.md)
+ [Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md)
+ [Avvia una nuova macchina a AWS Step Functions stati da un'esecuzione in esecuzione](#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"
            ]
        }
    ]
}
```

------

**Tipi di ARN richiesti**  
Nella politica per **Synchronous**, si noti che `states:StartExecution` richiede un ARN per una macchina a stati `states:DescribeExecution` mentre `states:StopExecution` e richiede un ARN di esecuzione.  
Se combini erroneamente tutte e tre le azioni, il JSON sarà valido ma la policy IAM non sarà corretta. Una policy errata può causare problemi di and/or accesso ai flussi di lavoro bloccati durante l'esecuzione del flusso di lavoro.

Per ulteriori informazioni sulle esecuzioni di flussi di lavoro nidificati, consulta [Avvia le esecuzioni del flusso di lavoro da uno stato di attività in Step Functions](concepts-nested-workflows.md).