As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Especificando a saída de estado usando ResultPath em Step Functions
Gerenciando o estado e transformando dados
Esta página se refere JSONPath a. Recentemente, o Step Functions adicionou variáveis JSONata para gerenciar dados de estado e transformação.
Saiba mais sobre como transmitir dados com variáveis e transformar dados com JSONata.
A saída de um estado pode ser uma cópia de sua entrada, o resultado que ele produz (por exemplo, a saída da função do Lambda de um estado Task
) ou uma combinação da entrada e do resultado. Use ResultPath
para controlar qual combinação desses itens são passadas para o estado de saída.
Os seguintes tipos de estado podem gerar um resultado e podem incluir ResultPath:
Use ResultPath
para combinar um resultado de tarefa com entrada de tarefa, ou para selecionar um desses. O caminho que você fornece para ResultPath
controla quais informações passam para a saída.
nota
ResultPath
está limitado ao uso de caminhos de referência, que limitam o escopo, de modo que o caminho deve identificar apenas um único nó emJSON. Consulte Caminhos de referência no Linguagem de estados da Amazon.
Use ResultPath para substituir a entrada pelo resultado da tarefa
Se você não especificar umResultPath
, o comportamento padrão será o mesmo de"ResultPath": "$"
. O estado substituirá toda a entrada do estado pelo resultado da tarefa.
# 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
é usado para incluir conteúdo do resultado com a entrada, antes de transmiti-lo para a saída. Mas, se ResultPath
não for especificado, a ação padrão é substituir toda a entrada.
Descarte o resultado e mantenha a entrada original
Se você ResultPath
definir comonull
, o estado passará a entrada original para a saída. A carga de entrada do estado será copiada diretamente para a saída, sem considerar o resultado da tarefa.
# 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"
}
Use ResultPath para incluir o resultado com a entrada
Se você especificar um caminho para ResultPath, a saída do estado combinará a entrada do estado e o resultado da tarefa:
# 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!"
}
Você também pode inserir o resultado em um nó filho da entrada. Defina o ResultPath
da seguinte forma.
"ResultPath": "$.strings.lambdaresult"
Dada a seguinte entrada:
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }
O resultado da tarefa seria inserido como filho do strings
nó na entrada.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, Step Functions!" }, "who": "AWS Step Functions" }
A saída de estado agora inclui a entrada original JSON com o resultado como um nó filho.
Use ResultPath para atualizar um nó na entrada com o resultado
Se você especificar um nó existente para ResultPath, o resultado da tarefa substituirá esse nó existente:
# 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"
}
Use ResultPath para incluir erro e entrada em um Catch
Em alguns casos, talvez você queira preservar a entrada original com o erro. Use ResultPath
em um Catch
para incluir o erro com a entrada original, em vez de substituí-lo.
"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]
Se a declaração Catch
anterior detectar um erro, ela incluirá o resultado em um nó error
dentro da mesma entrada de estado. Por exemplo, com a seguinte entrada:
{"foo": "bar"}
A saída do estado ao detectar um erro é exibida a seguir.
{ "foo": "bar", "error": { "Error": "
Error here
" } }
Para obter mais informações sobre como tratar erros, consulte o seguinte: