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
Questa pagina fa riferimento a. JSONPath Step Functions ha recentemente aggiunto variabili e JSONata per gestire lo stato e trasformare i dati.
Scopri come passare dati con variabili e trasformare dati con JSONata.
L'output di uno stato può essere una copia dell'input, il risultato generato (ad esempio, l'output ottenuto da una funzione Lambda di uno stato Task
) o una combinazione dell'input e del risultato. Utilizza ResultPath
per controllare quale di queste combinazioni verrà passata all'output dello stato.
I tipi di stato seguenti possono generare un risultato e includere ResultPath:
Utilizza ResultPath
per combinare il risultato di un task con l'input del task o selezionare una di queste opzioni. Il percorso specificato in ResultPath
controlla le informazioni passate all'output.
Nota
ResultPath
si limita all'utilizzo di percorsi di riferimento, il che limita l'ambito, quindi il percorso deve identificare solo un singolo nodo in JSON. Consultare Percorsi di riferimento nella sezione Amazon States Language.
Utilizza ResultPath per sostituire l'input con il risultato dell'attività
Se non si specifica aResultPath
, il comportamento predefinito è lo stesso di"ResultPath": "$"
. Lo stato sostituirà l'intero input di stato con il risultato dell'attività.
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$"
# Task result
"Hello, Step Functions!"
# State Output
"Hello, Step Functions!"
Nota
ResultPath
viene utilizzato per includere il contenuto del risultato con l'input prima di passarlo all'output. Tuttavia, se ResultPath
non è specificato, l'azione predefinita consiste nel sostituire l'intero input.
Scarta il risultato e mantieni l'input originale
Se lo ResultPath
impostate sunull
, lo stato passerà l'input originale all'output. Il payload di input dello stato verrà copiato direttamente nell'output, indipendentemente dal risultato dell'attività.
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": null
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
ResultPath Da utilizzare per includere il risultato nell'input
Se specificate un percorso per ResultPath, l'output dello stato combinerà l'input dello stato e il risultato dell'attività:
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.taskresult"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions",
"taskresult" : "Hello, Step Functions!"
}
È anche possibile inserire il risultato in un nodo figlio dell'input. Impostare ResultPath
come segue.
"ResultPath": "$.strings.lambdaresult"
Dato il seguente input:
{
"comment": "An input comment.",
"strings": {
"string1": "foo",
"string2": "bar",
"string3": "baz"
},
"who": "AWS Step Functions"
}
Il risultato dell'attività verrebbe inserito come elemento strings
secondario del nodo nell'input.
{
"comment": "An input comment.",
"strings": {
"string1": "foo",
"string2": "bar",
"string3": "baz",
"lambdaresult": "Hello, Step Functions!"
},
"who": "AWS Step Functions"
}
L'output dello stato includerà ora il testo JSON di input originale con il risultato come nodo figlio.
Si usa ResultPath per aggiornare un nodo nell'input con il risultato
Se si specifica un nodo esistente per ResultPath, il risultato dell'attività sostituirà quel nodo esistente:
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.comment"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "Hello, Step Functions!",
"details": "Default example",
"who" : "Step Functions"
}
ResultPath Da utilizzare per includere sia l'errore che l'input in un Catch
In alcuni casi, può essere opportuno conservare l'input originale con l'errore. Per includere l'errore con l'input originale, anziché sostituirlo, utilizza ResultPath
in un'istruzione Catch
.
"Catch": [{
"ErrorEquals": ["States.ALL"],
"Next": "NextTask",
"ResultPath": "$.error"
}]
Se rileva un errore, l'istruzione Catch
precedente include il risultato in un nodo error
all'interno dell'input dello stato. Ad esempio, con l'input seguente:
{"foo": "bar"}
l'output dello stato in caso di rilevamento di un errore sarà il seguente.
{
"foo": "bar",
"error": {
"Error": "Error here
"
}
}
Per ulteriori informazioni sulla gestione degli errori, consulta i seguenti argomenti: