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à.
Gestione dello stato e trasformazione dei dati
Scopri come passare dati tra stati con variabili e Trasformare dati con. JSONata
Ogni stato prende una decisione o esegue un'azione in base all'input che riceve. Nella maggior parte dei casi, passa quindi l'output ad altri stati. In Workflow Studio, potete configurare il modo in cui uno stato filtra e manipola i dati di input e output nelle schede Input e Output del pannello. Pannello Inspector Utilizzate i collegamenti Info per accedere alla guida contestuale per la configurazione di input e output.

Per informazioni dettagliate su come Step Functions elabora input e output, vedereElaborazione di input e output in Step Functions.
Configurare l'input in uno stato
Ogni stato riceve l'input dallo stato precedente come JSON. Se desideri filtrare l'input, puoi utilizzare il InputPath
filtro nella scheda Input del Pannello Inspector pannello. InputPath
È una stringa, che inizia con$
, che identifica un nodo JSON specifico. Questi sono chiamati percorsi di riferimento e seguono JsonPath la sintassi.
Per filtrare l'input:
-
Scegli Filtra input con InputPath.
-
Inserisci un valore valido JsonPath
per il InputPath
filtro. Ad esempio$.data
.
Il InputPath
filtro verrà aggiunto al flusso di lavoro.
Esempio 1: utilizzo del InputPath filtro in Workflow Studio
Supponiamo che l'input del tuo stato includa i seguenti dati JSON.
{
"comment": "Example for InputPath",
"dataset1": {
"val1": 1,
"val2": 2,
"val3": 3
},
"dataset2": {
"val1": "a",
"val2": "b",
"val3": "c"
}
}
Per applicare il InputPath
filtro, scegli Filtra input con InputPath, quindi inserisci un percorso di riferimento appropriato. Se inserite$.dataset2.val1
, il seguente codice JSON viene passato come input allo stato.
{"a"}
Un percorso di riferimento può anche avere una selezione di valori. Se i dati a cui fai riferimento sono { "a":
[1, 2, 3, 4] }
e applichi il percorso di riferimento $.a[0:2]
come InputPath
filtro, il risultato è il seguente.
[ 1, 2 ]
Stato del flusso di lavoro paralleloStato del flusso di lavoro della mappa, e gli stati di Passare lo stato del workflow flusso dispongono di un'opzione di filtro di input aggiuntiva nella scheda Input. Parameters
Questo filtro ha effetto dopo il InputPath filtro e può essere utilizzato per creare un oggetto JSON personalizzato costituito da una o più coppie chiave-valore. I valori di ogni coppia possono essere valori statici, possono essere selezionati dall'input o possono essere selezionati da un percorso. Accesso ai dati di esecuzione dall'oggetto Context in Step Functions
Nota
Per specificare che un parametro utilizza un percorso di riferimento per puntare a un nodo JSON nell'input, il nome del parametro deve terminare con.$
.
Esempio 2: creazione di un input JSON personalizzato per Parallel state
Supponiamo che i seguenti dati JSON siano l'input per uno stato parallelo.
{
"comment": "Example for Parameters",
"product": {
"details": {
"color": "blue",
"size": "small",
"material": "cotton"
},
"availability": "in stock",
"sku": "2317",
"cost": "$23"
}
}
Per selezionare parte di questo input e passare ulteriori coppie chiave-valore con un valore statico, puoi specificare quanto segue nel campo Parametri, nella scheda Input dello stato Parallelo.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size.$": "$.product.details.size",
"exists.$": "$.product.availability",
"StaticValue": "foo"
}
}
Il risultato saranno i seguenti dati JSON.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size": "small",
"exists": "in stock",
"StaticValue": "foo"
}
}
Configura l'output di uno stato
Ogni stato produce un output JSON che può essere filtrato prima di passare allo stato successivo. Sono disponibili diversi filtri, ognuno dei quali influisce sull'output in modo diverso. I filtri di output disponibili per ogni stato sono elencati nella scheda Output del pannello Inspector. Per Stato del flusso di lavoro delle attività gli stati, tutti i filtri di output selezionati vengono elaborati nel seguente ordine:
-
ResultSelector
: utilizzate questo filtro per manipolare il risultato dello stato. È possibile creare un nuovo oggetto JSON con parti del risultato. -
Specificazione dello stato dell'output utilizzando ResultPath in Step Functions
: utilizzate questo filtro per selezionare una combinazione dell'input dello stato e del risultato dell'attività da passare all'output. -
Filtraggio dell'output dello stato utilizzando OutputPath
: Usa questo filtro per filtrare l'output JSON e scegliere quali informazioni del risultato verranno passate allo stato successivo.
Usa ResultSelector
ResultSelector
è un filtro di output opzionale per i seguenti stati:
-
Stato del flusso di lavoro delle attivitàstati, che sono tutti gli stati elencati nella scheda Azioni diStati del browser.
-
Stato del flusso di lavoro della mappastati, nella scheda Flow del browser States.
-
Stato del flusso di lavoro parallelostates, nella scheda Flow del browser States.
ResultSelector
può essere usato per costruire un oggetto JSON personalizzato costituito da una o più coppie chiave-valore. I valori di ogni coppia possono essere valori statici o selezionati dal risultato dello stato con un percorso.
Nota
Per specificare che un parametro utilizza un percorso per fare riferimento a un nodo JSON nel risultato, il nome del parametro deve terminare con.$
.
Esempio di utilizzo ResultSelector del filtro
In questo esempio, viene utilizzata ResultSelector
per manipolare la risposta della chiamata API Amazon CreateCluster EMR per uno stato Amazon CreateCluster
EMR. Di seguito è riportato il risultato della chiamata all'CreateCluster
API Amazon EMR.
{
"resourceType": "elasticmapreduce",
"resource": "createCluster.sync",
"output": {
"SdkHttpMetadata": {
"HttpHeaders": {
"Content-Length": "1112",
"Content-Type": "application/x-amz-JSON-1.1",
"Date": "Mon, 25 Nov 2019 19:41:29 GMT",
"x-amzn-RequestId": "1234-5678-9012"
},
"HttpStatusCode": 200
},
"SdkResponseMetadata": {
"RequestId": "1234-5678-9012"
},
"ClusterId": "AKIAIOSFODNN7EXAMPLE"
}
}
Per selezionare parte di queste informazioni e passare una coppia chiave-valore aggiuntiva con un valore statico, specifica quanto segue nel ResultSelectorcampo, nella scheda Output dello stato.
{
"result": "found",
"ClusterId.$": "$.output.ClusterId",
"ResourceType.$": "$.resourceType"
}
L'utilizzo ResultSelector
produce il seguente risultato.
{
"result": "found",
"ClusterId": "AKIAIOSFODNN7EXAMPLE",
"ResourceType": "elasticmapreduce"
}
Usa ResultPath
L'output di uno stato può essere una copia del suo input, il risultato che produce o una combinazione del suo input e del suo risultato. Utilizza ResultPath
per controllare quale di queste combinazioni verrà passata all'output dello stato. Per ulteriori casi d'uso diResultPath
, vedereSpecificazione dello stato dell'output utilizzando ResultPath in Step Functions.
ResultPath
è un filtro di output opzionale per i seguenti stati:
-
Stato del flusso di lavoro delle attivitàstati, che sono tutti gli stati elencati nella scheda Azioni del browser Stati.
-
Stato del flusso di lavoro della mappastati, nella scheda Flow del browser States.
-
Stato del flusso di lavoro parallelostates, nella scheda Flow del browser States.
-
Passare lo stato del workflowstates, nella scheda Flow del browser States.
ResultPath
può essere usato per aggiungere il risultato all'input dello stato originale. Il percorso specificato indica dove aggiungere il risultato.
Esempio di utilizzo ResultPath del filtro
Supponiamo che quanto segue sia l'input di uno stato di Task.
{
"details": "Default example",
"who": "AWS Step Functions"
}
Il risultato dello stato dell'attività è il seguente.
Hello, AWS Step Functions
È possibile aggiungere questo risultato all'input dello stato applicando ResultPath
e immettendo un percorso di riferimento che indichi dove aggiungere il risultato, ad esempio$.taskresult
:
Con ciòResultPath
, quanto segue è il JSON che viene passato come output dello stato.
{
"details": "Default example",
"who": "AWS Step Functions",
"taskresult": "Hello, AWS Step Functions!"
}
Usa OutputPath
Il OutputPath
filtro ti consente di filtrare le informazioni indesiderate e di passare solo la parte di JSON di cui hai bisogno. OutputPath
È una stringa, che inizia con$
, che identifica i nodi all'interno del testo JSON.
Esempio di utilizzo del filtro OutputPath
Immagina che una chiamata all'API Lambda Invoke restituisca i metadati oltre al risultato della funzione Lambda.
{
"ExecutedVersion": "$LATEST",
"Payload": {
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
},
"SdkHttpMetadata": {
"AllHttpHeaders": {
"X-Amz-Executed-Version": ["$LATEST"]
...
Puoi usarla OutputPath
per filtrare i metadati aggiuntivi. Per impostazione predefinita, il valore del OutputPathfiltro per gli stati Lambda Invoke creati tramite Workflow Studio è. $.Payload
Questo valore predefinito rimuove i metadati aggiuntivi e restituisce un output equivalente all'esecuzione diretta della funzione Lambda.
L'esempio di risultato dell'attività Lambda Invoke e il valore di $.Payload
per il filtro Output passano i seguenti dati JSON come output.
{
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
}
Nota
Il OutputPath
filtro è l'ultimo filtro di output ad avere effetto, quindi se utilizzi filtri di output aggiuntivi come ResultSelector
oResultPath
, dovresti modificare di conseguenza il valore predefinito di $.Payload
per il OutputPath
filtro.