Processe dados em um bucket do Amazon S3 com o Mapa distribuído - 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á.

Processe dados em um bucket do Amazon S3 com o Mapa distribuído

Este exemplo de projeto demonstra como você pode usar o estado do Mapa Distribuído para processar dados em grande escala, por exemplo, analisar dados meteorológicos históricos e identificar a estação meteorológica que tem a temperatura média mais alta do planeta a cada mês. Os dados meteorológicos são registrados em mais de 12.000 CSV arquivos, que por sua vez são armazenados em um bucket Amazon S3.

Esse projeto de amostra inclui dois estados de mapa distribuído, chamados de NOAdados de cópia distribuídos do S3 e P. rocessNOAAData Cópia distribuída do S3 NOA Os dados iteram sobre os CSV arquivos em um bucket público do Amazon S3 noaa-gsod-pdschamado e os copiam para um bucket do Amazon S3 em seu Conta da AWS. P rocessNOAAData itera sobre os arquivos copiados e inclui uma função Lambda que realiza a análise de temperatura.

O projeto de amostra primeiro verifica o conteúdo do bucket do Amazon S3 com uma chamada para a ação ListObjectsAPIV2. Com base no número de chaves retornadas em resposta a essa chamada, o projeto de exemplo toma uma das seguintes decisões:

  • Se a contagem de chaves for maior ou igual a 1, o projeto passa para o rocessNOAAData estado P. Esse estado de Mapa Distribuído inclui um Lambda função chamada TemperatureFunctionque encontra a estação meteorológica que teve a temperatura média mais alta a cada mês. Essa função retorna um dicionário com o year-month como chave e um dicionário que contém informações sobre a estação meteorológica como valor.

  • Se a contagem de chaves retornadas não exceder 1, o estado Distributed S3 copy NOA Data listará todos os objetos do bucket público noaa-gsod-pdse copiará iterativamente os objetos individuais para outro bucket em sua conta em lotes de 100. Um Mapa inline executa a cópia iterativa dos objetos.

    Depois que todos os objetos são copiados, o projeto passa para o rocessNOAAData estado P para processar os dados meteorológicos.

O projeto de amostra finalmente faz a transição para um redutor Lambda função que executa uma agregação final dos resultados retornados pela TemperatureFunctionfunção e grava os resultados em um Amazon DynamoDB mesa.

Com o Mapa distribuído, você pode realizar até 10 mil execuções paralelas de fluxo de trabalho secundário por vez. Neste projeto de amostra, a simultaneidade máxima do P rocessNOAAData Distributed Map é definida em 3.000, o que a limita a 3.000 execuções paralelas de fluxo de trabalho secundário.

Este projeto de amostra cria a máquina de estado, o suporte AWS recursos e configura as IAM permissões relacionadas. Explore este projeto de exemplo para saber como usar o Mapa distribuído para orquestrar workloads paralelas em grande escala ou usá-lo como ponto de partida para seus próprios projetos.

Importante

Esse projeto de exemplo está disponível somente na região Leste dos EUA (Norte da Virgínia).

AWS CloudFormation modelo e recursos adicionais

Você usa um CloudFormation modelo para implantar esse projeto de amostra. Este modelo cria os seguintes recursos em seu Conta da AWS:

  • Máquina de estado do Step Functions.

  • Função de execução para a máquina de estado. Essa função concede as permissões que sua máquina de estado precisa para acessar outras Serviços da AWS e recursos como a ação Invoke da função Lambda.

  • Um bucket do Amazon S3 nomeado NOAADataBucket. Esse bucket contém os CSV arquivos com dados meteorológicos.

  • Uma função do Lambda chamada ReducerFunction que executa uma agregação final dos dados meteorológicos e grava os resultados em uma tabela do Amazon DynamoDB.

  • Função de execução para a função redutora do Lambda. Essa função concede à função permissão para acessar outras Serviços da AWS.

  • Um bucket de saída do Amazon S3 para armazenar os resultados da análise climática.

  • Uma tabela do DynamoDB chamada ResultsDynamoDBTable que contém os resultados retornados pelo ReducerFunction.

  • Uma função do Lambda chamada TemperatureFunction que encontra a temperatura média mensal mais alta.

  • Função de execução para a função do Lambda. Essa função concede à função permissão para acessar outras Serviços da AWS.

  • Um grupo de CloudWatch registros que armazena informações relacionadas ao histórico de execução da máquina de estado.

Importante

Aplicam-se taxas padrão para cada serviço.

Etapa 1: Criar a máquina de estado e provisionar os recursos

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

  2. Digite Distributed Map to process files in S3 no campo de pesquisa e escolha Mapa distribuído para processar arquivos no S3 a partir dos resultados da pesquisa que são retornados.

  3. Escolha Próximo para continuar.

  4. Escolha Executar uma demonstração para criar um ready-to-deploy fluxo de trabalho e somente leitura, ou escolha Criar nele para criar uma definição de máquina de estado editável na qual você possa criar e implantar posteriormente.

    Para obter informações sobre os recursos que serão criados para esse projeto de exemplo, consulte AWS CloudFormation modelo e recursos adicionais.

    A imagem a seguir mostra o gráfico do fluxo de trabalho do Mapa distribuído para processar arquivos no projeto de exemplo do S3:

    Gráfico de fluxo de trabalho do Mapa distribuído para processar arquivos no projeto de exemplo do S3.
  5. Escolha Usar modelo para continuar com a seleção.

As próximas etapas dependem da sua escolha anterior:

  1. Execute uma demonstração — Você pode revisar a máquina de estado antes de criar um projeto somente para leitura com recursos implantados pelo AWS CloudFormation para o seu Conta da AWS.

    Você pode visualizar a definição da máquina de estado e, quando estiver pronto, escolher Implantar e executar para implantar o projeto e criar os recursos.

    A implantação pode levar até 10 minutos para criar recursos e permissões. Você pode usar o link Stack ID para monitorar o progresso no AWS CloudFormation.

    Após a conclusão da implantação, você deverá ver sua nova máquina de estado no console.

  2. Desenvolva com base nisso — você pode revisar e editar a definição do fluxo de trabalho. Talvez seja necessário definir valores para espaços reservados no projeto de amostra antes de tentar executar seu fluxo de trabalho personalizado.

nota

Cobranças padrão podem ser aplicadas aos serviços implantados em sua conta.

Etapa 2: Executar a máquina de estado

Depois que todos os recursos forem aprovisionados e implementados, você poderá executar a máquina de estado.

  1. Na página Máquinas de estado, escolha seu projeto de exemplo.

  2. Na página do projeto de exemplo, escolha Iniciar execução.

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

    1. (Opcional) Insira os valores de entrada no JSON formato para executar seu projeto de amostra.

      Se você optar por Executar uma demonstração, não precisará fornecer nenhuma entrada de execução.

      nota

      Se o projeto de demonstração que você implementou contiver dados de entrada de execução pré-preenchidos, use essa entrada para executar a máquina de estado.

    2. Selecione Iniciar execução.

    3. (Opcional) O console Step Functions direciona você para uma página intitulada com seu ID de 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.

      Depois que a execução for concluída, escolha estados individuais na Exibição em gráfico e, em seguida, escolha as guias individuais no painel de Detalhes da etapa para visualizar os detalhes de cada estado, incluindo entrada, saída e definição, respectivamente.

    4. (Opcional) Revise os resultados da execução exportados para o bucket do Amazon S3. Esses resultados incluem dados, como entrada e saída da execução e status da execução. ARN Para obter mais informações, consulte ResultWriter (Mapa).