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
.
Use o ResultPath para:
dica
Use o simulador de fluxo de dados no console do Step Functions
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.
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
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.
Use ResultPath para incluir o resultado com a entrada
O diagrama a seguir mostra como ResultPath
pode incluir o resultado com a entrada.
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.
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: