Visualizza le tracce X-Ray in 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à.

Visualizza le tracce X-Ray in Step Functions

In questo tutorial, imparerai a usare X-Ray per tracciare gli errori che si verificano durante l'esecuzione di una macchina a stati. È possibile utilizzarlo AWS X-Rayper visualizzare i componenti della macchina a stati, identificare i punti deboli delle prestazioni e risolvere le richieste che hanno provocato un errore. In questo tutorial, creerai diverse funzioni Lambda che generano errori in modo casuale, che potrai quindi tracciare e analizzare utilizzando X-Ray.

Il Creazione di una macchina a stati Step Functions che utilizza Lambda tutorial ti guida nella creazione di una macchina a stati che chiama una funzione Lambda. Se hai completato il tutorial, vai al passaggio 2 e usa il ruolo AWS Identity and Access Management (IAM) che hai creato in precedenza.

Fase 1: Creare un IAM ruolo per Lambda

Entrambi AWS Lambda AWS Step Functions possono eseguire codice e accedere a AWS risorse (ad esempio, dati archiviati nei bucket Amazon S3). Per mantenere la sicurezza, devi concedere a Lambda e Step Functions l'accesso a queste risorse.

Lambda richiede l'assegnazione di un ruolo AWS Identity and Access Management (IAM) quando si crea una funzione Lambda, allo stesso modo in cui Step Functions richiede l'assegnazione di un IAM ruolo quando si crea una macchina a stati.

La IAM console viene utilizzata per creare un ruolo collegato al servizio.

Per creare un ruolo (console)
  1. Accedi a AWS Management Console e apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/

  2. Nel riquadro di navigazione della IAM console, scegli Ruoli. Quindi seleziona Create role (Crea ruolo).

  3. Scegli il tipo AWS di ruolo Servizio, quindi scegli Lambda.

  4. Scegli il caso d'uso Lambda. I casi d'uso sono definiti dal servizio in modo da includere la policy di attendibilità richiesta dal servizio. Quindi scegliere Next: Permissions (Successivo: Autorizzazioni).

  5. Scegliere una o più policy di autorizzazione da collegare al ruolo (ad esempio, AWSLambdaBasicExecutionRole). Consultare Modello di autorizzazioni AWS Lambda.

    Selezionare la casella di controllo accanto alla policy che assegna le autorizzazioni da assegnare al ruolo, quindi scegliere Next: Review (Successivo: Rivedi).

  6. Immettere un nome di ruolo in Role name (Nome ruolo).

  7. (Facoltativo) In Role description (Descrizione ruolo) modifica la descrizione per il nuovo ruolo collegato ai servizi.

  8. Verificare il ruolo e quindi scegliere Create role (Crea ruolo).

Passaggio 2: creazione di una funzione Lambda

La funzione Lambda genererà errori o timeout casuali, producendo dati di esempio da visualizzare in X-Ray.

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 e scegli Crea funzione.

  2. Nella sezione Create function (Crea funzione), scegliere Author from scratch (Crea da zero).

  3. Nella sezione Informazioni di base, configura la tua funzione Lambda:

    1. Nel campo Function name (Nome funzione), immettere TestFunction1.

    2. Per Runtime, scegli Node.js 18.x.

    3. Per Role (Ruolo) selezionare Choose an existing role (Scegli un ruolo esistente).

    4. Per Ruolo esistente, seleziona il ruolo Lambda che hai creato in precedenza.

      Nota

      Se il IAM ruolo che hai creato non compare nell'elenco, il ruolo potrebbe richiedere ancora alcuni minuti per propagarsi in Lambda.

    5. Scegli Crea funzione.

      Quando viene creata la funzione Lambda, annota il relativo Amazon Resource Name (ARN) nell'angolo in alto a destra della pagina. Per esempio:

      arn:aws:lambda:us-east-1:123456789012:function:TestFunction1
  4. Copiate il codice seguente per la funzione Lambda nella sezione Codice funzione del TestFunction1pagina.

    function getRandomSeconds(max) { return Math.floor(Math.random() * Math.floor(max)) * 1000; } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } export const handler = async (event) => { if(getRandomSeconds(4) === 0) { throw new Error("Something went wrong!"); } let wait_time = getRandomSeconds(5); await sleep(wait_time); return { 'response': true } };

    Questo codice crea errori a tempo casuale, che verranno utilizzati per generare errori di esempio nella macchina a stati che possono essere visualizzati e analizzati utilizzando tracce a raggi X.

  5. Seleziona Salva.

Fase 3: Creare altre due funzioni Lambda

Crea altre due funzioni Lambda.

  1. Ripetere il passaggio 2 per creare altre due funzioni Lambda. Per la funzione successiva, in Nome funzione, immettereTestFunction2. Per l'ultima funzione, in Nome funzione, immettereTestFunction3.

  2. Nella console Lambda, verifica che ora siano disponibili tre funzioni Lambda,, TestFunction1 e. TestFunction2 TestFunction3

Fase 4: Creare una macchina a stati

In questo passaggio, utilizzerai la console Step Functions per creare una macchina a stati con tre Task stati. Ogni Task stato farà riferimento a una delle tre funzioni Lambda.

  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. In questo tutorial, scriverai la definizione Amazon States Language (ASL) della tua macchina a stati inEditor del codice. Per fare ciò, scegli Code.

  5. Rimuovi il codice boilerplate esistente e incolla il codice seguente. Nella definizione dello stato dell'attività, ricordati di sostituire l'esempio ARNs con le ARNs funzioni Lambda che hai creato.

    { "StartAt": "CallTestFunction1", "States": { "CallTestFunction1": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function1", "Catch": [ { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "CallTestFunction2" }, "CallTestFunction2": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function2", "Catch": [ { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "CallTestFunction3" }, "CallTestFunction3": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:test-function3", "TimeoutSeconds": 5, "Catch": [ { "ErrorEquals": [ "States.Timeout" ], "Next": "AfterTimeout" }, { "ErrorEquals": [ "States.TaskFailed" ], "Next": "AfterTaskFailed" } ], "Next": "Succeed" }, "Succeed": { "Type": "Succeed" }, "AfterTimeout": { "Type": "Fail" }, "AfterTaskFailed": { "Type": "Fail" } } }

    Questa è una descrizione della tua macchina a stati che utilizza Amazon States Language. Definisce tre Task stati denominatiCallTestFunction1, CallTestFunction2 eCallTestFunction3. Ciascuna richiama una delle tre funzioni Lambda. Per ulteriori informazioni, consultare Struttura di una macchina a stati.

  6. 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, inserisci il nome TraceFunctions.

  7. (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, in Configurazione aggiuntiva, scegli Abilita tracciamento X-Ray. Mantieni tutte le altre selezioni predefinite nelle impostazioni della macchina a stati.

    Se in precedenza hai creato un IAM ruolo con le autorizzazioni corrette per la tua macchina a stati e desideri utilizzarlo, in Autorizzazioni seleziona Scegli un ruolo esistente, quindi seleziona un ruolo dall'elenco. Oppure seleziona Inserisci un ruolo ARN e quindi fornisci un ruolo ARN per quel IAM ruolo.

  8. Nella finestra di dialogo Conferma creazione del ruolo, scegli 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 5: Esegui la macchina a stati

Le esecuzioni di macchine a stati sono casi in cui si esegue il flusso di lavoro per eseguire attività.

  1. Sul TraceFunctionsnella pagina, scegli Avvia esecuzione.

    Viene visualizzata la pagina New execution (Nuova esecuzione).

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

    1. (Facoltativo) Per identificare l'esecuzione, è possibile specificare un nome o utilizzare il nome di esecuzione generato di default.

      Nota

      Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono non ASCII caratteri. Poiché i nomi senza ASCII caratteri non funzionano con Amazon CloudWatch, ti consigliamo di utilizzare solo ASCII caratteri per tenere traccia delle metriche. CloudWatch

    2. Selezionare Start execution (Avvia esecuzione).

    3. 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, vederePagina dei dettagli di esecuzione: panoramica dell'interfaccia.

      Esegui diverse (almeno tre) esecuzioni.

  3. Una volta terminate le esecuzioni, segui il link alla mappa di tracciamento a raggi X. È possibile visualizzare la traccia mentre un'esecuzione è ancora in esecuzione, ma è consigliabile visualizzare i risultati dell'esecuzione prima di visualizzare la mappa di traccia a raggi X.

  4. Visualizza la mappa dei servizi per identificare dove si verificano gli errori, le connessioni con latenza elevata o le tracce delle richieste non riuscite. In questo esempio, puoi vedere quanto traffico riceve ciascuna funzione. TestFunction2è stato chiamato più spesso diTestFunction3, ed TestFunction1 è stato chiamato più del doppio diTestFunction2.

    La mappa del servizio indica lo stato di salute di ogni nodo colorandolo in base al rapporto delle chiamate concluse con successo rispetto a errori e malfunzionamenti:

    • Verde per le chiamate concluse con successo

    • Rosso per i malfunzionamenti del server (errori serie 500)

    • Giallo per gli errori client (errori serie 400)

    • Viola per gli errori di superamento dei limiti (429 Too Many Requests)

    Schermata di esempio illustrativa dei nodi di traccia X-Ray per tre funzioni di test.

    Puoi anche scegliere un nodo di servizio per visualizzare le richieste relative a quel nodo o un edge tra due nodi per visualizzare le richieste che hanno percorso quella connessione.

  5. Visualizza la mappa di tracciamento a raggi X per vedere cosa è successo per ogni esecuzione. La visualizzazione della sequenza temporale mostra una gerarchia di segmenti e sottosegmenti. La prima voce nell'elenco è il segmento, che rappresenta tutti i dati registrati tramite il servizio per una singola richiesta. Sotto il segmento sono presenti i sottosegmenti. Questo esempio mostra i sottosegmenti registrati dalle funzioni Lambda.

    Schermata di esempio illustrativa dei segmenti e dei sottosegmenti della sequenza temporale X-Ray per le funzioni di test.

    Per ulteriori informazioni sulla comprensione delle tracce a raggi X e sull'utilizzo di X-Ray with Step Functions, vedere Dati della richiesta Trace Step Functions in AWS X-Ray