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á.
Exemplo: Manipulação de dados de estado em fluxos de trabalho do Step Functions
Este tópico contém exemplos de como manipular a entrada e a saída de estado JSON usando os OutputPath campos InputPath ResultPath, e.
Qualquer estado que não seja Estado de falha do fluxo de trabalho ou Estado bem-sucedido do fluxo de trabalho pode incluir os campos de processamento de entrada e saída, como InputPath
, ResultPath
ou OutputPath
. Além disso, os estados Aguardar estado do fluxo de trabalho e Escolha o estado do fluxo de trabalho não são compatíveis com o campo ResultPath
. Com esses campos, você pode usar JsonPath
Você também pode usar o Parameters
campo para manipular os JSON dados à medida que eles se movem pelo seu fluxo de trabalho. Para obter informações sobre como utilizar o Parameters
, consulte Manipule dados de estado usando parâmetros nos fluxos de trabalho do Step Functions.
Por exemplo, comece com o AWS Lambda função e máquina de estado descritas no Como criar uma máquina de estado Step Functions que usa Lambda tutorial. Modifique a máquina de estado para que ela inclua o InputPath
, o ResultPath
e o OutputPath
a seguir.
{
"Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
",
"InputPath": "$.lambda",
"ResultPath": "$.data.lambdaresult",
"OutputPath": "$.data",
"End": true
}
}
}
Inicie uma execução usando a entrada a seguir.
{
"comment": "An input comment.",
"data": {
"val1": 23,
"val2": 17
},
"extra": "foo",
"lambda": {
"who": "AWS Step Functions"
}
}
Suponha que os extra
nós comment
e possam ser descartados, mas que você queira incluir a saída da função Lambda e preservar as informações no nó. data
Na máquina de estado atualizada, o estado Task
é alterado para processar a entrada para a tarefa.
"InputPath": "$.lambda",
Essa linha na definição de máquina de estado limita a tarefa de entrada para apenas o nó lambda
da entrada de estado. A função Lambda recebe somente o JSON objeto {"who": "AWS Step Functions"}
como entrada.
"ResultPath": "$.data.lambdaresult",
Esse ResultPath
diz à máquina de estado para inserir o resultado da função do Lambda em um nó chamado lambdaresult
, como um filho do nó data
na entrada da máquina de estado original. Como você não está realizando nenhuma outra manipulação na entrada original e no resultado usandoOutputPath
, a saída do estado agora inclui o resultado da função Lambda com a entrada original.
{
"comment": "An input comment.",
"data": {
"val1": 23,
"val2": 17,
"lambdaresult": "Hello, AWS Step Functions!"
},
"extra": "foo",
"lambda": {
"who": "AWS Step Functions"
}
}
Mas nosso objetivo era preservar somente o data
nó e incluir o resultado da função Lambda. OutputPath
filtra isso combinado JSON antes de passá-lo para a saída de estado.
"OutputPath": "$.data",
Isso seleciona apenas o nó data
da entrada original (incluindo o filho lambdaresult
inserido por ResultPath
) a ser passada para a saída. A saída do estado é filtrada como está a seguir.
{
"val1": 23,
"val2": 17,
"lambdaresult": "Hello, AWS Step Functions!"
}
Nesse estado Task
:
-
O
InputPath
envia somente o nólambda
da entrada para a função do Lambda. -
ResultPath
insere o resultado como um filho do nódata
na entrada original. -
O
OutputPath
filtra a entrada de estado (que agora inclui o resultado da função do Lambda) para que ele transmita somente o nódata
para a saída de estado.
exemplo para manipular a entrada, o resultado e a saída final da máquina de estado original usando JsonPath
Considere a seguinte máquina de estado que verifica a identidade e o endereço de um solicitante de seguro.
nota
Para ver o exemplo completo, consulte Como usar o JSON Path in Step Functions
{ "Comment": "Sample state machine to verify an applicant's ID and address", "StartAt": "Verify info", "States": { "Verify info": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:
check-identity
:$LATEST" }, "End": true } } }, { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-address
:$LATEST" }, "End": true } } } ] } } }
Se você executar essa máquina de estado usando a entrada a seguir, a execução falhará porque as funções do Lambda que realizam a verificação esperam apenas os dados que precisam ser verificados como entrada. Portanto, você deve especificar os nós que contêm as informações a serem verificadas usando um apropriado JsonPath.
{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }, "interests": [ { "category": "home", "type": "own", "yearBuilt": 2004 }, { "category": "boat", "type": "snowmobile", "yearBuilt": 2020 }, { "category": "auto", "type": "RV", "yearBuilt": 2015 }, ] } }
Para especificar o nó que a função do Lambda
deve usar, use o campo check-identity
InputPath
da seguinte forma:
"InputPath": "$.data.identity"
E para especificar o nó que a função do Lambda
deve usar, use o campo check-address
InputPath
da seguinte forma:
"InputPath": "$.data.address"
Agora, se você quiser armazenar o resultado da verificação na entrada original da máquina de estado, use o campo ResultPath
da seguinte forma:
"ResultPath": "$.results"
No entanto, se você precisar apenas dos resultados de identidade e verificação e descartar a entrada original, use o campo OutputPath
da seguinte forma:
"OutputPath": "$.results"
Para obter mais informações, consulte Processando entrada e saída em Step Functions.