O blog da AWS
Crie cópias de backup dos recursos do Data Lake dos provedores de telecomunicações
Por Lesly Reyes, Telco Solutions Architect e
Maddyzeth Ariza, Data Architect
Os data lakes oferecem a capacidade de carregar e consultar dados de forma natural. Atualmente, eles permitem que as organizações acelerem sua estratégia de dados. O principal desafio para gerenciar o data lake se deve ao armazenamento de dados brutos ou não supervisionados do conteúdo. Para que os dados do lago sejam utilizáveis, são necessários mecanismos definidos para catalogar e proteger esses dados. Para esse fim, existe o catálogo de dados do AWS Glue.
Os metadados são uma parte importante da governança e do gerenciamento de dados em uma organização. O catálogo de dados do AWS Glue fornece um repositório uniforme para armazenar e compartilhar metadados. Para um determinado conjunto de dados, o catálogo de dados pode armazenar a definição da tabela e a localização física, adicionar atributos e rastrear como os dados foram alterados ao longo do tempo.
O catálogo de dados do AWS Glue é compatível com uma variedade de aplicativos de big data, como o Apache Hive Metastore. Além disso, ele se integra ao serviço de consulta interativa Amazon Athena e à plataforma de big data na nuvem Amazon EMR. Depois que as tabelas forem adicionadas ao catálogo de dados, elas estarão disponíveis para processos ET, consultas com Amazon Athena, Amazon EMR e Amazon Redshift Spectrum, tornando uma visão comum dos dados disponíveis entre esses serviços. Quando os dados já estão catalogados, é importante manter cópias de backup dos esquemas organizacionais dos dados, para que, em caso de falhas, tanto as informações quanto o esquema no qual foram armazenadas possam ser recuperados.
Neste artigo, demonstramos como usar o AWS Glue para fazer backup dos recursos do data lake usando os metadados armazenados no catálogo de dados.
Solução
A maioria das empresas tem uma grande quantidade de informações armazenadas em sua organização, mas elas ainda não estão amplamente acessíveis para outras equipes, e é por isso que nascem os data lakes. No entanto, a maneira pela qual esses dados serão organizados dentro do lago também é importante, e é por isso que as estruturas ou serviços que formarão o data lake são definidos.
Normalmente falamos sobre o backup das informações existentes em lagos de dados, mas também é importante apoiar os recursos que as compõem, como os esquemas dos bancos de dados que armazenam as informações. Para as operadoras de telecomunicações, isso não é exceção, pois elas armazenam grandes quantidades de dados de diferentes fontes, que serão depositados em data lakes dentro de sua organização, pois possuem dados heterogêneos; na maioria dos casos, são armazenados em bancos de dados ou tabelas diferentes, com cada um deles tabela seu próprio esquema. Portanto, também é importante ter os recursos de um data lake copiados para recuperar as informações em caso de falha e também a estrutura à medida que elas são armazenadas.
Neste post, vemos como podemos usar o catálogo de dados do AWS Glue para ajudar desenvolvedores e empresas a fazer backups incrementais dos recursos de um data lake.
Arquitetura geral
Para fazer os backups, precisamos usar a interface de linha de comando (AWS CLI) para executar uma série de instruções que nos permitem obter as tabelas e os bancos de dados que compõem o data lake. O resultado das instruções gera um arquivo no formato JSON que pode ser armazenado em um bucket do serviço Amazon Simple Storage (S3). Um arquivo JSON será gerado para cada banco de dados do qual foi feito backup.
Para implantar a solução de backup para recursos de data lake, é necessário ter os seguintes recursos, o bucket onde os backups de segurança serão armazenados, as funções e permissões para executar os backups e o acesso ao projeto associado do AWS CodeBuild. Usando uma função Lambda, você verificará se o bucket está vazio. Nesse caso, um script será executado solicitando a obtenção de dados de todos os bancos de dados existentes. Em seguida, para cada banco de dados, o mesmo script percorrerá cada banco de dados procurando as tabelas em cada banco de dados. O resultado do script é um arquivo no formato JSON com a definição de cada tabela no banco de dados. O arquivo JSON obtido será empacotado no formato GNUZIP e armazenado no bucket do Amazon S3 dentro de uma subpasta com o nome da tabela, que por sua vez será encontrada em uma pasta com o nome do banco de dados.
Requisitos
Para começar a criar cópias de backup, os seguintes requisitos devem ser atendidos.
- Conta da AWS
- Chave de acesso programática
- Permissões
- Recursos da função Lambda
As seções a seguir demonstrarão como criar e instalar cada componente necessário no ambiente de nuvem da AWS.
Chave de acesso programática
Uma chave de acesso concede acesso programático aos seus recursos. O acesso programático é um tipo de acesso da interface de linha de comando da AWS usada pelos desenvolvedores. Além disso, como melhor prática, use chaves temporárias (funções do IAM) em vez de chaves de acesso. Para obter mais informações, consulte Práticas recomendadas para gerenciar chaves de acesso.
Para criar a chave de acesso, você deve fazer login no console do IAM. Na barra de navegação, você deve selecionar Usuários e criar um novo usuário. Ao criar o par de chaves de acesso Glue_developer, armazene o ID da chave de acesso e a chave de acesso secreta em um local seguro. A chave de acesso secreta só está disponível no momento em que é criada. Se você perder sua chave de acesso secreta, deverá excluí-la e criar uma nova.
Permissões
Para realizar backups, é necessário ter uma série de funções de serviço do IAM; a primeira é AWSBackupDefaultServiceRole, que terá as políticas gerenciadas necessárias para realizar o backup. As políticas estão listadas abaixo.
- AWSBackupServiceRolePolicyForBackup: concede ao AWS Backup a permissão para fazer backup por meio dos serviços da AWS.
- AWSBackupServiceRolePolicyForRestores: concede ao AWS Backup a permissão para restaurar estados dos serviços da AWS. Como excluir ou criar um volume do EBS, instâncias do RDS, entre outros.
- AWSBackupServiceRolePolicyForS3Backup: concede ao AWS Backup a permissão para fazer backup de dados armazenados em um bucket do Amazon S3.
- AWSBackupServiceRolePolicyForS3Restores: concede ao AWS Backup a permissão para restaurar buckets do S3.
Além disso, como parte dessa solução, é necessário ter funções para realizar as diferentes etapas do backup. As funções criadas pela solução são as seguintes.
- RolelambaBackupCatalog: a função fornece permissões para a função Lambda no Catálogo de Dados.
- sdfl-catalog-backup-lambda-role: concede permissões à função Lamba no Serveless Datalake Framework (SDLF).
- sdfl-backup-event-role: A função fornece ao serviço Amazon EventBridge permissões sobre o SDLF.
Recursos da função Lambda
Antes de lançar o modelo de serviço do AWS CloudFormation, é necessário ter o código e a camada da função Lambda. Para que o modelo funcione sem modificações, os arquivos devem ser armazenados da seguinte forma.
Finalmente, no link a seguir, você pode baixar o código da camada da função lambda.
Solução detalhada
A solução implantará recursos como funções do IAM, uma função Lambda para backup e regras para o Amazon EventBridge Service. Recursos da AWS, como os buckets do Amazon S3 e a função Lambda, serão criados automaticamente usando o modelo de serviço do CloudFormation. As permissões necessárias foram listadas na seção anterior. Os recursos e regras que serão lançados na conta são os seguintes:
- bucket de catálogo de backup: Esse é o bucket do Amazon S3 que armazenará os backups. O nome deve ser exclusivo, ele é gerado automaticamente usando a região e o ID da conta.
- Catálogo de backup do Lambda: É a função Lambda que executará os backups verificando o status dos bancos de dados.
- Camada de catálogo de backup Lambda: É a camada de biblioteca que a função Lambda exige.
- layers-lambda-backup-catalog-bucket: É o bucket onde o código da função Lambda e a camada de bibliotecas necessárias serão armazenados.
- cf-template-catalog-backup-bucket: Esse é o bucket em que o modelo do CloudFormation será armazenado.
- Regra de eventos do catálogo do CloudWatch Glue: Essa é a regra que monitorará as alterações no catálogo do AWS Glue.
- Banco de dados e regra de evento do CloudWatchGlue É a regra que monitorará as alterações no banco de dados.
O código do modelo para criar os recursos necessários está incluído abaixo. Antes de lançá-lo, é necessário substituir o AccountID pelo ID da conta que será usada. O nome que o modelo deve ter é template-backup.yaml.
Antes de iniciar a solução, também é necessário copiar o código deploy_backup.sh que implantará o modelo e inserir os parâmetros exigidos por ele, que são os nomes dos buckets. Lembre-se de que os arquivos devem ser armazenados em subpastas, conforme mostrado na imagem a seguir.
Para iniciar a solução, você deve executar o seguinte comando no console enquanto estiver na mesma pasta em que o arquivo deploy_backup.sh está localizado.
A imagem a seguir mostra os recursos, permissões e regras que serão criados pela pilha do CloudFormation.
A imagem a seguir mostra sequencialmente o que o código no arquivo deploy_backup.sh fará. Primeiro, você criará os eventos no serviço Amazon EventBridge para monitorar as alterações no catálogo de dados, por exemplo, se uma coluna foi adicionada ou excluída em um banco de dados. Em segundo lugar, ele lançará o modelo AWS CloudFormation. Lembre-se de que este serviço implanta infraestrutura em nuvem com o código .yaml, o modelo receberá como parâmetros os nomes dos buckets do Amazon S3 que ele usará para armazenar a camada do Lambda A função e o modelo também criará o bucket onde armazenará os arquivos de backup e também criará a função Lambda com todos os seus respectivos códigos para realizar os backups incrementais. O terceiro executará o primeiro backup.
Veja a seguir como a função Lambda criada e os eventos associados do Amazon EventBridge devem ser exibidos no console.
Além disso, os seguintes arquivos devem estar visíveis no código da função:
- sh: Esse código percorrerá cada tabela no banco de dados e obterá o esquema no formato JSON e, em seguida, o empacotará no formato GNUZIP e o armazenará na subpasta correspondente.
- py: Esse arquivo contém o código que executará a função Lambda, que consultará a região e o bucket do Amazon S3 onde os backups estão armazenados, também pesquisará os nomes dos bancos de dados e, para cada banco de dados, executará o script backup_catalog.sh.
Finalmente, a função lambda será executada pela primeira vez, que consultará o serviço AWS Glue em busca do esquema que os bancos de dados têm. Em seguida, o esquema que corresponde à definição de cada tabela será salvo em uma subpasta com o nome da tabela dentro da pasta com o nome do banco de dados. Aqui está um exemplo do caminho para uma cópia de backup de uma tabela.
bucket_backup_glue_catalog_name/database_name/table_name/table_name.gz
Backups incrementais
Os backups incrementais serão executados automaticamente. Sempre que forem detectadas alterações nos esquemas do banco de dados, o serviço Amazon EventBridge invocará a função Lambda que examinará cada tabela no banco de dados e salvará o esquema no bucket do banco de dados correspondente como table_name.gz. Esses backups também são versionados, pois os buckets do Amazon S3 criados pelo modelo têm essa opção habilitada.
Conclusão
Neste post, demonstramos que, com a ajuda dos serviços do AWS Glue e do Amazon Lambda, o backup dos recursos do data lake pode ser automatizado em minutos. O serviço AWS Glue é capaz de mapear bancos de dados e tabelas existentes em um data lake usando os metadados armazenados no catálogo de dados. Além disso, como os buckets do Amazon S3 são versionados, você pode ter versões diferentes das tabelas do banco de dados caso precise recuperar um esquema anterior. Se você quiser saber mais sobre governança de dados ou como organizar dados, este artigo fornecerá mais informações e você poderá continuar aprendendo consultando os
Você pode testar a implantação dessa solução na região Leste dos EUA (Norte da Virgínia). Para obter mais informações, consulte a página do AWS Glue ou o guia do usuário do AWS Glue.
Sobre as autoras
Lesly Reyes é arquiteta de soluções na Amazon Web Services para a vertical de telecomunicações com experiência em inteligência artificial e aprendizado de máquina.
Maddyzeth Ariza é arquiteta de dados na Amazon Web Services para a equipe da Intelligence Latam com experiência em Data Lakes e Analytics.