Especificando a saída de estado usando ResultPath em Step Functions - AWS Step Functions

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

ResultPathestá 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: