Configurar entradas e saídas para os estados - 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á.

Configurar entradas e saídas para os estados

Cada estado toma uma decisão ou executa uma ação com base na entrada que recebe. Na maioria dos casos, ele passa a saída para outros estados. No Workflow Studio, você pode configurar como um estado filtra e manipula os dados de entrada e saída nas guias Entrada e Saída do painel Inspector. Use os links de Informações para acessar a ajuda contextual ao configurar entradas e saídas.


        Entradas, saídas e painel de ajuda

Para informações detalhadas sobre como o Step Functions processa entrada e saída, consulte Processamento de entrada e saída no Step Functions.

Configurar a entrada para um estado

Cada estado recebe a entrada do estado anterior como JSON. Se quiser filtrar a entrada, você poderá usar o filtro InputPath na guia Entrada no painel Inspector. A InputPath é uma string, começando com $, que identifica um nó JSON específico. Eles são chamados de caminhos de referência e seguem a JsonPath sintaxe.


          Opções de entrada

Para filtrar a entrada:

  • Escolha Filtrar entrada com InputPath.

  • Insira um valor válido JsonPathpara o InputPath filtro. Por exemplo, $.data.

O filtro InputPath será adicionado ao fluxo de trabalho.

exemplo Exemplo 1: Usar InputPath filtro no Workflow Studio

Digamos que a entrada para o estado inclua os dados JSON a seguir.

{ "comment": "Example for InputPath", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

Para aplicar o InputPath filtro, escolha Filtrar entrada com e InputPath, em seguida, insira um caminho de referência apropriado. Se você inserir $.dataset2.val1, o seguinte JSON será passado como entrada para o estado.

{"a"}

Um caminho de referência também pode ter uma seleção de valores. Se os dados referenciados forem { "a": [1, 2, 3, 4] }, e você aplicar o caminho de referência $.a[0:2] como o filtro InputPath, o resultado será como a seguir.

[ 1, 2 ]

Os estados Paralelo, Mapa e Pass têm uma opção adicional de filtragem de entrada chamada Parameters na guia Entrada. Esse filtro entra em vigor após o InputPath filtro e pode ser usado para construir um objeto JSON personalizado que consiste em um ou mais pares de valores-chave. Os valores de cada par podem ser valores estáticos, podem ser selecionados na entrada ou podem ser selecionados a partir do Objeto de contexto com um caminho.

nota

Para determinar que um parâmetro use um caminho para fazer referência a um nó JSON na entrada, o nome do parâmetro deve terminar com .$.

exemplo Exemplo 2: crie uma entrada JSON personalizada para o estado Paralelo

Digamos que os seguintes dados JSON sejam a entrada para um estado Paralelo.

{ "comment": "Example for Parameters", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

Para selecionar parte dessa entrada e passar pares de valores-chave adicionais com um valor estático, você pode especificar o seguinte no campo Parâmetros, na guia Entrada do estado Paralelo.

{ "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } }

Os seguintes dados JSON serão o resultado.

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } }

Configurar a saída de um estado

Cada estado produz uma saída JSON que pode ser filtrada antes de ser passada para o próximo estado. Há vários filtros disponíveis e cada um afeta a saída de uma maneira diferente. Os filtros de saída disponíveis para cada estado estão listados na guia Saída no painel Inspector. Para estados Tarefa, todos os filtros de saída selecionados são processados nesta ordem:

  1. ResultSelector: use esse filtro para manipular o resultado do estado. Você pode construir um novo objeto JSON com partes do resultado.

  2. ResultPath: use esse filtro para selecionar uma combinação da entrada de estado e do resultado da tarefa para passar para a saída.

  3. OutputPath: use esse filtro para filtrar a saída JSON e escolher quais informações do resultado serão passadas para o próximo estado.


          Opções de saída

Use ResultSelector

ResultSelector é um filtro de saída opcional para os seguintes estados:

  • Estados Tarefa, que são todos os estados listados na guia Ações do Navegador de estados.

  • Estados Mapa, na guia Fluxo do Navegador de estados.

  • Estados Paralelo, na guia Fluxo do Navegador de estados.

ResultSelector pode ser usado para construir um objeto JSON personalizado que consiste em um ou mais pares de chave-valor. Os valores de cada par podem ser valores estáticos ou selecionados do resultado do estado com um caminho.

nota

Para especificar que um parâmetro use um caminho para fazer referência a um nó JSON no resultado, o nome do parâmetro deve terminar com .$.

exemplo Exemplo de uso do ResultSelector filtro

Neste exemplo, você usa ResultSelector para manipular a resposta da chamada de API do Amazon CreateCluster EMR para um estado do Amazon CreateCluster EMR. Veja a seguir o resultado da chamada de API CreateCluster do Amazon EMR.

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

Para selecionar parte dessas informações e passar um par adicional de valores-chave com um valor estático, especifique o seguinte no ResultSelectorcampo, na guia Saída do estado.

{ "result": "found", "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }

O uso de ResultSelector produz o resultado a seguir.

{ "result": "found", "ClusterId": "AKIAIOSFODNN7EXAMPLE", "ResourceType": "elasticmapreduce" }

Use ResultPath

A saída de um estado pode ser uma cópia da entrada, o resultado que ele produz 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. Para obter mais casos de uso de ResultPath, consulte ResultPath.

ResultPath é um filtro de saída opcional para os seguintes estados:

  • Estados Tarefa, que são todos os estados listados na guia Ações do Navegador de estados.

  • Estados Mapa, na guia Fluxo do Navegador de estados.

  • Estados Paralelo, na guia Fluxo do Navegador de estados.

  • Estados Pass, na guia Fluxo do Navegador de estados.

ResultPath pode ser usado para adicionar o resultado à entrada do estado original. O caminho especificado indica onde adicionar o resultado.

exemplo Exemplo de uso do ResultPath filtro

Digamos que os itens seguintes sejam a entrada para um estado Tarefa.

{ "details": "Default example", "who": "AWS Step Functions" }

O resultado do estado Tarefa é como a seguir.

Hello, AWS Step Functions

Você pode adicionar esse resultado à entrada do estado aplicando ResultPath e inserindo um caminho de referência que indica onde adicionar o resultado, como $.taskresult:

Com esse ResultPath, o seguinte é o JSON que é passado como a saída do estado.

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

Use OutputPath

O filtro OutputPath permite filtrar informações indesejadas e transmitir somente a parte do JSON que é importante para você. O OutputPath é uma string, que começa com $, que identifica nós no texto JSON.

exemplo Exemplo de uso do OutputPath filtro

Uma chamada de API Invocação Lambda retorna metadados além da payload, que é o resultado da função do Lambda. Um exemplo da resposta dessa chamada de API é mostrado na guia Saída do estado.


              Painel de saída

Você pode usar OutputPath para filtrar os metadados adicionais. Por padrão, o valor do OutputPathfiltro para estados do Lambda Invoke criados por meio do Workflow Studio é. $.Payload Esse valor padrão remove os metadados adicionais e retorna uma saída equivalente à execução direta da função do Lambda.

O exemplo do resultado da tarefa Invocação Lambda e o valor de $.Payload para o filtro Output transmitem os seguintes dados JSON como a saída.

{ "foo": "bar", "colors": [ "red", "blue", "green" ], "car": { "year": 2008, "make": "Toyota", "model": "Matrix" } }
nota

Como o filtro OutputPath é o último filtro de saída a entrar em vigor, se você usar filtros de saída adicionais como ResultSelector ou ResultPath, deverá modificar o valor padrão de $.Payload para o filtro OutputPath adequadamente.