O blog da AWS

Use o Azure DevOps para implantar o AWS Glue Jobs no pipeline de CI/CD

Por Chan Nyein Zaw e Brijesh Pati

Neste post do Blog, mostraremos um exemplo do uso do AWS Toolkit for Azure DevOps para implantar suas tarefas do AWS Glue em várias contas da Amazon Web Services (AWS) para simular ambientes de desenvolvimento e produção.

Introdução

O AWS Glue é um serviço de integração de dados serverless que facilita a descoberta, a preparação e a combinação de dados para análise, aprendizado de máquina (ML) e desenvolvimento de aplicações. Como não tem servidor, não há infraestrutura para configurar ou gerenciar. Muitos clientes usam o AWS Glue para trabalhos de ETL (Extract, Transform and Load), mas enfrentam alguns desafios com as ferramentas de DevOps que podem usar ou preferem usar. Por exemplo, os clientes querem uma forma de integrar o AWS Glue com o Microsoft Azure DevOps. Nesta postagem do blog, abordamos esse desafio e mostramos como usar o AWS Toolkit para Azure DevOps.

Esse kit de ferramentas é uma extensão gratuita para o Microsoft Azure DevOps Services e o Azure DevOps Server que facilita o gerenciamento e a implantação de aplicações usando a AWS. Ele fornece tarefas que permitem a integração com vários serviços da AWS. Ele também pode executar comandos usando o módulo AWS Tools for Windows PowerShell, bem como a AWS Command Line Interface (AWS CLI).

Visão geral da solução

Essa solução cria um pipeline de CI/CD com vários estágios no Azure DevOps. Ao usar o AWS Toolkit for Azure DevOps, o pipeline extrai as informações de trabalho do AWS Glue de uma conta da AWS (nesta postagem, ela será chamada de conta Dev AWS) e as armazena no Azure Repos para controle de versão.

Há um segundo Azure Pipelines que é usado para implantar esse trabalho do AWS Glue em outra conta da AWS (chamada de conta Prod AWS) usando o AWS Toolkit for Azure DevOps.

A solução foi projetada da seguinte forma (Figura 1):

  1. Um engenheiro de dados configura o exemplo de solução de ETL na conta Dev AWS usando o AWS Management Console. O exemplo de solução de ETL envolve um rastreador, uma tabela, um banco de dados e um trabalho do AWS Glue. O engenheiro de dados define a transformação dos dados e faz alterações no processo de ETL conforme necessário. O exemplo da solução ETL será explicado com mais detalhes posteriormente neste post.
  2. O engenheiro de dados executa o Azure Pipelines para recuperar o rastreador, as tarefas e outros dados de configuração do AWS Glue da conta Dev AWS e os armazena no Azure Repos. O código será então revisado e promovido para a branch principal.
  3. Depois que as alterações são aprovadas, o engenheiro de dados executa outro Azure Pipelines para recuperar os dados do AWS Glue do Azure Repos e os implanta na conta Prod AWS.AWS Glue Jobs DevOps Process Overview with Azure DevOps for Versioning

Figura 1: Visão geral do processo de DevOps do AWS Glue Jobs com o Azure DevOps para versionamento

Pré-requisitos

Esta postagem pressupõe que você atendeu aos seguintes pré-requisitos:

Passo a passo

Etapa 1. Primeiro, configure uma conexão de serviço da AWS no Azure DevOps (Figura 2). Siga estas instruções para criar uma nova conexão de serviço no Azure Pipelines.

  1. Use o tipo “Conexão de serviço da AWS” para criar a conexão da conta Dev AWS.
  2. Repita o processo para criar a conexão da conta Prod AWS.
  3. Depois que as conexões de serviço forem criadas com êxito, vá para a próxima etapa.Adding Azure DevOps Service Connection Sample

Figura 2: Amostra de conexão do serviço Azure DevOps

Etapa 2. Crie um Azure Pipelines para recuperar o modelo e a configuração do AWS Glue da conta Dev AWS (Figura 3).

  1. Crie novos Azure Pipelines seguindo estas instruções.
  2. Adicione uma nova tarefa no Azure Pipelines do tipo “AWS Tools for Windows PowerShell Script”.
  3. Escolha a “Dev AWS Service Connection” que você criou anteriormente e a região da AWS que você está usando.

Etapa 3. Depois de adicionar a tarefa, substitua esse script dentro da tarefa. Verifique a substituição de todos os espaços reservados entre colchetes, como “[REPLACE AWS GLUE JOB NAME]”.

Adding AWS Tools for Windows PowerShell Script

Figura 3: Adicionando o AWS Tools for Powershell Script

Etapa 4. Crie o arquivo de mapeamento no seu repositório:

  1. Navegue até o Azure Repos que você usou anteriormente.
  2. Crie um novo arquivo chamado “mapping.json” no mesmo diretório.
  3. Copie e cole o código a seguir no arquivo e substitua todos os espaços reservados entre colchetes pelos respectivos valores do seu ambiente. “DEV S3 BUCKET NAME WHERE GLUE SCRIPT EXISTS” pode ser encontrado na seção Detalhes do trabalho do AWS Glue no campo Caminho do script (Figura 4).
    
    {
       "s3://[REPLACE WITH DEV S3 RAW DATA BUCKET]": "s3://[REPLACE WITH PROD S3 RAW DATA BUCKET]",
       "[REPLACE WITH DEV GLUE SERVICE ROLE ARN]": "[REPLACE WITH PROD GLUE SERVICE ROLE ARN]",
       "s3://[REPLACE WITH DEV S3 TRANSFORM DATA BUCKET]": "s3://[REPLACE WITH PROD S3 TRANSFORM DATA BUCKET]",
       "[REPLACE WITH DEV S3 BUCKET NAME WHERE GLUE SCRIPT EXISTS]": "[REPLACE WITH PROD S3 BUCKET NAME WHERE GLUE  SCRIPT EXISTS]"
    }

    Example AWS Glue Job Script S3 path

Figura 4: Exemplo de caminho S3 do script de trabalho do AWS Glue

Etapa 5. Crie um Azure Pipelines para implantar o modelo e a configuração do AWS Glue na conta Prod AWS.

  1. Crie novos Azure Pipelines seguindo estas instruções.
  2. Adicione uma nova tarefa no Azure Pipelines do tipo “AWS Tools for Windows PowerShell Script”.
  3. Escolha a “Conexão de serviço Prod AWS” que você criou anteriormente e a região da AWS que você está usando.
  4. Depois de adicionar a tarefa, substitua esse script dentro da tarefa:

Verificando os pipelines

Depois de implantar dois pipelines do passo a passo anterior, você pode executar o primeiro pipeline. Você deve conseguir encontrar os seguintes arquivos nos Azure Repos designados:

  • job-script.py
  • job-template.json
  • mapeamento.json

Consulte a Figura 5.

Example AWS Glue Job in Azure Repos

Figura 5: Exemplo de trabalho do AWS Glue no Azure Repos

Em seguida, execute o segundo pipeline. Você deve conseguir encontrar o trabalho do AWS Glue em sua conta Prod AWS. Consulte a Figura 6.

Example AWS Glue job was deployed in Prod AWS account via Azure Pipelines

Figura 6: Exemplo de trabalho do AWS Glue foi implantado na conta Prod AWS por meio do Azure Pipelines

Solução de problemas e considerações

Ao implantar um pipeline de ETL do AWS Glue em diferentes contas e ambientes da AWS gerenciados por meio do Azure DevOps, há várias considerações importantes para garantir operações tranquilas e confiáveis. À medida que o pipeline extrai dados, executa transformações e carrega os resultados de forma distribuída, quaisquer inconsistências ou problemas podem afetar o fluxo de trabalho geral. Esta seção descreve os principais pontos a serem considerados em relação à consistência do ambiente, monitoramento, controles de acesso, controle de versão, dependências e outros aspectos operacionais da solução Glue distribuída. Abordar essas considerações durante o planejamento e a implementação pode ajudar a reduzir os esforços de solução de problemas posteriores.

  • Consistência do ambiente e do artefato: garanta que as fontes de extração, os esquemas de dados e as configurações do banco de dados do AWS Glue sejam consistentemente definidos e sincronizados em todas as contas e ambientes da AWS no Azure DevOps. Valide os mapeamentos durante as implantações para detectar o desvio.
  • Monitoramento e alertas: utilize o Amazon CloudWatch para monitorar as execuções de trabalhos do AWS Glue em busca de falhas. Integre-se com o Azure Pipelines para obter visibilidade de ponta a ponta, configure alarmes e notifique as partes interessadas imediatamente.
  • Controle de acesso e segurança: atribua funções menos privilegiadas do AWS Identity and Access Management (IAM) para recursos da AWS acessados pelo Azure Pipelines.
  • Controle de versão e prevenção de conflitos: isole as alterações usando as ramificações de recursos e pull requests do Git. Valide a ausência de conflitos antes de mesclar as versões com as ramificações principais que acionam as implantações.
  • Gerenciamento de dependências: dependências de pacotes e versões, como bibliotecas, JARs e configurações, juntas. Implante automaticamente dependências empacotadas em ambientes usando o Azure Pipelines.
  • Teste e validação: teste rigorosamente fluxos de trabalho completos de implantação de ponta a ponta, desde o desenvolvimento até os estágios de não produção, antes do lançamento da produção. Valide também as pós-implantações.
  • Desempenho e escalabilidade: projete a infraestrutura da AWS, como trabalhos, bancos de dados e armazenamento do AWS Glue, para escalar automaticamente de forma elástica com base na carga. Otimize os tempos limite de trabalho do Azure Pipelines para garantir que as implantações possam lidar com o aumento da carga de trabalho e dos volumes de dados ao longo do tempo. Monitore as métricas de desempenho do AWS Glue para resolver proativamente os gargalos.

Limpeza

Depois de testar e verificar seu pipeline, você deve remover todos os recursos não utilizados criados neste exemplo para evitar despesas. Use o AWS Management Console para excluir o rastreador do AWS Glue, as tarefas e os buckets do Amazon S3. Em seguida, remova os pipelines não utilizados do Portal do Azure DevOps.

Conclusão

Nesta postagem do blog, fornecemos um guia passo a passo para definir, provisionar e gerenciar alterações em uma solução de ETL do AWS Glue usando o AWS Toolkit for Azure DevOps para integrar o controle de versão e implantar recursos em outra conta da AWS. Este exemplo mostra como você pode criar uma solução ETL em várias contas de desenvolvimento/produção da AWS usando pipelines de CI/CD com os serviços do Azure DevOps.

Você também pode aprender mais sobre a implantação na AWS usando pilhas do AWS CloudFormation diretamente do seu pipeline de criação existente do Azure DevOps nesta postagem do blog.

A AWS tem significativamente mais serviços e mais recursos dentro desses serviços do que qualquer outro provedor de nuvem, tornando mais rápido, fácil e econômico mover seus aplicativos existentes para a nuvem e criar praticamente qualquer coisa que você possa imaginar. Ofereça aos seus aplicativos Microsoft a infraestrutura de que eles precisam para gerar os resultados comerciais que você deseja. Visite nosso .NET on AWS e AWS Database para obter orientações e opções adicionais para suas cargas de trabalho da Microsoft. Entre em contato conosco para iniciar sua jornada de migração e modernização hoje mesmo.

Este blog em português é uma tradução do blog original em inglês.

TAGS: DevOps

Autores

Chan Nyein Zaw, arquiteto de soluções da equipe de serviços financeiros da AWS no Reino Unido, tem uma vasta experiência no setor. Sua jornada o levou a diversas funções, incluindo desenvolvedor, administrador de TI, gerente de desenvolvimento, consultor de desenvolvimento e arquiteto de nuvem. Chan está entusiasmada em ajudar os clientes a criar soluções acessíveis globalmente e a enfrentar os desafios diários por meio da tecnologia.

 

Brijesh Pati é arquiteto de soluções corporativas na AWS. Seu foco principal é ajudar clientes corporativos a adotar tecnologias de nuvem para suas cargas de trabalho. Ele tem experiência em desenvolvimento de aplicativos e arquitetura corporativa e trabalhou com clientes de vários setores, como esportes, finanças, energia e serviços profissionais. Seus interesses incluem arquiteturas sem servidor e IA/ML.

 

 

Tradutores e Revisores

Luiz Rampanelli é um Solutions Architect no time da AWS Latam. Possui mais de 10 anos de experiência com workloads Microsoft em nuvem e ambientes híbridos. Atua com desenho de soluções seguindo as melhores práticas para que os clientes possam aproveitar ao máximo os benefícios da nuvem da AWS.
Diego Voltz atua como arquiteto de soluções senior no seguimento de enterprise na AWS no sul da Florida. Ele atuou por 15 anos como CTO de Startups no seguimento de Web Hosting e Health, tendo como foco virtualização, Storage e containers, hoje ajuda os clientes da AWS na jornada de adoção da nuvem e na otimização dos custos.