Gestione delle condizioni di errore utilizzando una macchina a stati Step Functions - AWS Step Functions

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

Gestione delle condizioni di errore utilizzando una macchina a stati Step Functions

In questo tutorial, crei un AWS Step Functions macchina a stati con un Stati di fallback campo. Il Catch campo utilizza un AWS Lambda funzione per rispondere con una logica condizionale basata sul tipo di messaggio di errore. Si tratta di una tecnica chiamata gestione degli errori di funzione.

Per ulteriori informazioni, consulta AWS Lambda errori di funzione in Node.js nel AWS Lambda Guida per gli sviluppatori.

Nota

Puoi anche creare macchine a stati che riprovano in base ai timeout o quelle che vengono utilizzate Catch per passare a uno stato specifico quando si verifica un errore o un timeout. Per esempi di queste tecniche di gestione degli errori, consultare Esempi di utilizzo di Retry e di Catch.

Fase 1: Creare una funzione Lambda che fallisce

Usa una funzione Lambda per simulare una condizione di errore.

Importante

Assicurati che la tua funzione Lambda sia sotto la stessa AWS account e Regione AWS come tua macchina statale.

  1. Apri il AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Scegli Crea funzione.

  3. Scegli Usa un progetto, step-functions entra nella casella di ricerca, quindi scegli il progetto Lancia un progetto di errore personalizzato.

  4. Nel campo Function name (Nome funzione), immettere FailFunction.

  5. Per Ruolo, mantieni la selezione predefinita (Crea un nuovo ruolo con autorizzazioni Lambda di base).

  6. Il codice seguente viene visualizzato nel riquadro del codice della funzione Lambda.

    exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };

    L'oggetto context restituisce il messaggio di errore This is a custom error!.

  7. Scegli Crea funzione.

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

    arn:aws:lambda:us-east-1:123456789012:function:FailFunction
  9. Seleziona Deploy (Implementa).

Fase 2: testare la funzione Lambda

Testa la tua funzione Lambda per vederla in funzione.

  1. Nella FailFunctionpagina, scegli la scheda Test, quindi scegli Test. Non è necessario creare un evento di test.

  2. Per esaminare i risultati del test (l'errore simulato), in Risultato dell'esecuzione, espandi Dettagli.

Fase 3: Creare una macchina a stati con un campo Catch

Usa la console Step Functions per creare una macchina a stati che utilizza uno Stato del flusso di lavoro delle attività stato con un Catch campo. Aggiungi un riferimento alla tua funzione Lambda nello stato Task. La macchina a stati richiama la funzione Lambda, che fallisce durante l'esecuzione. Step Functions riprova la funzione due volte utilizzando un backoff esponenziale tra un tentativo e l'altro.

  1. Apri la console Step Functions e scegli Crea macchina a stati.

  2. Nella finestra di dialogo Scegli un modello, seleziona Vuoto.

  3. Scegliete Seleziona per aprire Workflow Studio inmodalità di progettazione.

  4. Scegli Codice per aprire l'editor di codice. Nell'editor di codice, scrivi e modifichi la definizione Amazon States Language (ASL) dei tuoi flussi di lavoro.

  5. Incolla il codice seguente, ma sostituisci ARN la funzione Lambda che hai creato in precedenza nel Resource campo.

    { "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }

    Questa è una descrizione della tua macchina a stati che utilizza Amazon States Language. Definisce un singolo stato Task denominato CreateAccount. Per ulteriori informazioni, consultare Struttura di una macchina a stati.

    Per ulteriori informazioni sulla sintassi del campo Retry, consulta Esempi di macchine a stati che utilizzano Retry e Catch.

    Nota

    Gli errori non gestiti in Lambda vengono riportati come Lambda.Unknown nell'output degli errori. Questi includono out-of-memory errori e timeout delle funzioni. È possibile abbinare o States.TaskFailed gestire questi errori. Lambda.Unknown States.ALL Quando Lambda raggiunge il numero massimo di chiamate, l'errore è. Lambda.TooManyRequestsException Per ulteriori informazioni su Lambda Handled e sugli Unhandled errori, consulta FunctionError AWS Lambda Guida per gli sviluppatori.

  6. (Facoltativo) InVisualizzazione dei grafi, guarda la visualizzazione grafica in tempo reale del tuo flusso di lavoro.

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

    Per questo tutorial, digita Catchfailure.

  8. (Facoltativo) Nella configurazione della macchina a stati, specificate 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.

  9. 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 IAM ruolo 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 della IAM politica), Step Functions non può ripristinare le impostazioni originali in un secondo momento.

Passaggio 4: Esegui la macchina a stati

Dopo aver creato la macchina a stati, puoi eseguirla.

  1. Nella pagina Macchine a stati, scegli Catchfailure.

  2. Nella pagina Catchfailure, scegli Avvia esecuzione. Viene visualizzata la finestra di dialogo Avvia esecuzione.

  3. Nella finestra di dialogo Avvia esecuzione, effettuate le seguenti operazioni:

    1. (Facoltativo) Immettete un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.

      ASCIINomi diversi e registrazione

      Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono non ASCII caratteri. Poiché tali caratteri non funzioneranno con Amazon CloudWatch, ti consigliamo di utilizzare solo ASCII caratteri in modo da poter tenere traccia delle metriche. CloudWatch

    2. (Facoltativo) Nella casella Input, inserisci i valori di input nel JSON formato per eseguire il flusso di lavoro.

    3. Selezionare Start execution (Avvia esecuzione).

    4. 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 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, vederePanoramica dei dettagli di esecuzione.

    Ad esempio, per visualizzare il messaggio di errore personalizzato, scegliete il CreateAccountpassaggio nella visualizzazione Grafico, quindi scegliete la scheda Output.

    Schermata illustrativa dell'output con un messaggio di errore derivante dall'esecuzione.
    Nota

    Puoi conservare l'input di stato insieme all'errore utilizzando ResultPath. Per informazioni, consulta ResultPath Da utilizzare per includere sia l'errore che l'input in un Catch.