ResultPath - 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á.

ResultPath

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 é limitado a usar caminhos de referência, que limitam o escopo para que possa identificar somente um nó em JSON. Consulte Caminhos de referência no Linguagem de estados da Amazon.

Esses exemplos se baseiam na máquina de estado e função do Lambda descritas no tutorial Como criar uma máquina de estado Step Functions que usa Lambda. Trabalhe nesse tutorial e teste saídas diferentes tentando vários caminhos em um campo ResultPath.

dica

Use o simulador de fluxo de dados no console do Step Functions para testar a sintaxe do caminho JSON, entender melhor como os dados são manipulados em um estado e ver como os dados são transmitidos entre os estados.

Use ResultPath para substituir a entrada pelo resultado

Se você não especificar um ResultPath, o comportamento padrão será como se você tivesse especificado "ResultPath": "$". Como isso informa ao estado para substituir a entrada completa pelo resultado, o estado de entrada é totalmente substituído pelo resultado proveniente do resultado da tarefa.

O diagrama a seguir mostra como ResultPath pode substituir completamente a entrada pelo resultado da tarefa.

Substitua a entrada por ResultPath.

Use a máquina de estado e a função do Lambda descritas em Como criar uma máquina de estado Step Functions que usa Lambda e altere o tipo de integração do serviço para Integração SDK AWS para a função do Lambda. Para fazer isso, especifique o nome do recurso da Amazon (ARN) da função do Lambda no campo Resource do estado Task, conforme mostrado no exemplo a seguir. O uso da integração do AWS SDK garante que o resultado Task do estado contenha apenas a saída da função Lambda sem metadados.

{ "StartAt":"CallFunction", "States":{ "CallFunction": { "Type":"Task", "Resource":"arn:aws:lambda:us-east-2:123456789012:function:HelloFunction", "End": true } } }

Em seguida, transmita a seguinte entrada:

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

A função do Lambda fornece o seguinte resultado.

"Hello, AWS Step Functions!"
dica

Você pode visualizar esse resultados no console do Step Functions. Para fazer isso, na página de Detalhes da execução do console, escolha a função Lambda na Exibição em gráfico. Em seguida, escolha a guia Saída no painel Detalhes da etapa para ver esse resultado.

Se ResultPath não for especificado no estado, ou se "ResultPath": "$" for definido, a entrada do estado será substituída pelo resultado da função do Lambda e a saída do estado será a seguinte.

"Hello, AWS Step Functions!"
nota

ResultPath é usado para incluir conteúdo do resultado com a entrada, antes de transmiti-lo para a saída. No entanto, se ResultPath não for especificado, o padrão será substituir a entrada completa.

Descartar o resultado e manter a entrada original

Se você definir o ResultPath como null, ele passará a entrada original para a saída. Ao usar "ResultPath": null, a carga útil de entrada do estado será copiada diretamente para a saída, sem considerar o resultado.

O diagrama a seguir mostra como um ResultPath nulo copiará a entrada diretamente para a saída.

Copie a entrada para a saída com ResultPath.

Use ResultPath para incluir o resultado com a entrada

O diagrama a seguir mostra como ResultPath pode incluir o resultado com a entrada.

Incluir entrada com ResultPath

Usando a máquina de estado e a função do Lambda descritas no tutorial Como criar uma máquina de estado Step Functions que usa Lambda, podemos transmitir a entrada a seguir.

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

O resultado da função do Lambda é exibido a seguir.

"Hello, AWS Step Functions!"

Para preservar a entrada, insira o resultado da função do Lambda e passe o JSON combinado para o próximo estado. É possível definir ResultPath conforme descrito a seguir.

"ResultPath": "$.taskresult"

Isso inclui o resultado da função do Lambda com a entrada original.

{ "comment": "This is a test of input and output of a Task state.", "details": "Default behavior example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }

A saída da função do Lambda é anexada à entrada original como um valor para taskresult. A entrada, incluindo o novo valor, é passada para o próximo estado.

Você também pode inserir o resultado em um nó filho da entrada. Defina o ResultPath da seguinte forma.

"ResultPath": "$.strings.lambdaresult"

Inicie uma execução usando a entrada a seguir.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }

O resultado da função do Lambda é inserido como um filho do nó strings na entrada.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, AWS Step Functions!" }, "who": "AWS Step Functions" }

A saída de estado JSON agora inclui a entrada original com o resultado como um nó filho.

Use ResultPath para atualizar um nó na entrada com o resultado

O diagrama a seguir mostra como ResultPath pode atualizar o valor de nós na entrada JSON existente com valores do resultado da tarefa.

Substitua a entrada por ResultPath

Usando o exemplo da máquina de estado e da função do Lambda descrito no tutorial Como criar uma máquina de estado Step Functions que usa Lambda, podemos passar a entrada a seguir.

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

O resultado da função do Lambda é exibido a seguir.

Hello, AWS Step Functions!

Em vez de preservar a entrada e inserir o resultado como um novo nó no JSON, é possível substituir um nó existente.

Por exemplo, assim como a omissão ou a definição de "ResultPath": "$" substitui o nó inteiro, você pode especificar um nó individual a ser substituído pelo resultado.

"ResultPath": "$.comment"

Como o nó comment já existe na entrada de estado, definir ResultPath como "$.comment" substituirá esse nó na entrada pelo resultado da função do Lambda. Sem filtragem adicional por OutputPath, é passado para a saída o que está a seguir.

{ "comment": "Hello, AWS Step Functions!", "details": "Default behavior example", "who": "AWS Step Functions", }

O valor do nó comment, "This is a test of the input and output of a Task state.", é substituído pelo resultado da função do Lambda: "Hello, AWS Step Functions!" na saída de estado.

Use ResultPath para incluir erro e entrada em um Catch

O tutorial Tratar condições de erro usando uma máquina de estado Step Functions mostra como usar uma máquina de estado para capturar um erro. 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: