Copiar dados CSV em grande escala usando o mapa distribuído no 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á.

Copiar dados CSV em grande escala usando o mapa distribuído no Step Functions

Este tutorial ajuda você a começar a usar o estado Map no modo distribuído. Um estado Map definido como Distribuído é conhecido como estado Mapa distribuído. Você usa o estado Mapa distribuído em seus fluxos de trabalho para iterar em fontes de dados de grande escala do Amazon S3. O estado Map executa cada iteração como uma execução de fluxo de trabalho secundário, o que permite alta simultaneidade. Para obter mais informações sobre o modo distribuído, consulte estado Mapa no modo distribuído.

Neste tutorial, você usa o estado Mapa distribuído para iterar sobre um arquivo CSV em um bucket do Amazon S3. Em seguida, você retorna seu conteúdo com o ARN da execução de um fluxo de trabalho secundário em outro bucket do Amazon S3. Você começa criando um protótipo de fluxo de trabalho no Workflow Studio. Em seguida, você define o modo de processamento do estado Map como Distribuído, especifica o arquivo CSV como conjunto de dados e fornece sua localização ao estado Map. Você também especifica o tipo de fluxo de trabalho para as execuções do fluxo de trabalho secundário que o estado Mapa distribuído começa como Express.

Além dessas configurações, você também especifica outras configurações, como o número máximo de execuções simultâneas de fluxos de trabalho secundários e o local para exportar o resultado Map, para o exemplo de fluxo de trabalho usado neste tutorial.

Pré-requisitos

  • Faça upload de um arquivo CSV para bucket do Amazon S3. Você deve definir uma linha de cabeçalho no seu arquivo CSV. Para obter informações sobre os limites de tamanho impostos ao arquivo CSV e como especificar a linha do cabeçalho, consulte Arquivo CSV em um bucket do Amazon S3.

  • Crie outro bucket do Amazon S3 e uma pasta dentro desse bucket para a qual exportar o resultado do estado Map.

Importante

Certifique-se de que seus buckets do Amazon S3 estejam sob a mesma máquina de estado Conta da AWS e Região da AWS sob a mesma.

Etapa 1: Criar o protótipo do fluxo de trabalho

Nesta e tapa, você cria o protótipo para seu fluxo de trabalho usando o Workflow Studio. O Workflow Studio é um designer visual de fluxo de trabalho disponível no console do Step Functions. Você escolhe o estado necessário e a ação da API nas guias Fluxo e Ações, respectivamente. Você vai usar o atributo de arrastar e soltar do Workflow Studio para criar o protótipo do fluxo de trabalho.

  1. Abra o console do Step Functions e clique em Criar máquina de estado.

  2. Na caixa de diálogo Escolher um modelo, selecione Em branco.

  3. Escolha Selecionar para abrir o Workflow Studio em Modo de design.

  4. Na guia Fluxo, arraste o estado Mapa e solte no estado vazio chamado Arrastar o primeiro estado aqui.

  5. Na guia Configuração, em Nome do estado, insira Process data.

  6. Na guia Ações, arraste uma ação da API Invocação AWS Lambda e solte-a dentro do estado Processar dados.

  7. Altere o nome do estado Invocar AWS Lambda para Process CSV data.

Etapa 2: Configurar os campos necessários para o estado Mapa

Nesta etapa, você configura os seguintes campos obrigatórios do estado Mapa Distribuído (Mapa distribuído):

  • ItemReader— Especifica o conjunto de dados e sua localização a partir da qual o Map estado pode ler a entrada.

  • ItemProcessor: especifica os seguintes valores:

    • ProcessorConfig: define o Mode e o ExecutionType como DISTRIBUTED e EXPRESS, respectivamente. Isso define o modo de processamento do estado Map e o tipo de fluxo de trabalho para execuções de fluxo de trabalho secundário que o estado Mapa distribuído inicia.

    • StartAt: o primeiro estado no fluxo de trabalho do Mapa.

    • States: define o fluxo de trabalho Mapear, que é um conjunto de etapas a serem repetidas em cada execução do fluxo de trabalho secundário.

  • ResultWriter— Especifica a localização do Amazon S3 onde o Step Functions grava os resultados do estado do Distributed Map.

    Importante

    Certifique-se de que o bucket do Amazon S3 que você usa para exportar os resultados de uma execução de mapa esteja abaixo da mesma máquina de estado Conta da AWS e na Região da AWS mesma. Caso contrário, a execução da sua máquina de estado falhará com o erro States.ResultWriterFailed.

Para configurar os campos obrigatórios:
  1. Escolha o estado Process data (Dados processo) e, na guia Configuração, faça o seguinte:

    1. Para Modo de processamento, escolha Distribuído.

    2. Em Item source (Origem do item), escolha Amazon S3 e CSV file in S3 (Arquivo CSV no S3) na lista suspensa S3 item source (Origem do item do S3).

    3. Faça o seguinte para especificar a localização do seu arquivo CSV no Amazon S3:

      1. Para Objeto do S3, selecione Enter bucket and key (Inserir bucket e chave) na lista suspensa.

      2. Para Bucket, insira o nome do bucket do Amazon S3 que contém o arquivo CSV. Por exemplo, amzn-s3-demo-source-bucket.

      3. Em Chave, insira o nome do objeto Amazon S3 no qual você salvou o arquivo CSV. Você também deve especificar o nome do arquivo CSV nesse campo. Por exemplo, csvDataset/ratings.csv.

    4. Para arquivos CSV, também é necessário especificar a local do cabeçalho da coluna. Para fazer isso, escolha Configuração adicional e, para CSV header location (Localização do cabeçalho CSV), retenha a seleção-padrão de First row (Primeira linha) se a primeira linha do seu arquivo CSV for o cabeçalho. Caso contrário, escolha Given (Fornecido) para especificar o cabeçalho na definição da máquina de estado. Para obter mais informações, consulte ReaderConfig.

    5. Para o Child execution type (Tipo de execução secundária), escolha Express.

  2. Em Local de exportação, para exportar os resultados da Execução do mapa para um local específico do Amazon S3, escolha Exportar a saída do estado do mapa para o Amazon S3.

  3. Faça o seguinte:

    1. Para Bucket do S3, escolha Enter bucket name and prefix (Inserir nome e prefixo do bucket) na lista suspensa.

    2. Para Bucket, insira o nome do bucket do Amazon S3 para o qual você quer exportar os resultados. Por exemplo, mapOutputs.

    3. Em Prefixo, insira o nome da pasta na qual você deseja salvar os resultados. Por exemplo, resultData.

Etapa 3: Configurar opções adicionais

Além das configurações necessárias para um estado Mapa Distribuído (Mapa Distribuído), você também pode especificar outras opções. Isso pode incluir o número máximo de execuções simultâneas de fluxos de trabalho secundários e o local para o qual exportar o resultado do estado Map.

  1. Escolha o estado Process data (Processar dados). Em seguida, em Origem do item, escolha Configuração adicional.

  2. Faça o seguinte:

    1. Escolha Modificar itens com ItemSelector para especificar uma entrada JSON personalizada para cada execução do fluxo de trabalho secundário.

    2. Insira a seguinte entrada JSON:

      { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" }

      Para obter informações sobre como criar uma entrada personalizada, consulte ItemSelector (Mapa).

  3. Nas Configurações de tempo de execução, em Limite de simultaneidade, especifique o número de execuções simultâneas de fluxo de trabalho secundário que o estado Mapa distribuído pode iniciar. Por exemplo, digite 100.

  4. Abra uma nova janela ou guia no seu navegador e conclua a configuração da função do Lambda que você usará nesse fluxo de trabalho, conforme explicado em Etapa 4: Configurar uma função do Lambda.

Etapa 4: Configurar uma função do Lambda

Importante

Certifique-se de que sua função Lambda esteja sob a Região da AWS mesma que sua máquina de estado.

  1. Abra o console do Lambda e clique em Criar função.

  2. Na página Create function, selecione Author from scratch.

  3. Na seção Informações básicas, configure a função do Lambda:

    1. Em Function name (Nome da função), insira distributedMapLambda.

    2. Em Runtime (Tempo de execução), selecione Node.js.

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

    4. Depois de criar a função do Lambda, copie o nome do recurso da Amazon (ARN) da função exibido no canto superior direito da página. Você precisará fornecer isso em seu protótipo de fluxo de trabalho. A seguir está um exemplo de ARN.

      arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda
  4. Copie o código a seguir para a função Lambda e cole-o na seção Código-fonte da distributedMapLambdapágina.

    exports.handler = async function(event, context) { console.log("Received Input:\n", event); return { 'statusCode' : 200, 'inputReceived' : event //returns the input that it received } };
  5. Escolha Implantar. Depois que sua função for implantada, escolha Testar para ver a saída da sua função do Lambda.

Etapa 5: Atualizar o protótipo do fluxo de trabalho

No console do Step Functions, você atualizará seu fluxo de trabalho para adicionar o ARN da função do Lambda.

  1. Volte para a guia ou janela em que você criou o protótipo do fluxo de trabalho.

  2. Escolha a etapa Process CSV data (Processar dados CSV) e, na guia Configuração, faça o seguinte:

    1. Em Tipo de integração, escolha Otimizado.

    2. Para Nome da função, insira o nome da função do Lambda. Escolha a função na lista suspensa exibida ou escolha Enter function name (Inserir nome da função) e forneça o ARN da função do Lambda.

Etapa 6: Revisar a definição da Amazon States Language gerada automaticamente e salvar o fluxo de trabalho

Conforme você arrasta e solta os estados das guias Ação e Fluxo para a tela, o Workflow Studio cria automaticamente a definição da Amazon States Language do fluxo de trabalho em tempo real. Você pode editar essa definição conforme necessário.

  1. (Opcional) Clique em Definição no painel Painel Inspetor e veja a definição da máquina de estado.

    dica

    Você também pode ver a definição de ASL no Editor de código do Workflow Studio. No editor de código, você também pode editar a definição de ASL do fluxo de trabalho.

    O código de exemplo a seguir mostra a definição da Amazon States Language gerada automaticamente para seu fluxo de trabalho.

    { "Comment": "Using Map state in Distributed mode", "StartAt": "Process data", "States": { "Process data": { "Type": "Map", "MaxConcurrency": 100, "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-source-bucket", "Key": "csvDataset/ratings.csv" } }, "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "EXPRESS" }, "StartAt": "Process CSV data", "States": { "Process CSV data": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:distributedMapLambda" }, "End": true } } }, "Label": "Processdata", "End": true, "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "mapOutputs", "Prefix": "resultData" } }, "ItemSelector": { "index.$": "$$.Map.Item.Index", "value.$": "$$.Map.Item.Value" } } } }
  2. Especifique um nome para a máquina de estado. Para fazer isso, escolha o ícone de edição ao lado do nome padrão da máquina de estado de MyStateMachine. Em seguida, em Configuração da máquina de estado, insira um nome na caixa Nome da máquina de estado.

    Para este tutorial, insira o nome DistributedMapDemo.

  3. (Opcional) Em Configuração da máquina de estado, especifique outras configurações do fluxo de trabalho, como o tipo de máquina de estado e a função de execução.

    Para este tutorial, mantenha todas as seleções padrão na Configuração da máquina de estado.

  4. Na caixa de diálogo Confirmar criação do perfil, selecione Confirmar para continuar.

    Você também pode escolher Exibir configurações do perfil para voltar às Configurações da máquina de estado.

    nota

    Se você excluir o perfil do IAM criado pelo Step Functions, não será possível recriá-lo posteriormente. Da mesma forma, se você modificar a função (por exemplo, removendo o Step Functions das entidades principais na política do IAM), o Step Functions não poderá restaurar as configurações originais dela posteriormente.

Etapa 7: Executar a máquina de estado

Uma execução é uma instância da máquina de estado em que você executa o fluxo de trabalho para realizar tarefas.

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

  2. Na caixa de diálogo Iniciar execução, faça o seguinte:

    1. (Opcional) Insira um nome de execução personalizado para substituir o padrão gerado.

      Nomes e registro em log não ASCII

      O Step Functions aceita nomes de máquina de estado, execuções, atividades e rótulos que contenham caracteres não ASCII. Como esses caracteres não funcionarão com a Amazon CloudWatch, recomendamos usar somente caracteres ASCII para que você possa acompanhar as métricas. CloudWatch

    2. (Opcional) No campo Entrada, insira os valores de entrada no formato JSON para executar o fluxo de trabalho.

    3. Selecione Iniciar execução.

    4. O console do Step Functions direciona você para uma página em que o título é o ID da execução. Essa página é conhecida como página de Detalhes da execução. Nesta página, você pode revisar os resultados da execução à medida que a execução avança ou após a conclusão.

      Para revisar os resultados da execução, escolha estados individuais na Exibição em gráfico e, em seguida, escolha as guias individuais no painel Detalhes da etapa para visualizar os detalhes de cada estado, incluindo entrada, saída e definição, respectivamente. Para obter detalhes sobre as informações de execução que você pode visualizar na página Detalhes da execução, consulte Visão geral dos detalhes da execução.

    Por exemplo, escolha o estado Map e escolha Execução do mapa para abrir a página Detalhes da execução do mapa. Nessa página, você pode visualizar todos os detalhes da execução do estado Mapa distribuído e as execuções do fluxo de trabalho secundário que ele iniciou. Para obter informações sobre essa página, consulte Visualizar execuções de mapa.