Faça iterações simultâneas sobre itens em um fluxo de trabalho de 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á.

Faça iterações simultâneas sobre itens em um fluxo de trabalho de Step Functions

No tópico anteriorDefina tarefas paralelas, você aprendeu como executar ramificações separadas de etapas em paralelo usando o Parallel estado. Usando o estado Map, é possível executar um conjunto de etapas do fluxo de trabalho para cada item em um conjunto de dados. As iterações do estado Map são executadas em paralelo, o que possibilita o processamento rápido de um conjunto de dados.

Ao incluir o estado Map em seus fluxos de trabalho, você pode realizar tarefas, como processamento de dados, usando uma destas opções Modos de processamento do estado do mapa: modo em linha e modo distribuído. Para configurar um Map estado, você define umItemProcessor, que contém JSON objetos que especificam o modo de processamento do Map estado e sua definição. Você executará o Map estado no modo embutido padrão, que suporta até 40 iterações simultâneas. Quando você executa o estado Map no modo Distribuído, ele aceita até 10 mil execuções paralelas de fluxo de trabalho secundário.

Quando a execução do fluxo de trabalho entra no Map estado, ela iterará em uma JSON matriz especificada na entrada do estado. Para cada item da matriz, sua iteração correspondente é executada no contexto do fluxo de trabalho contendo o estado Map. Quando todas as iterações forem concluídas, o estado Map retornará uma matriz contendo a saída de cada item processado pelo ItemProcessor.

Você usará o Map estado no modo Inline para obter a pontuação de crédito de um candidato, iterando em um conjunto de agências de crédito. Para fazer isso, primeiro você busca os nomes de todas as agências de crédito armazenadas em uma tabela do Amazon DynamoDB e usa o estado Map para percorrer a lista de agências de crédito para obter a pontuação de crédito do solicitante que cada uma dessas agências relata.

Etapa 1: Criar uma tabela do DynamoDB para armazenar o nome de todas as agências de crédito

Nesta etapa, você cria uma tabela chamada GetCreditBureau usando o console do DynamoDB. A tabela usa o atributo de string Name como chave de Partição. Nessa tabela, você armazena o nome de todas as agências de crédito das quais deseja obter a pontuação de crédito do candidato.

  1. Faça login no AWS Management Console e abra o console do DynamoDB em. https://console.aws.amazon.com/dynamodb/

  2. No painel de navegação no console, selecione Tabelas e Criar tabela.

  3. Insira os detalhes da tabela assim:

    1. Para o Table name (Nome da tabela), insira GetCreditBureau.

    2. Em Partition key (Chave de partição), insira Name.

    3. Mantenha as seleções padrão e escolha Criar tabela.

  4. Depois que sua tabela for criada, na lista Tabelas, escolha a GetCreditBureautabela.

  5. Escolha Ações e Criar item.

  6. Em Valor, insira o nome de uma agência de crédito. Por exemplo, CredTrack.

  7. Selecione Create Item (Criar item).

  8. Repita esse processo e crie itens para nomes de outras agências de crédito. Por exemplo, KapFinn e CapTrust.

Etapa 2: Atualizar a máquina de estado, Buscar resultados da tabela do DynamoDB

No console do Step Functions, você adicionará um Task estado e usará a AWS SDKintegração para buscar os nomes das agências de crédito da tabela do DynamoDB que você criou na Etapa 1. Você usará a saída dessa etapa como entrada para o Map estado que adicionará posteriormente em seu fluxo de trabalho.

  1. Abra a máquina de CreditCardWorkflowestado para atualizá-la.

  2. Escolha o estado Get list of credit bureaus (Obter lista de agências de crédito).

  3. Em APIParâmetros, especifique o valor do nome da tabela comoGetCreditBureau.

Etapa 3: Criar uma função do Lambda que retornará as pontuações de crédito de todas as agências de crédito

Nesta etapa, você cria uma função do Lambda que recebe os nomes de todas as agências de crédito como entrada e retorna a pontuação de crédito do solicitante para cada uma dessas agências de crédito. Essa função Lambda será invocada a partir do Map estado que você adicionará ao seu fluxo de trabalho.

  1. Crie uma função do Lambda Node.js 16.x e dê a ela o nome de get-credit-score.

  2. Na página intitulada get-credit-score, cole o código a seguir na área Fonte do código.

    function getScore(arr) { let temp; let i = Math.floor((Math.random() * arr.length)); temp = arr[i]; console.log(i); console.log(temp); return temp; } const arrScores = [700, 820, 640, 460, 726, 850, 694, 721, 556]; exports.handler = (event, context, callback) => { let creditScore = getScore(arrScores); callback(null, "Credit score pulled is: " + creditScore + "."); };
  3. Implante a função do Lambda.

Etapa 4: Atualizar a máquina de estado, adicionar um estado do mapa para buscar iterativamente as pontuações de crédito

No console Step Functions, você adiciona um Map estado que invoca a função get-credit-scoreLambda para verificar a pontuação de crédito do candidato em todas as agências de crédito retornadas pelo estado Obter lista de agências de crédito.

  1. Abra a máquina de CreditCardWorkflowestado para atualizá-la.

  2. Escolha Get scores from all credit bureaus (Obter pontuações de todas as agências de crédito).

  3. Na guia Configuração, escolha Provide a path to items array (Fornecer um caminho para a matriz de itens) e insira $.Items.

  4. Escolha a etapa Get all scores (Obter todas as pontuações) dentro do estado Map.

  5. Na guia Configuração, certifique-se de que, em Tipo de integração, Otimizado esteja selecionado.

  6. Em Nome da função, comece digitando o nome get-credit-scoreda função Lambda e escolha-a na lista suspensa exibida.

  7. Em Carga útil, escolha No payload (Sem carga útil).

Próximas etapas

Na próxima etapaExecutar o fluxo de trabalho , você aprenderá a executar seu fluxo de trabalho.