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.
Conteúdo
Principais conceitos neste tópico
- Modo inline
-
Um modo de processamento simultâneo limitado do estado
Map
. Nesse modo, cada iteração do estadoMap
é executada no contexto do fluxo de trabalho que contém o estadoMap
. 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 estadosMap
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 doMap
estado. Esse objeto contém o subcampoMode
. Esse campo é padronizado comoINLINE
, que usa o estadoMap
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 estadoMap
.
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 estadoMap
é transmitida primeiro para o estadoStartAt
.-
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 campoItemProcessor
pode fazer a transição para um estado dentro dele. -
O campo
ItemProcessor
substitui o campoIterator
, agora obsoleto. Embora você possa continuar a incluir estados deMap
que usam o campoIterator
, é altamente recomendável substituir esse campo porItemProcessor
.No momento, o Step Functions Local não é compatível com o campo
ItemProcessor
. Recomendamos o uso do campoIterator
com o Step Functions Local.
-
-
ItemsPath
(opcional)-
Especifica um caminho de referência usando a JsonPath
sintaxe. 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 campoParameters
, agora obsoleto. Embora você possa continuar a incluir estados deMap
que usam o campoParameters
, é altamente recomendável substituir esse campo porItemSelector
. -
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 valorMaxConcurrency
de 10 limitará o estadoMap
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
de1
invoca oItemProcessor
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 incluirMaxConcurrency
eMaxConcurrencyPath
. 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 estadoMap
contém duas iterações concluídas com êxito e uma com falha. Se você definiu oRetry
campo para oMap
estado, a política de repetição se aplica às três iterações deMap
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: