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á.
Configure a entrada e a saída do fluxo de trabalho em Step Functions
No tópico anteriorExecutar o fluxo de trabalho , você aprendeu a executar seu fluxo de trabalho. Neste tópico, você aprenderá como selecionar, filtrar e manipular dados à medida que eles passam entre estados.
Uma execução do Step Functions recebe JSON texto como entrada e passa essa entrada para o primeiro estado no fluxo de trabalho. Estados individuais em um fluxo de trabalho recebem JSON dados como entrada e geralmente passam JSON dados como saída para o próximo estado. Por padrão, os dados passam de um estado para o próximo estado no fluxo de trabalho, a menos que você tenha configurado a entrada e/ou a saída. Ter noções básicas sobre como as informações fluem de um estado para outro e aprender a filtrar e manipular esses dados é a chave para efetivamente projetar e implementar fluxos de trabalho no Step Functions.
O Step Functions fornece os seguintes filtros para controlar o fluxo de dados de entrada e saída entre os estados:
nota
Dependendo do seu caso de uso, talvez você não precise aplicar todos esses filtros em seus fluxos de trabalho.
InputPath
-
Seleciona WHATparte de toda a carga de entrada para ser usada como entrada de uma tarefa. Se você especificar esse campo, o Step Functions o aplicará primeiro.
Parâmetros
-
Especifica HOWa aparência da entrada antes de invocar a tarefa. Com o
Parameters
campo, você pode criar uma coleção de pares de valores-chave que são passados como entrada para um AWS service (Serviço da AWS) integração, como um AWS Lambda função. Esses valores podem ser estáticos ou selecionados dinamicamente da entrada de estado ou do objeto de contexto do fluxo de trabalho. ResultSelector
-
Determina WHATa escolha entre a saída de uma tarefa. Com o campo
ResultSelector
, você pode criar uma coleção de pares de chave/valor que substituem o resultado de um estado e enviam essa coleção paraResultPath
. Especificando a saída de estado usando fluxos de trabalho ResultPath do Step Functions
-
Determina WHEREcolocar a saída de uma tarefa. Use o
ResultPath
para determinar se a saída de um estado é uma cópia de sua entrada, o resultado que produz ou uma combinação das duas opções. Filtrando a saída do estado usando fluxos de trabalho OutputPath do Step Functions
-
Determina WHATo envio para o próximo estado. Com
OutputPath
, você pode filtrar informações indesejadas e passar apenas a parte dos JSON dados que lhe interessam.
dica
Os ResultSelector
filtros Parameters
e funcionam construindoJSON, enquanto os OutputPath
filtros InputPath
e funcionam filtrando nós específicos dentro de um objeto de JSON dados, e o ResultPath
filtro funciona criando um campo no qual a saída pode ser adicionada.
Para obter mais informações sobre como configurar a entrada e a saída em seus fluxos de trabalho, consulte Processando entrada e saída em Step Functions.
Filtrando e manipulando entradas e resultados
Selecione partes específicas da entrada bruta usando o InputPath filtro
Use o filtro InputPath
para selecionar uma parte específica da carga de entrada.
Se você não especificar InputPath
, o valor padrão será $
, o que fará a tarefa do estado se referir à entrada bruta inteira, em vez de a uma parte específica.
Para aprender a usar o filtro InputPath, execute as seguintes etapas:
Etapa 1: Criar uma máquina de estado
Importante
Certifique-se de que sua máquina de estado esteja sob a mesma AWS conta e região como a função Lambda que você criou anteriormente.
-
Use o exemplo de estado
Parallel
que você aprendeu no Tutorial 4 para criar uma máquina de estado. Verifique se o protótipo do fluxo de trabalho é semelhante ao protótipo a seguir. -
Configure as integrações para as funções do Lambda
check-identity
echeck-address
. Para obter informações sobre como criar as funções do Lambda e usá-las em sua máquina de estado, consulte Etapa 1: Criar as funções do Lambda para realizar as verificações necessárias e Etapa 2: Atualizar o fluxo de trabalho, Adicionar tarefas paralelas a serem executadas. -
Para Carga útil, retenha a seleção-padrão de Usar entrada de estado como carga útil.
-
Escolha Avançar e execute as etapas de 1 a 3 em Etapa 1: Salvar a máquina de estado do Tutorial 5 para criar uma máquina de estado. Para este tutorial, dê à sua máquina de estado o nome de
WorkflowInputOutput
.
Etapa 2: Executar a máquina de estado
-
Na WorkflowInputOutputpágina, escolha Iniciar execução.
-
(Opcional) Insira um nome de execução personalizado para substituir o padrão gerado.
ASCIINão-nomes e registro
Step Functions aceita nomes para máquinas de estado, execuções, atividades e rótulos que não contenham ASCII caracteres. Como esses caracteres não funcionarão com a Amazon CloudWatch, recomendamos usar somente ASCII caracteres para que você possa acompanhar as métricas CloudWatch.
-
Na área Entrada, adicione os seguintes JSON dados como entrada de execução.
{ "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" } } }
-
Selecione Iniciar execução.
-
A execução da máquina de estado resulta em um erro porque você não especificou quais partes da entrada de execução as funções do Lambda
check-identity
echeck-address
devem usar para realizar a verificação de identidade e endereço necessária. -
Continue com a Etapa 3 deste tutorial para corrigir o erro.
Etapa 3: Usar o filtro InputPath
para selecionar partes específicas de uma entrada de execução
-
Na página Detalhes da execução, escolha Edit state machine (Editar máquina de estado).
-
Para verificar a identidade do candidato conforme mencionado na entrada de execução fornecida em Etapa 2: Executar a máquina de estado, edite a definição da tarefa Verificar identidade da seguinte forma:
... { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.identity", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:check-identity:$LATEST" }, "End": true } } } ...
Consequentemente, os JSON dados a seguir ficam disponíveis como entrada para a
check-identity
função.{ "email": "jdoe@example.com", "ssn": "123-45-6789" }
-
Para verificar o endereço do candidato conforme mencionado na entrada de execução, edite a definição da tarefa
Verify address
da seguinte forma:... { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.address", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:check-address:$LATEST" }, "End": true } } } ...
Consequentemente, os JSON dados a seguir ficam disponíveis como entrada para a
check-address
função.{ "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
-
Selecione Iniciar execução. A execução da máquina de estado agora é concluída com êxito.
Manipule a entrada selecionada usando o filtro Parâmetros
Embora o InputPath
filtro ajude a limitar a JSON entrada bruta fornecida, usando o Parameters
filtro, você pode passar uma coleção de pares de valores-chave como entrada. Esses pares de chave-valor podem ser valores estáticos que você define na definição de máquina de estado, ou valores selecionados na entrada bruta usando InputPath
.
Em seus fluxos de trabalho, Parameters
são aplicados depois de InputPath
. O Parameters
ajuda você a especificar como a tarefa subjacente aceita sua carga de entrada. Por exemplo, se a função check-address
Lambda aceitar um parâmetro de string como entrada em vez dos JSON dados, você poderá usar o Parameters
filtro para transformar a entrada.
No exemplo a seguir, o filtro Parameters
recebe a entrada que você selecionou usando InputPath
em Etapa 3: Usar o filtro InputPath para selecionar partes específicas de uma entrada de execução e aplica a função intrínseca States.Format
nos itens de entrada para criar uma string chamada addressString
. As funções intrínsecas ajudam você a realizar operações básicas de processamento de dados em uma determinada entrada. Para obter mais informações, consulte Funções intrínsecas na Amazon States Language para fluxos de trabalho de Step Functions.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
Assim, a sequência de caracteres a seguir é criada e fornecida à função do Lambda check-address
como entrada.
{ "addressString": "123 Main St. Columbus, OH - 43219" }
Configurar a saída usando os OutputPath filtros ResultSelector ResultPath, e
Quando a função check-address
Lambda é invocada na máquina de WorkflowInputOutputestado, a função retorna uma carga de saída após realizar a verificação do endereço. Na página Detalhes da execução, escolha a etapa Verificar endereço e visualize a carga de saída dentro do Resultado da tarefa no painel Detalhes da etapa.
{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }
Usando ResultSelector
Se precisar fornecer o resultado das verificações de identidade e endereço para os seguintes estados em seu fluxo de trabalho, você pode selecionar o nó Payload.body na saída JSON e usar a função StringToJson intrínseca no ResultSelector
filtro para formatar os dados conforme necessário.
ResultSelector
seleciona o que é necessário na saída da tarefa. No exemplo a seguir, ResultSelector
pega a string em $.payload.BODY e aplica a função States.StringToJson
intrínseca para converter a string JSON e colocar o resultado dentro do nó de identidade. JSON
"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }
Consequentemente, os seguintes JSON dados são criados.
{ "identity": { "approved": true, "message": "Identity validation passed" } }
Ao trabalhar com esses filtros de entrada e saída, você pode ver erros de tempo de execução de JSONpath expressões inválidas.
Usando ResultPath
Você pode especificar um local na carga inicial de entrada para salvar o resultado do processamento da tarefa de um estado usando o campo ResultPath
. Se você não especificar ResultPath
, o valor padrão será $
, o que fará a carga inicial de entrada ser substituída pelo resultado bruto da tarefa. Se você especificar ResultPath
como null
, o resultado bruto será descartado e a carga inicial de entrada passará a ser a saída efetiva.
Se você aplicar o ResultPath
campo aos JSON dados criados usando o ResultSelector
campo, o resultado da tarefa será adicionado dentro do nó de resultados na carga de entrada, conforme mostrado no exemplo a seguir:
{
"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"
},
"results": {
"identity": {
"approved": true
}
}
}
Usando OutputPath
Você pode selecionar uma parte da saída do estado após a aplicação de ResultPath
para passar ao estado seguinte. Com essa abordagem, você pode filtrar informações indesejadas e repassar apenas JSON a parte necessária.
No exemplo a seguir, o campo OutputPath
salva a saída do estado dentro do nó de resultados: "OutputPath": "$.results"
. Dessa forma, a saída final do estado, que você pode passar para o próximo estado, é a seguinte:
{
"addressResult": {
"approved": true,
"message": "address validation passed"
},
"identityResult": {
"approved": true,
"message": "identity validation passed"
}
}
Como usar os recursos do console para visualizar os fluxos de dados de entrada e saída
Você pode visualizar o fluxo de dados de entrada e saída entre os estados em seus fluxos de trabalho usando o Simulador de fluxo de dados
Manipule a entrada selecionada usando o campo Parâmetros
Embora o InputPath
campo ajude a limitar a JSON entrada bruta fornecida, usando o Parameters
campo, você pode passar uma coleção de pares de valores-chave como entrada. Esses pares de chave-valor podem ser valores estáticos que você define na definição de máquina de estado, ou valores selecionados na entrada bruta usando InputPath
.
Em seus fluxos de trabalho, Parameters
são aplicados depoisInputPath
. Parameters
ajudam você a especificar como a tarefa subjacente aceita sua carga de entrada. Por exemplo, imagine que se a função check-address
Lambda aceitar um parâmetro de string como entrada em vez dos JSON dados, você pode usar o Parameters
campo para transformar a entrada.
No exemplo a seguir, o Parameters
campo recebe a entrada que você selecionou usando InputPath
na Selecione partes específicas da entrada bruta usando o InputPath filtro seção e aplica a função intrínseca States.Format
nos itens de entrada para criar uma string chamada. addressString
As funções intrínsecas ajudam você a realizar operações básicas de processamento de dados em uma determinada entrada. Para obter mais informações, consulte Funções intrínsecas.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
Consequentemente, a sequência de caracteres a seguir é criada e fornecida à função Lambda de endereço de verificação como entrada.
nota
Se você atualizar sua entrada usando este exemplo e executar a máquina de estado, ela retornará um erro porque a função Lambda não aceita a entrada no formato atualizado.
{ "addressString.$": "123 Main St. Columbus, OH - 43219" }
Próximas etapas
No tópico finalErros de depuração, você aprenderá como depurar erros em seus fluxos de trabalho do Step Functions.