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 rispetto a un'altra AWS il servizio esegue, ad esempio chiamandone un altro Servizio AWS oppureAPI. Le istanze di flussi di lavoro in esecuzione che eseguono attività sono chiamate esecuzioni in Step Functions.
Introduzione alle macchine a stati
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 chiamare AWS APIazioni di servizio derivanti dal 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 dei servizi:
|
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 descrive come i dati delle macchine a stati vengono formattati e utilizzati 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 un AWS Step Functions macchina a 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 il 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.
Invoke 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 verso cui avanzare.
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 AWS Step Functions prezzi
Leggi Consistency in Step Functions
Aggiornamenti delle macchine a stati in AWS Step Functions alla fine 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
nella AWS Step Functions APIRiferimento -
Aggiornare un flusso di lavoro inScopri come iniziare a usare Step Functions.