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 a stati, chiamate anche flussi di lavoro. I flussi di lavoro sono costituiti da una serie di passaggi basati sugli eventi.
Definisci un flusso di lavoro utilizzando Amazon States Language, noto anche comeASL. Facoltativamente, puoi utilizzare Workflow Studio, un designer visivo di flussi di lavoro, per creare e modificare i tuoi flussi di lavoro.
Ogni fase di un flusso di lavoro è denominata stato. Esistono due tipi di stati: gli stati del flusso e gli stati delle attività:
- Stati di flusso
-
Gli stati di flusso controllano il flusso di esecuzione dei passaggi. Ad esempio, gli stati Choice forniscono la logica condizionale, gli stati di attesa sospendono l'esecuzione del flusso di lavoro, gli stati Mappa eseguono i flussi di lavoro secondari per ogni elemento di un set di dati e gli stati Parallel creano rami separati nei flussi di lavoro.
- Stati delle attività
-
Gli stati delle attività rappresentano un'unità di lavoro svolta da un altro AWS servizio, ad esempio chiamando un altro Servizio AWS oAPI. Gli stati delle attività sono noti anche come Azioni. Puoi scegliere centinaia di azioni per eseguire il lavoro nei servizi AWS ed esterni. (Nota: per eseguire attività è inoltre possibile utilizzare lavoratori che non operano all'esterno di Step Functions. Per ulteriori informazioni, vedereAttività.)
![Esempio illustrativo dei componenti di un flusso di lavoro Step Functions.](images/state-machine-conceptual-jsonata.png)
Esecuzioni e gestione degli errori
Quando esegui i flussi di lavoro, Step Functions crea un'istanza del flusso di lavoro chiamata esecuzione. È possibile monitorare lo stato delle esecuzioni dei flussi di lavoro. Se si verifica un errore in un'esecuzione, il workflow potrebbe rilevarlo. A seconda del caso d'uso, è possibile reindirizzare l'esecuzione in un secondo momento per riprendere il flusso di lavoro.
Passaggio di dati
Facoltativamente, puoi fornire dati di input sotto forma di JSON testo ai tuoi flussi di lavoro. Ogni passaggio può passare i dati ai passaggi successivi utilizzando variabili e output di stato. I dati memorizzati nelle variabili possono essere utilizzati nei passaggi successivi. L'output dello stato diventa l'input per la fase successiva. Per ulteriori informazioni sul trasferimento di dati, consultaPassaggio di dati tra stati con variabili.
Al termine dei flussi di lavoro, la macchina a stati può facoltativamente produrre output, anche sotto forma di. JSON
Trasformazione dei dati
Gli stati e le macchine a stati possono trasformare i dati utilizzando un linguaggio di interrogazione. Il linguaggio di interrogazione consigliato è, JSONatatuttavia, quello delle macchine a stati create prima dell'utilizzo di re:Invent 2024. JSONPath Per garantire la compatibilità con le versioni precedenti, le vostre macchine a stati o i singoli stati devono scegliere di utilizzare il loro linguaggio di interrogazione. JSONata
È possibile riconoscere le macchine a JSONata stati e i singoli stati dal QueryLanguage
campo impostato su "»JSONata. Le macchine a stati e gli stati che JSONPath le utilizzano mancano di QueryLanguage
campo.
Gli stati che utilizzano JSONPath avranno campi di stato come Parametri InputPath ResultSelector, ResultPath, e OutputPath. Nelle definizioni delle macchine a JSONPath stati, vedrai anche i nomi dei campi che terminano con .$
e i valori preceduti da $.
e$$.
, entrambi i quali rappresentano percorsi. Nei percorsi, è possibile visualizzare varie funzioni intrinseche, ad esempio. States.MathAdd
Le funzioni intrinseche vengono utilizzate solo in. JSONPath
JSONatagli stati utilizzano i campi Argoments e Output. In questi campi opzionali, potresti vedere JSONata espressioni simili alle seguenti:"{% $type = 'local' %}"
. ConJSONata, puoi usare espressioni, operatori e funzioni. Per ulteriori informazioni, consulta Trasformazione dei dati con Step JSONata Functions.
Nota
È possibile utilizzare un solo linguaggio di interrogazione per stato. Non è possibile utilizzare combinazioni JSONPath diverse JSONata all'interno di un unico passaggio.
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 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 dei servizi con Step Functions. |
Tipo di integrazione del servizio |
|
Modello di integrazione dei servizi | Quando si chiama un Servizio AWS, 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
-
I numeri in formato JSON testo sono conformi alla JavaScript semantica. Questi numeri corrispondono in genere a valori -854 a doppia precisioneIEEE.
-
Quanto segue è un testo valido: JSON
-
Stringhe autonome delimitate da virgolette
-
Oggetti
-
Matrici
-
Numeri
-
Valori booleani
-
null
-
-
L'output di uno stato diventa l'input per lo stato successivo. Tuttavia, è possibile limitare gli stati in modo che funzionino su un sottoinsieme dei dati di input utilizzando Input and Output Processing.
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'StartExecution
azione quando si avvia un'esecuzione. È inoltre possibile passare i dati alla macchina a stati dalla console Step FunctionsStartAt
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 dei dettagli di esecuzione 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.
-
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 }); }
-
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 } } }
-
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:
-
AWS Lambda, utilizzando la
StartExecution
chiamata.
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.
Next
i 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 redriveun'esecuzione, è considerata una transizione di stato. Inoltre, tutti gli stati che vengono rieseguiti in un redrive sono anche considerate transizioni di stato.
Le regole seguenti si applicano agli stati in una macchina a stati:
-
Gli stati possono presentarsi 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. Lostart
stato è definito dal valore delStartAt
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:
-
UpdateStateMachine
nel AWS Step Functions APIReference