

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

# Creazione di una macchina a stati Step Functions che utilizza Lambda
<a name="tutorial-creating-lambda-state-machine"></a>

In questo tutorial, creerai un flusso di lavoro in un unico passaggio utilizzando AWS Step Functions per richiamare una funzione. AWS Lambda 

**Nota**  
Step Functions si basa su *macchine e *attività* a stati*. In Step Functions, le macchine a stati sono chiamate *flussi di lavoro*, che sono una serie di passaggi guidati dagli eventi. *Ogni fase di un flusso di lavoro è denominata stato.* Ad esempio, uno [stato Task](state-task.md) rappresenta un'unità di lavoro svolta da un altro AWS servizio, ad esempio chiamarne un altro Servizio AWS o un'API. Le istanze di flussi di lavoro in esecuzione che eseguono attività sono chiamate *esecuzioni* in Step Functions.  
Per ulteriori informazioni, consulta:  
[Che cos'è Step Functions?](welcome.md)
[Integrazione dei servizi con Step Functions](integrate-services.md)

Lambda è ideale per `Task` gli stati, perché le funzioni Lambda sono senza *server* e facili da scrivere. Puoi scrivere codice nel Console di gestione AWS o nel tuo editor preferito. AWS gestisce i dettagli relativi alla fornitura di un ambiente informatico per la funzione e alla sua esecuzione.

## Fase 1: creare una funzione Lambda
<a name="create-lambda-function"></a>

La funzione Lambda riceve i dati degli eventi e restituisce un messaggio di saluto.

**Importante**  
Assicurati che la tua funzione Lambda utilizzi lo stesso AWS account e la tua macchina Regione AWS a stati.

1. Apri la [console Lambda](https://console.aws.amazon.com/lambda/home) e scegli **Crea** funzione.

1. Nella pagina **Create function (Crea funzione)**, scegliere **Author from scratch (Crea da zero)**.

1. Nel campo **Function name (Nome funzione)**, immettere `HelloFunction`.

1. Mantieni le selezioni predefinite per tutte le altre opzioni, quindi scegli **Crea** funzione. 

1. Dopo aver creato la funzione Lambda, copia l'Amazon Resource Name (ARN) della funzione visualizzato nell'angolo in alto a destra della pagina. Di seguito è riportato un esempio di ARN:

   ```
   arn:aws:lambda:region:123456789012:function:HelloFunction
   ```

1. Copia il codice seguente per la funzione Lambda nella sezione **Codice sorgente** della ***HelloFunction***pagina.

   ```
   export const handler = async(event, context, callback) => {
       callback(null, "Hello from " + event.who + "!");
   };
   ```

   Questo codice assembla un saluto utilizzando il campo `who` dei dati di input, forniti dall'oggetto `event` passato alla funzione. I dati di input per questa funzione vengono aggiunti in seguito, quando si [avvia una nuova esecuzione](#start-lambda-function). Il metodo `callback` restituisce il saluto assemblato dalla funzione.

1. Seleziona **Implementa**.

## Fase 2: testare la funzione Lambda
<a name="test-lambda-function"></a>

Prova la tua funzione Lambda per vederla in funzione.

1. Scegli **Test (Esegui test)**.

1. Per **Event name (Nome evento)** immettere `HelloEvent`.

1. Sostituisci i dati **JSON degli eventi** con i seguenti.

   ```
   {
       "who": "AWS Step Functions"
   }
   ```

   La `"who"` voce corrisponde al `event.who` campo della funzione Lambda, che completa il saluto. Immetterai gli stessi dati di input quando eseguirai la tua macchina a stati.

1. Scegli **Salva**, quindi scegli **Test**.

1. Per esaminare i risultati del test, in **Execution result** (Risultato esecuzione), espandi **Details** (Dettagli). 

## Fase 3: Creare una macchina a stati
<a name="create-state-machine-step"></a>

[Usa la console Step Functions per creare una macchina a stati che richiami la funzione Lambda creata nel passaggio 1.](#create-lambda-function)

1. Apri la [console Step Functions](https://console.aws.amazon.com/states/home), scegli **Macchine a stati** dal menu, quindi scegli **Crea macchina a stati**.
**Importante**  
Assicurati che la tua macchina a stati utilizzi lo stesso AWS account e la stessa regione della funzione Lambda che hai creato in precedenza.

1. Scegli **Crea da vuoto**.

1. Assegna un nome alla tua macchina a stati, quindi scegli **Continua** per modificare la tua macchina a stati in Workflow Studio.

1. Nel [browser States](workflow-studio.md#workflow-studio-components-states) a sinistra, assicurati di aver scelto la scheda **Azioni**. Quindi, trascina e rilascia l'API **AWS Lambda Invoke** nello stato vuoto denominato **Drag first state here**.

1. Nel pannello [Inspector](workflow-studio.md#workflow-studio-components-formdefinition) a destra, configura la funzione Lambda:

   1. Nella sezione **Parametri API**, scegli [la funzione Lambda che hai creato in precedenza](#create-lambda-function) nell'elenco a discesa **Nome funzione**.

   1. Mantieni la selezione predefinita nell'elenco a discesa **Payload**.

1. **(Facoltativo) Scegliete **Definizione** per visualizzare la definizione della macchina a stati [Lingua degli Stati di Amazon](concepts-amazon-states-language.md) (ASL), che viene generata automaticamente in base alle selezioni effettuate nella scheda **Azioni** e nel pannello Inspector.**

1. Specificate un nome per la vostra macchina a stati. Per fare ciò, scegli l'icona di modifica accanto al nome della macchina a stati predefinita di **MyStateMachine**. Quindi, nella **configurazione della macchina a stati**, specifica un nome nella casella **Nome macchina a stati**.

   Ad esempio, è possibile inserire il nome **LambdaStateMachine**.
**Nota**  
I nomi delle macchine a stati, delle esecuzioni e delle attività non devono superare gli 80 caratteri di lunghezza. Questi nomi devono essere univoci per l'account e la AWS regione e non devono contenere nessuno dei seguenti elementi:  
Spazi bianchi
Caratteri jolly () `? *`
Caratteri tra parentesi quadre () `< > { } [ ]`
Caratteri speciali () `" # % \ ^ | ~ ` $ & , ; : /`
Caratteri di controllo (`\\u0000`- `\\u001f` o `\\u007f` -`\\u009f`).
Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono caratteri non ASCII. Poiché tali caratteri impediranno ad Amazon CloudWatch di registrare i dati, consigliamo di utilizzare solo caratteri ASCII per tenere traccia delle metriche di Step Functions.

1. (Facoltativo) Nella **configurazione della macchina a stati**, specifica altre impostazioni del flusso di lavoro, come il tipo di macchina a stati e il relativo ruolo di esecuzione.

   Per questo tutorial, mantieni tutte le selezioni predefinite nelle **impostazioni della macchina a stati**.

1. Scegli **Create** (Crea).

1. Nella finestra di dialogo **Conferma creazione del ruolo**, scegliete **Conferma** per continuare.

   Puoi anche scegliere **Visualizza le impostazioni del ruolo** per tornare alla **configurazione della macchina a stati**.
**Nota**  
Se elimini il ruolo IAM creato da Step Functions, Step Functions non può ricrearlo in un secondo momento. Allo stesso modo, se modifichi il ruolo (ad esempio, rimuovendo Step Functions dai principi nella policy IAM), Step Functions non può ripristinare le impostazioni originali in un secondo momento. 

## Fase 4: Esegui la macchina a stati
<a name="start-lambda-function"></a>

Dopo aver creato la macchina a stati, puoi eseguirla.

1. Nella pagina **Macchine a stati**, scegli **LambdaStateMachine**.

1. Selezionare **Start execution (Avvia esecuzione)**.

   Viene visualizzata la finestra di dialogo **Avvia esecuzione**.

1. (Facoltativo) Immettete un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.
**Nomi e log non ASCII**  
Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono caratteri non ASCII. Poiché tali caratteri impediranno ad Amazon CloudWatch di registrare i dati, consigliamo di utilizzare solo caratteri ASCII per tenere traccia delle metriche di Step Functions.

1. Nell'area **di input**, sostituisci i dati di esecuzione di esempio con i seguenti.

   ```
   {
       "who" : "AWS Step Functions"
   }
   ```

    `"who"`è il nome chiave utilizzato dalla funzione Lambda per ottenere il nome della persona da salutare.

1. Selezionare **Start Execution (Avvia esecuzione)**.

   L'esecuzione della macchina a stati inizia e viene visualizzata una nuova pagina che mostra l'esecuzione in esecuzione.

1. La console Step Functions ti indirizza a una pagina intitolata con il tuo ID di esecuzione. Questa pagina è nota come pagina dei *dettagli di esecuzione*. In questa pagina è possibile esaminare i risultati dell'esecuzione man mano che l'esecuzione procede o dopo il suo completamento.

   Per esaminare i risultati dell'esecuzione, scegliete i singoli stati nella **vista Grafico**, quindi scegliete le singole schede [Dettagli del passaggio](concepts-view-execution-details.md#exec-details-intf-step-details) nel riquadro per visualizzare i dettagli di ogni stato, inclusi rispettivamente input, output e definizione. Per i dettagli sulle informazioni sull'esecuzione che è possibile visualizzare nella pagina *Dettagli di esecuzione*, vedere[Panoramica dei dettagli di esecuzione](concepts-view-execution-details.md#exec-details-interface-overview).

**Nota**  
Puoi anche passare payload mentre richiami Lambda da una macchina a stati. Per ulteriori informazioni ed esempi su come richiamare Lambda inserendo il payload nel `Parameters` campo, vedere. [Invoca una AWS Lambda funzione con Step Functions](connect-lambda.md)