Aggiungi la logica condizionale al tuo flusso di lavoro 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à.

Aggiungi la logica condizionale al tuo flusso di lavoro Step Functions

Nell'argomento precedenteIntegra un servizio, hai integrato una funzione Lambda. In questo argomento verranno impostate le condizioni if-else in. Choice state Uno stato di scelta determina il percorso di esecuzione del flusso di lavoro in base a condizioni specifiche.

Aggiungerai una logica che sceglie un percorso in base all'importo del credito applicato restituito dalla funzione RandomNumberforCredit Lambda. Se il valore rientra in un limite di soglia, la richiesta di credito verrà approvata automaticamente e passerà alla fase successiva. Se il valore supera il limite di soglia, il flusso di lavoro richiederà l'approvazione umana per continuare il flusso di lavoro.

Imiterai una fase di interazione umana sospendendo l'esecuzione del flusso di lavoro fino alla restituzione di un token di attività. Per fare ciò, passerai un token di attività al AWS SDKintegrazione con Amazon Simple Notification Service. L'esecuzione del flusso di lavoro verrà sospesa fino a quando non riceverà il token dell'attività con una SendTaskSuccessAPIchiamata. Per informazioni sull'integrazione con altri servizi utilizzando i task token, consulta i modelli di integrazione dei Attendi una richiamata con Task Token servizi.

Quando hai creato il prototipo di macchina a stati, hai definito i passaggi di approvazione umana e di approvazione automatica. Ora devi creare un SNS argomento Amazon che riceva il token di callback. Quindi, si crea una funzione Lambda per implementare la funzionalità di callback. Infine, aggiorni il prototipo del tuo flusso di lavoro aggiungendone i dettagli Servizio AWS integrazioni.

Passaggio 1: crea un SNS argomento Amazon che riceva il token di callback

Per implementare la fase di interazione umana, pubblicherai su un argomento di Amazon Simple Notification Service e passerai il token dell'attività di callback a questo argomento. L'attività di callback sospenderà l'esecuzione del flusso di lavoro finché il token dell'operazione non verrà restituito con un payload.

  1. Apri la SNSconsole Amazon e crea un tipo di argomento Standard. Per informazioni sulla creazione di un argomento, consulta Create an Amazon SNS topic nella Amazon Simple Notification Service Developer Guide.

  2. Specificare il nome dell'argomento comeTaskTokenTopic.

  3. Assicurati di copiare l'argomento ARN e salvarlo in un file di testo. Avrai bisogno dell'argomento ARN mentre specifichi l'integrazione del servizio per lo stato Wait for human approval. Di seguito è riportato un esempio di argomento: ARN

    arn:aws:sns:us-east-2:123456789012:TaskTokenTopic
  4. Crea un abbonamento via e-mail per l'argomento, quindi conferma l'iscrizione. Per informazioni sulla sottoscrizione a un argomento, consulta Creare un abbonamento all'argomento nella Amazon Simple Notification Service Developer Guide.

Passaggio 2: creare una funzione Lambda per gestire il callback

Per gestire la funzionalità di callback, definirai una funzione Lambda e aggiungerai l'argomento SNS Amazon che hai creato nella Fase 1 come trigger per questa funzione. Quando pubblichi SNS sull'argomento Amazon con un task token, la funzione Lambda viene richiamata con il payload del messaggio pubblicato.

Passaggio 2.1: Creare la funzione Lambda per gestire il callback

In questa funzione, elaborerai la richiesta di approvazione del limite di credito e restituirai il risultato della richiesta come avvenuto con la SendTaskSuccessAPIchiamata. Questa funzione Lambda restituirà anche il token di attività ricevuto dall'argomento AmazonSNS.

Per semplicità, la funzione Lambda utilizzata per la fase di interazione umana approva automaticamente qualsiasi attività e restituisce il token dell'attività con una chiamata. SendTaskSuccess API È possibile denominare la funzione Lambda come. callback-human-approval

  1. In una nuova scheda o finestra, apri la console Lambda e crea una funzione Lambda Node.js intitolata. callback-human-approval Per informazioni sulla creazione di una funzione Lambda utilizzando la console, consulta Creare una funzione Lambda nella console nel AWS Lambda Guida per gli sviluppatori.

  2. Nella callback-human-approvalpagina, sostituisci il codice esistente nell'area del codice sorgente con il codice seguente.

    // Lambda function that will automatically approve any task // in a message published to an Amazon SNS topic console.log('Loading function'); const AWS = require('aws-sdk'); const resultMessage = "Successful"; export const handler = async (event) => { const stepfunctions = new AWS.StepFunctions(); let message = JSON.parse(event.Records[0].Sns.Message); let taskToken = message.TaskToken; console.log('Message received from SNS:', message); console.log('Task token: ', taskToken); // Return task token to Step Functions let params = { output: JSON.stringify(resultMessage), taskToken: taskToken }; console.log('JSON Returned to Step Functions: ', params); let myResult = await stepfunctions.sendTaskSuccess(params).promise(); console.log('State machine - callback completed..'); return myResult; };
  3. Tieni aperta questa finestra ed esegui i passaggi indicati nella sezione successiva per ulteriori azioni.

Passaggio 2.2: aggiungere l'SNSargomento Amazon come trigger per la funzione Lambda

Quando pubblichi SNS sull'argomento Amazon con un task token, la funzione Lambda viene richiamata con il payload del messaggio pubblicato. Per ulteriori informazioni sulla configurazione dei trigger per le funzioni Lambda, consulta Configurazione dei trigger nella AWS Lambda Guida per gli sviluppatori.

  1. Nella sezione Panoramica delle funzioni della funzione callback-human-approval Lambda, scegli Aggiungi trigger.

  2. Dall'elenco a discesa dei trigger, scegli SNScome trigger.

  3. Per SNSargomento, inizia a digitare il nome dell'SNSargomento Amazon che hai creato nel passaggio 1 di questo tutorial e selezionalo dall'elenco a discesa che appare.

  4. Scegli Aggiungi.

  5. Tieni aperta questa finestra ed esegui i passaggi nella sezione successiva per ulteriori azioni.

Fase 2.3: Fornire le autorizzazioni necessarie per il ruolo della funzione IAM Lambda

È necessario fornire alla funzione callback-human-approval Lambda le autorizzazioni per accedere a Step Functions per restituire il token dell'attività insieme alla chiamata. SendTaskSucess API

  1. Nella callback-human-approvalpagina, scegli la scheda Configurazione, quindi scegli Autorizzazioni.

  2. In Ruolo di esecuzione, scegli il nome del ruolo per accedere a AWS Identity and Access Management pagina Ruoli della console.

  3. Per aggiungere l'autorizzazione richiesta, scegli Aggiungi autorizzazioni, quindi scegli Allega politiche.

  4. Nella casella di ricerca, digita AWSStepFunctions e premi Invio.

  5. Scegli AWSStepFunctionsFullAccesse scorri verso il basso per scegliere Allega politiche. Ciò aggiunge la politica contenente l'autorizzazione necessaria per il ruolo della funzione callback-human-approval Lambda.

Fase 3: Aggiorna il flusso di lavoro: aggiungi la logica delle condizioni if-else nello stato Choice

Nella console Step Functions, definisci la logica condizionale per il tuo flusso di lavoro utilizzando lo Choice stato. Se l'output restituito dalla funzione RandomNumberforCredit Lambda è inferiore a 5000, il credito richiesto viene approvato automaticamente. Se l'output restituito è maggiore o uguale a 5000, l'esecuzione del flusso di lavoro procede alla fase di interazione umana per l'approvazione del limite di credito.

Nello Choice stato, si utilizza un operatore di confronto per confrontare una variabile di input con un valore specifico. È possibile specificare la variabile di input come input di esecuzione all'avvio dell'esecuzione di una macchina a stati o utilizzare l'output di un passaggio precedente come input per il passaggio corrente. Per impostazione predefinita, l'output di un passaggio viene memorizzato in una variabile Payload denominata. Per utilizzare il valore della Payload variabile per il confronto nello Choice stato, utilizzate la $ sintassi illustrata nella procedura seguente.

Per informazioni su come le informazioni fluiscono da uno stato all'altro e su come specificare input e output nei flussi di lavoro, consulta and. Configura input e output Elaborazione di input e output

Nota

Se lo Choice stato utilizza una variabile di input specificata nell'input di esecuzione della macchina a stati per il confronto, utilizzate la $.variable_name sintassi per eseguire il confronto. Ad esempio, per confrontare una variabile, ad esempiomyAge, utilizzate la sintassi$.myAge.

Poiché in questo passaggio, lo Choice stato riceverà input dallo stato Get credit limit, utilizzerai la $ sintassi per la configurazione dello Choice stato. Per scoprire come differisce il risultato dell'esecuzione della macchina a stati quando si utilizza la $.variable_name sintassi nella configurazione dello Choice stato per fare riferimento all'output di un passaggio precedente, consultate la Esecuzione del debug del percorso non valido Errore dello stato di scelta sezione del Tutorial 8.

Per aggiungere la logica delle condizioni if-else usando lo stato Choice
  1. Apri la finestra della console Step Functions contenente il prototipo di workflow in Creazione di una macchina a stati cui hai creato.

  2. Scegli il credito applicato >= 5000? state e nella scheda Configurazione, specificate la logica condizionale come segue:

    1. In Regole di scelta, scegliete l'icona Modifica nel riquadro Regola #1 per definire la regola di prima scelta.

    2. Scegli Aggiungi condizione.

    3. Nella finestra di dialogo Condizioni per la regola #1, per Variabile, immettete$.

    4. Per Operatore, choose è minore di.

    5. Per Valore, scegli Numero costante, quindi inserisci 5000 nel campo accanto all'elenco a discesa Valore.

    6. Scegli Salva condizioni.

    7. Per lo stato successivo è: nell'elenco a discesa, scegli Limite di approvazione automatica.

    8. Scegli Aggiungi nuova regola di scelta, quindi definisci la regola di seconda scelta quando l'importo del credito è maggiore o uguale a 5000 ripetendo i passaggi secondari da 2.b a 2.f. Per Operatore, choose è maggiore o uguale a.

    9. Per l'elenco a discesa Quindi lo stato successivo è:, scegli Attendi l'approvazione umana.

    10. Nella casella Regola predefinita, scegli l'icona Modifica per definire la regola di scelta predefinita, quindi scegli Attendi l'approvazione umana dall'elenco a discesa Stato predefinito. Definisci la regola di default per specificare lo stato successivo verso cui passare se nessuna delle condizioni dello stato di scelta risulta vera o falsa.

  3. Configura lo stato di attesa dell'approvazione umana come segue:

    1. Nella scheda Configurazione, per Argomento, inizia a digitare il nome dell'SNSargomento Amazon e scegli il nome così come appare nell'elenco a discesa. TaskTokenTopic

    2. Per Messaggio, scegli Inserisci messaggio dall'elenco a discesa. Nel campo Messaggio, specifichi il messaggio che desideri pubblicare sull'SNSargomento Amazon. Per questo tutorial, pubblichi un token di attività come messaggio.

      Un token di attività consente di sospendere un flusso di lavoro Step Functions di tipo Standard fino al completamento di un processo esterno e alla restituzione del token di attività. Quando si specifica uno stato dell'attività come attività di callback specificando il modello di integrazione del .waitForTaskToken servizio, viene generato un token di attività che viene inserito nell'oggetto di contesto all'avvio dell'attività. L'oggetto context è una JSON struttura interna disponibile durante l'esecuzione e contiene informazioni sulla macchina a stati e sulla sua esecuzione. Per ulteriori informazioni sugli oggetti contestuali, vedereOggetto Context.

    3. Nella casella visualizzata, inserisci quanto segue come messaggio:

      { "TaskToken.$": "$$.Task.Token" }
    4. Seleziona la casella di controllo Attendi la richiamata.

    5. Scegli Fine nella finestra di dialogo che appare.

  4. Tieni aperta questa finestra e passa all'argomento successivo.

Passaggi successivi

Nel prossimo argomento, Definire attività parallele imparerai come eseguire più attività in parallelo.