Configure a entrada e a saída do fluxo de trabalho 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á.

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

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. ComOutputPath, 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.

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.

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.

  1. 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.

  2. Configure as integrações para as funções do Lambda check-identity e check-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.

  3. Para Carga útil, retenha a seleção-padrão de Usar entrada de estado como carga útil.

  4. 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

  1. Na WorkflowInputOutputpágina, escolha Iniciar execução.

  2. (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.

  3. 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" } } }
  4. Selecione Iniciar execução.

  5. 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 e check-address devem usar para realizar a verificação de identidade e endereço necessária.

  6. 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

  1. Na página Detalhes da execução, escolha Edit state machine (Editar máquina de estado).

  2. 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" }
  3. 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" }
  4. 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 do console Step Functions ou a opção de visualização avançada na página Detalhes da execução.

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. Parametersajudam 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.