Scopri di più sulle macchine a stati 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à.

Scopri di più sulle macchine a stati in Step Functions

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 rappresenta un'unità di lavoro svolta da un altro AWS servizio, ad esempio la chiamata a un altro AWS servizio oAPI. Le istanze di flussi di lavoro in esecuzione che eseguono attività sono chiamate esecuzioni in Step Functions.

Esempio illustrativo di un diagramma del flusso di lavoro Step Functions.

Concetti chiave

Di seguito viene fornita una panoramica dei termini chiave di Step Functions relativi al contesto.

Termine Descrizione
Flusso di lavoro Una sequenza di passaggi che spesso riflette un processo aziendale.
States

Singoli passaggi della macchina a stati in grado di prendere decisioni in base all'input, eseguire azioni da tali input e passare l'output ad altri stati.

Per ulteriori informazioni, consulta Scoperta degli stati del flusso di lavoro da utilizzare in Step Functions.

Workflow Studio

Un designer visivo di flussi di lavoro che ti aiuta a prototipare e creare flussi di lavoro più velocemente.

Per ulteriori informazioni, consulta Sviluppo di flussi di lavoro in Step Functions Workflow Studio.

Macchina a stati

Flusso di lavoro definito utilizzando JSON testo che rappresenta i singoli stati o passaggi del flusso di lavoro insieme a campi, ad esempio StartAtTimeoutSeconds, e. Version

Per ulteriori informazioni, consulta Struttura della macchina a stati nei flussi di lavoro di Amazon States Language for Step Functions.

Amazon States Language

Un linguaggio strutturato e JSON basato utilizzato per definire le macchine a stati. ConASL, si definisce una raccolta di stati che possono funzionare (Taskstato), si determina a quali stati passare a quello successivo (Choicestato) e si interrompe un'esecuzione con un errore (Failstato).

Per ulteriori informazioni, consulta Utilizzo di Amazon States Language per definire i flussi di lavoro Step Functions.

Configurazione di input e output

Gli stati di un flusso di lavoro ricevono JSON i dati come input e in genere li passano JSON come output allo stato successivo. Step Functions fornisce filtri per controllare il flusso di dati tra gli stati.

Per ulteriori informazioni, consulta Elaborazione di input e output in Step Functions.

Integrazione dei servizi

Puoi richiamare API azioni AWS di servizio dal tuo flusso di lavoro.

Per ulteriori informazioni, consulta Integrazione di altri servizi con Step Functions.

Tipo di integrazione del servizio
  • AWS SDKintegrazioni: modo standard per richiamare una qualsiasi delle oltre AWS servizi duecentopiù di novemila API azioni direttamente dalla tua macchina a stati.

  • Integrazioni ottimizzate: integrazioni personalizzate che semplificano le chiamate e lo scambio di dati con determinati servizi. Ad esempio, Lambda Invoke convertirà automaticamente il Payload campo della risposta da una JSON stringa di escape in un oggetto. JSON

Modello di integrazione dei servizi

Quando si chiama un AWS servizio, si utilizza uno dei seguenti modelli di integrazione del servizio:

Esecuzione

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

Per ulteriori informazioni, consulta Avvio delle esecuzioni di macchine a stati in Step Functions.

Dati delle macchine a stati

I dati delle macchine a stati assumono le forme seguenti:

  • Input iniziale in una macchina a stati

  • Dati passati tra gli stati

  • Output di una macchina a stati

Questa sezione illustra il formato e l'utilizzo dei dati delle macchine a stati in AWS Step Functions.

Formato dei dati

I dati delle macchine a stati sono rappresentati da JSON testo. È possibile fornire valori a una macchina a stati utilizzando qualsiasi tipo di dati supportato daJSON.

Nota

Input/output delle macchine a stati

È possibile fornire i dati di input iniziali a una macchina a AWS Step Functions stati in due modi. È possibile passare i dati a un'StartExecutionazione quando si avvia un'esecuzione. È inoltre possibile passare i dati alla macchina a stati dalla console Step Functions. I dati iniziali vengono passati allo stato StartAt della macchina a stati. Se viene fornito alcun input, per default viene utilizzato un oggetto vuoto ({}).

L'output dell'esecuzione viene restituito dall'ultimo stato (terminal). Questo output appare come JSON testo nel risultato dell'esecuzione.

Per i flussi di lavoro standard, è possibile recuperare i risultati dell'esecuzione dalla cronologia di esecuzione utilizzando chiamanti esterni, come l'azione. DescribeExecution È possibile visualizzare i risultati dell'esecuzione sulla console Step Functions.

Per Express Workflows, se hai abilitato la registrazione, puoi recuperare i risultati da CloudWatch Logs o visualizzare ed eseguire il debug delle esecuzioni nella console Step Functions. Per ulteriori informazioni, consulta Utilizzo di CloudWatch Logs per registrare la cronologia delle esecuzioni in Step Functions e Visualizzazione e debug delle esecuzioni nella console Step Functions.

È inoltre necessario considerare le quote relative alla propria macchina a stati. Per ulteriori informazioni, consulta Quote di servizio Step Functions

Input/output degli stati

L'input di ogni stato è costituito dal JSON testo dello stato precedente o, per lo StartAt stato, dall'input nell'esecuzione. Alcuni stati del controllo di flusso ripetono l'input nell'output.

Nell'esempio seguente, la macchina a stati aggiunge due numeri insieme.

  1. Definire la AWS Lambda funzione.

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. Definisci la macchina a stati .

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. Inizia un'esecuzione con il JSON testo seguente.

    { "numbers": [3, 4] }

    Lo Add stato riceve il JSON testo e lo passa alla funzione Lambda.

    La funzione Lambda restituisce il risultato del calcolo allo stato.

    Lo stato restituisce il valore seguente nell'output.

    { "result": 7 }

    Poiché Add è anche lo stato finale nella macchina a stati, questo valore viene restituito come output della macchina a stati.

    Se lo stato finale non restituisce alcun output, la macchina restituisce un oggetto vuoto ({}).

Per ulteriori informazioni, consulta Elaborazione di input e output in Step Functions.

Richiama AWS Step Functions da altri servizi

È possibile configurare diversi altri servizi per richiamare macchine a stati. In base al tipo di flusso di lavoro della macchina a stati, è possibile richiamare le macchine a stati in modo asincrono o sincrono. Per richiamare le macchine a stati in modo sincrono, usa la StartSyncExecution API chiamata o l'integrazione di Amazon API Gateway con Express Workflows. Con la chiamata asincrona, Step Functions sospende l'esecuzione del flusso di lavoro finché non viene restituito un token di attività. Tuttavia, l'attesa di un task token rende il flusso di lavoro sincrono.

I servizi che è possibile configurare per richiamare Step Functions includono:

Le chiamate di Step Functions sono regolate dalla StartExecution quota. Per ulteriori informazioni, consultare:

Transizioni nelle macchine a stati

Quando si avvia una nuova esecuzione della macchina a stati, il sistema inizia con lo stato a cui si fa riferimento nel campo di primo livelloStartAt. Questo campo, fornito come stringa, deve corrispondere esattamente, maiuscole e minuscole, al nome di uno stato nel flusso di lavoro.

Dopo l'esecuzione di uno stato, AWS Step Functions utilizza il valore del Next campo per determinare lo stato successivo a cui passare.

Nexti campi specificano anche i nomi degli stati sotto forma di stringhe. Questa stringa fa distinzione tra maiuscole e minuscole e deve corrispondere esattamente al nome di uno stato specificato nella descrizione della macchina a stati

Lo stato seguente, ad esempio, include una transizione a NextState.

"SomeState" : { ..., "Next" : "NextState" }

La maggior parte degli stati consente una sola regola di transizione con il Next campo. Tuttavia, alcuni stati di controllo del flusso, come uno Choice stato, consentono di specificare più regole di transizione, ognuna con il proprio campo. Next Amazon States Language fornisce dettagli su ogni tipo di stato che è possibile specificare, con informazioni su come specificare le transizioni.

Gli stati possono contenere più transizioni in ingresso da altri stati.

Il processo si ripete finché non raggiunge uno stato terminale (uno stato con "Type": Succeed"Type": Fail, o"End": true) o si verifica un errore di runtime.

Quando si redriveesegue un'esecuzione, viene considerata una transizione di stato. Inoltre, tutti gli stati che vengono eseguiti nuovamente in a redrive sono considerati transizioni di stato.

Le regole seguenti si applicano agli stati in una macchina a stati:

  • Gli stati possono verificarsi in qualsiasi ordine all'interno del blocco che lo racchiude. Tuttavia, l'ordine in cui sono elencati non influisce sull'ordine in cui vengono eseguiti. che dipende dal contenuto degli stati stessi.

  • All'interno di una macchina a stati, può esserci un solo stato designato come start stato. Lo start stato è definito dal valore del StartAt campo nella struttura di primo livello.

  • A seconda della logica della macchina a stati, ad esempio, se la macchina a stati ha più rami logici, è possibile avere più di uno end stato.

  • Se la macchina a stati è composta da un solo stato, può essere sia lo stato iniziale che quello finale.

Transizioni nello stato della mappa distribuita

Quando utilizzi lo Map stato in modalità Distribuita, ti verrà addebitata una transizione di stato per ogni esecuzione del workflow secondario avviata dallo stato della Mappa Distribuita. Quando utilizzi lo Map stato in modalità Inline, non ti viene addebitata una transizione di stato per ogni iterazione dello stato della Mappa in linea.

È possibile ottimizzare i costi utilizzando lo Map stato in modalità Distribuita e includere un flusso di lavoro annidato nella definizione dello stato. Map Lo stato Distributed Map aggiunge inoltre ulteriore valore quando si avviano esecuzioni secondarie di workflow di tipo Express. Step Functions memorizza la risposta e lo stato delle esecuzioni dei flussi di lavoro secondari Express, il che riduce la necessità di archiviare i dati di esecuzione nei CloudWatch log. Puoi anche accedere ai controlli di flusso disponibili con uno stato Distributed Map, come la definizione di soglie di errore o il raggruppamento di un gruppo di elementi. Per informazioni sui prezzi di Step Functions, consulta la pagina AWS Step Functions dei prezzi.

Leggi Consistency in Step Functions

Gli aggiornamenti delle macchine a stati in definitiva AWS Step Functions sono coerenti. Tutte le StartExecution chiamate entro pochi secondi utilizzeranno la definizione aggiornata e roleArn (l'Amazon Resource Name per il IAM ruolo). Le esecuzioni avviate immediatamente dopo la chiamata di UpdateStateMachine potrebbero utilizzare la definizione della macchina a stati e il valore roleArn precedenti.

Per ulteriori informazioni, consulta gli argomenti seguenti: