Usando o estado do mapa no modo Inline nos fluxos de trabalho do 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á.

Usando o estado do mapa no modo Inline nos fluxos de trabalho do Step Functions

Por padrão, os estados Map são executados no modo inline. No modo Inline, o estado do Mapa aceita somente uma JSON matriz como entrada. Ele recebe essa matriz de uma etapa anterior no fluxo de trabalho. Nesse modo, cada iteração do estado Map é executada no contexto do fluxo de trabalho que contém o estado Map. O Step Functions adiciona o histórico de execução dessas iterações ao histórico de execuções do fluxo de trabalho principal.

Nesse modo, o estado Map oferece suporte para até 40 iterações simultâneas.

Um estado Map definido como Inline é conhecido como estado Mapa inline. Use o estado Map no modo Em linha se o histórico de execução do fluxo de trabalho não exceder 25 mil entradas ou se você não precisar de mais de 40 iterações simultâneas.

Para obter uma introdução ao uso do estado Mapa inline, consulte o tutorial Repita ações com o Inline Map.

Principais conceitos neste tópico

Modo inline

Um modo de processamento simultâneo limitado do estado Map. Nesse modo, cada iteração do estado Map é executada no contexto do fluxo de trabalho que contém o estado Map. O Step Functions adiciona o histórico de execução dessas iterações ao histórico de execuções do fluxo de trabalho principal. Os estados Map são executados no modo inline como padrão.

Esse modo aceita somente uma JSON matriz como entrada e suporta até 40 iterações simultâneas.

Estado Mapa inline

Um estado Map definido como modo inline.

Fluxo de trabalho do mapa

O conjunto de etapas que o estado Map executa para cada iteração.

Iteração do estado Mapa

Uma repetição do fluxo de trabalho definida dentro do estado Map.

Campos do estado Mapa inline

Para usar o estado Mapa inline em fluxos de trabalho, especifique um ou mais dos campos a seguir. Você especifica esses campos além dos campos de estado comuns.

Type (obrigatório)

Define o tipo de estado, como Map.

ItemProcessor
(obrigatório)

Contém os seguintes JSON objetos que especificam a definição e o modo de processamento do Map estado.

A definição contém o conjunto de etapas a serem repetidas para processar cada item da matriz.

  • ProcessorConfig— Um JSON objeto opcional que especifica o modo de processamento do Map estado. Esse objeto contém o subcampo Mode. Esse campo é padronizado como INLINE, que usa o estado Map no modo inline.

    Nesse modo, a falha de qualquer iteração causa uma falha no estado Map. Todas as iterações param quando uma falha ocorre no estado Map.

  • StartAt— Especifica uma string que indica o primeiro estado em um fluxo de trabalho. Essa string diferencia maiúsculas de minúsculas e deve corresponder ao nome de um dos objetos de estado. Esse estado é executado primeiro para cada item no conjunto de dados. Qualquer entrada de execução fornecida ao estado Map é transmitida primeiro para o estado StartAt.

  • States— Um JSON objeto contendo um conjunto de estados delimitado por vírgula. Nesse objeto, você define o Map workflow.

    nota
    • Os estados no campo ItemProcessor só podem fazer a transição entre si. Nenhum estado fora do campo ItemProcessor pode fazer a transição para um estado dentro dele.

    • O campo ItemProcessor substitui o campo Iterator, agora obsoleto. Embora você possa continuar a incluir estados de Map que usam o campo Iterator, é altamente recomendável substituir esse campo por ItemProcessor.

      No momento, o Step Functions Local não é compatível com o campo ItemProcessor. Recomendamos o uso do campo Iterator com o Step Functions Local.

ItemsPath (opcional)

Especifica um caminho de referência usando a JsonPathsintaxe. Esse caminho seleciona o JSON nó que contém a matriz de itens dentro da entrada de estado. Para obter mais informações, consulte ItemsPath (Mapa).

ItemSelector
(opcional)

Substitui os valores da matriz de entrada antes de serem transmitidos para cada iteração do estado Map.

Nesse campo, você especifica um válido JSON que contém uma coleção de pares de valores-chave. Esses pares podem conter espaços ou um destes itens:

  • Valores estáticos selecionados na definição da máquina de estado.

  • Valores selecionados da entrada de estado usando um caminho.

  • Valores acessados a partir do objeto de contexto.

Para obter mais informações, consulte ItemSelector (Mapa).

O campo ItemSelector substitui o campo Parameters, agora obsoleto. Embora você possa continuar a incluir estados de Map que usam o campo Parameters, é altamente recomendável substituir esse campo por ItemSelector.

MaxConcurrency (opcional)

Especifica um valor inteiro que fornece o limite superior do número de iterações do estado Map que podem ser executadas em paralelo. Por exemplo, um valor MaxConcurrency de 10 limitará o estado Map a 10 iterações simultâneas em execução ao mesmo tempo.

nota

As iterações simultâneas podem ser limitadas. Quando isso ocorre, algumas iterações não começarão até que as iterações anteriores sejam concluídas. A probabilidade de isso ocorrer aumenta quando sua matriz de entrada tem mais de 40 itens.

Para aumentar a capacidade de processamento simultâneo, considere Modo distribuído.

O valor padrão é0, o que não limita a simultaneidade. O Step Functions invoca iterações da forma mais simultânea possível.

Um valor MaxConcurrency de 1 invoca o ItemProcessor uma vez para cada elemento da matriz. Os itens na matriz são processados na ordem em que aparecem na entrada. O Step Functions não iniciará uma nova iteração até concluir a iteração anterior.

MaxConcurrencyPath (opcional)

Para fornecer dinamicamente um valor máximo de processamento simultâneo a partir da entrada de estado usando um caminho de referência, use MaxConcurrencyPath. Quando resolvido, o caminho de referência deve selecionar um campo cujo valor seja um número inteiro não negativo.

nota

Um estado Map não pode incluir MaxConcurrency e MaxConcurrencyPath.

ResultPath (opcional)

Especifica onde na entrada armazenar a saída das iterações do estado Map. Em seguida, o estado Mapa filtra a entrada conforme especificado pelo campo OutputPath, se especificado. Em seguida, ele usa a entrada filtrada como saída do estado. Para obter mais informações, consulte Processamento de entrada e saída.

ResultSelector (opcional)

Transmitir um conjunto de pares de valores-chave, em que os valores são estáticos ou selecionados a partir do resultado. Para obter mais informações, consulte ResultSelector.

dica

Se o estado Paralelo ou Mapa usado nas máquinas de estado retornar uma matriz de matrizes, você poderá transformá-las em uma matriz nivelada com o campo ResultSelector. Para obter mais informações, consulte Nivelamento de uma matriz de matrizes.

Retry (opcional)

Uma matriz de objetos, chamados Retriers, que definem uma política de novas tentativas. Os estados usam uma política de nova tentativa quando encontram erros de runtime. Para obter mais informações, consulte Exemplos de máquinas de estado usando Retry e usando Catch.

nota

Se você definir Retriers para o estado Mapa inline, a política de nova tentativa se aplicará a todas as iterações do estado Map, em vez de somente às iterações com falha. Por exemplo, o estado Map contém duas iterações concluídas com êxito e uma com falha. Se você definiu o Retry campo para o Map estado, a política de repetição se aplica às três iterações de Map estado, em vez de somente à iteração com falha.

Catch (opcional)

Uma matriz de objetos, chamados Catchers, que definem um estado de fallback. Os estados executarão um catcher se encontrarem erros de runtime e não tiverem uma política de nova tentativa ou se a política de nova tentativa estiver esgotada. Para obter mais informações, consulte Estados de fallback.

Campos descontinuados

nota

Embora você possa continuar a incluir estados de Map que usam o campo Iterator, é altamente recomendável substituir por ItemProcessor e Parameters por ItemSelector.

Iterator

Especifica um JSON objeto que define um conjunto de etapas que processam cada elemento da matriz.

Parameters

Especifica um conjunto de pares de valores-chave, no qual os valores podem conter espaços ou um destes itens:

  • Valores estáticos selecionados na definição da máquina de estado.

  • Valores selecionados da entrada usando um caminho.

Exemplo de estado Mapa inline

Considere os seguintes dados de entrada para um estado Map no modo inline.

{ "ship-date": "2016-03-14T01:59:00Z", "detail": { "delivery-partner": "UQS", "shipped": [ { "prod": "R31", "dest-code": 9511, "quantity": 1344 }, { "prod": "S39", "dest-code": 9511, "quantity": 40 }, { "prod": "R31", "dest-code": 9833, "quantity": 12 }, { "prod": "R40", "dest-code": 9860, "quantity": 887 }, { "prod": "R40", "dest-code": 9511, "quantity": 1220 } ] } }

Dada a entrada anterior, o Map estado no exemplo a seguir invoca um AWS Lambda função nomeada ship-val uma vez para cada item da matriz no shipped campo.

"Validate All": { "Type": "Map", "InputPath": "$.detail", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "Validate", "States": { "Validate": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:ship-val:$LATEST" }, "End": true } } }, "End": true, "ResultPath": "$.detail.shipped", "ItemsPath": "$.shipped" }

Cada iteração do estado Map enviará um item na matriz, selecionada com o campo ItemsPath como entrada para a função do Lambda ship-val. Os valores a seguir são um exemplo de entrada que o estado Map envia para uma invocação da função do Lambda:

{ "prod": "R31", "dest-code": 9511, "quantity": 1344 }

Quando concluída, a saída do Map estado é uma JSON matriz, em que cada item é a saída de uma iteração. Nesse caso, essa matriz contém a saída da função do Lambda ship-val.

Exemplo de estado Mapa inline com ItemSelector.

Vamos supor que a função do Lambda ship-val no exemplo anterior também precise de informações sobre a transportadora da remessa. Essas informações são adicionadas aos itens na matriz para cada iteração. Você pode incluir informações da entrada, juntamente com informações específicas à iteração atual do estado Map. Observe o campo ItemSelector no exemplo a seguir.

"Validate-All": { "Type": "Map", "InputPath": "$.detail", "ItemsPath": "$.shipped", "MaxConcurrency": 0, "ResultPath": "$.detail.shipped", "ItemSelector": { "parcel.$": "$$.Map.Item.Value", "courier.$": "$.delivery-partner" }, "ItemProcessor": { "StartAt": "Validate", "States": { "Validate": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val", "End": true } } }, "End": true }

O ItemSelector bloco substitui a entrada das iterações por um JSON nó. Esse nó contém os dados do item atual do objeto de contexto e as informações da transportadora do campo delivery-partner da entrada do estado Map. O exemplo a seguir é um entrada para uma única iteração. O estado Map transmite essa entrada para uma invocação da função do Lambda ship-val.

{ "parcel": { "prod": "R31", "dest-code": 9511, "quantity": 1344 }, "courier": "UQS" }

No exemplo anterior do estado Mapa inline, o campo ResultPath produz uma saída no mesmo formato da entrada. No entanto, ele substitui o campo detail.shipped por uma matriz na qual cada elemento é a saída da invocação do Lambda ship-val de cada iteração.

Para ver mais informações sobre como usar o estado Mapa inline e seus campos, consulte o seguinte:

Processamento de entrada e saída do estado Map inline.

Para um determinado estado Map, o InputPath seleciona um subconjunto da entrada do estado.

A entrada de um Map estado deve incluir uma JSON matriz. O estado Map executa a seção ItemProcessor uma vez para cada item na matriz. Se você especificar o campo ItemsPath, o estado Map selecionará onde na entrada encontrar a matriz sobre a qual iterar. Se não for especificado, o valor de ItemsPath será $, e a seção ItemProcessor esperará que a matriz seja a única entrada. Se você especificar o campo ItemsPath, seu valor deverá ser um caminho de referência. O estado Map aplica esse caminho à entrada efetiva depois de aplicar o InputPath. ItemsPathÉ necessário identificar um campo cujo valor seja uma JSON matriz.

A entrada para cada iteração, por padrão, é um único elemento do campo de matriz identificado pelo valor ItemsPath. Você pode substituir esse valor pelo campo ItemSelector (Mapa).

Quando concluída, a saída do Map estado é uma JSON matriz, em que cada item é a saída de uma iteração.

Para ver mais informações sobre entradas e saídas do estado Mapa inline, consulte: