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à.
Errori di debug nella console Step Functions
Nell'argomento precedenteConfigura input e output, hai imparato a filtrare e manipolare i dati. È possibile che si verifichino errori nella configurazione della macchina a stati e nella selezione dei dati. In questo ultimo argomento, verrà illustrato il debug degli errori di runtime utilizzando la console Step Functions.
Potrebbero verificarsi errori di runtime, come:
Un JSON percorso non valido per
Variable
campo nelloChoice
stato.Problema di definizione della macchina a stati, ad esempio nessuna regola corrispondente definita per uno
Choice
stato.Espressioni di JSON percorso non valide durante l'applicazione di filtri per manipolare input e output.
Fallimenti delle attività a causa di un'eccezione alla funzione Lambda.
IAMerrori di autorizzazione.
Suggerimento
Per ulteriori opzioni di gestione degli errori, vedereGestione degli errori nei flussi di lavoro di Step Functions.
Esecuzione del debug del percorso non valido Errore dello stato di scelta
Quando si specifica un JSON percorso errato o irrisolvibile nel campo Variabile dello Choice
stato o non si definisce una regola corrispondente nello Choice
stato, si riceve un errore durante l'esecuzione del flusso di lavoro.
Per illustrare l'errore relativo al percorso non valido, questo tutorial introduce un Choice
errore di stato nel flusso di lavoro. Utilizzerai la macchina a CreditCardWorkflowstati e ne modificherai la definizione per introdurre l'errore.
Apri la console Step Functions e scegli la macchina a CreditCardWorkflowstati.
Scegliete Modifica per modificare la definizione della macchina a stati. Apporta la modifica evidenziata nel codice seguente alla definizione della macchina a stati.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Scegli Salva, quindi scegli Salva comunque.
Esegui la macchina a stati.
Nella pagina Dettagli di esecuzione dell'esecuzione della macchina a stati, esegui una delle seguenti operazioni:
Scegliete Causa nel messaggio di errore per visualizzare il motivo dell'errore di esecuzione.
Scegli Mostra i dettagli del passaggio nel messaggio di errore per visualizzare il passaggio che ha causato l'errore.
Nella scheda Input e output della sezione Dettagli del passaggio, scegli l'interruttore Visualizzazione avanzata per visualizzare il percorso di trasferimento dei dati di input e output per uno stato selezionato.
Nella visualizzazione Grafico, assicurati che il credito applicato sia >= 5000? è selezionato ed effettua le seguenti operazioni:
Visualizza il valore di input dello stato nella casella di input.
Scegliete la scheda Definizione e osservate il JSON percorso specificato per il campo Variabile.
Il valore di input per il credito applicato è >= 5000? state è un valore numerico, mentre hai specificato il JSON percorso per il valore di input come.
$.Payload
Durante l'esecuzione della macchina a stati, loChoice
stato non può risolvere questo JSON percorso perché non esiste.
Modifica la macchina a stati per specificare il valore del campo Variabile come
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Eseguire il debug degli errori di espressione JSON del percorso durante l'applicazione dei filtri di input e output
Quando si utilizzano i filtri di input e output, è possibile che si verifichino errori di runtime dovuti alla specificazione di espressioni di percorso non valide. JSON
L'esempio seguente utilizza la macchina a WorkflowInputOutputstati creata nel Tutorial 5 e illustra uno scenario in cui si utilizza il ResultSelector
filtro per selezionare parti dell'output dell'attività.
Applica il
ResultSelector
filtro per scegliere una parte dell'output dell'attività per il passaggio Verifica dell'identità. A tale scopo, modificate la definizione della macchina a stati come segue:{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Esegui la macchina a stati.
Nella pagina Dettagli di esecuzione dell'esecuzione della macchina a stati, procedi come segue:
Scegliete Causa nel messaggio di errore per visualizzare il motivo dell'errore di esecuzione.
Scegli Mostra i dettagli del passaggio nel messaggio di errore per visualizzare il passaggio che ha causato l'errore.
Nel messaggio di errore, nota che il contenuto del nodo $.payload.body è una stringa di escape. JSON L'errore si è verificato perché non è possibile fare riferimento a una stringa utilizzando la notazione del percorso. JSON
Per fare riferimento al nodo $.payload.body.Message, procedi come segue:
Utilizzate la funzione
States.StringToJSON
intrinseca per convertire prima la stringa in un formato. JSONSpecificate il JSON percorso per il nodo $.payload.body.Message all'interno della funzione intrinseca.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Esegui nuovamente la macchina a stati.
Conclusioni e fasi successive
Complimenti! Hai raggiunto la fine di Tutorial sulle nozioni di base con Step Functions.
Rimozione
Ora che hai completato la Guida introduttiva, è buona norma ripulire (eliminare) tutte le risorse che non desideri più utilizzare. La pulizia AWS delle risorse impedisce al tuo account di incorrere in ulteriori addebiti.