Transmitir dados para o MongoDB Atlas usando o AWS Glue
Avalie esse Tutorial
Neste tutorial, você encontrará uma demonstração tangível de como o AWS Glue, o Amazon Kinesis e o MongoDB Atlas se integram perfeitamente, criando uma solução simplificada de streaming de dados junto com recursos de extração, transformação e carregamento (ETL). Este repositório também aproveita o poder do AWS CDK para automatizar a implantação em diversos ambientes, aumentando a eficiência de todo o processo.
Para acompanhar este tutorial, você deve ter proficiência intermediária com os serviços da AWS e do MongoDB.
Na arquitetura descrita acima, vários streams de dados, como pedido e cliente, são recuperados por meio do Amazon Kinesis stream. Posteriormente, o AWS Glue Studio é utilizado para melhorar os dados. Os dados enriquecidos são copiados em um bucket S3 , enquanto o fluxo consolidado é armazenado no MongoDB Atlas e disponibilizado para acesso como APIs de dados para sistemas downstream.
Este repositório é desenvolvido utilizando us-east-1 como a região padrão. Atualize os scripts para sua região específica (se necessário). Esse repositório criará automaticamente um projeto MongoDB Atlas e um cluster de banco de dados de camada livre. Não há necessidade de criar um cluster de banco de dados manualmente. Este repositório é criado para fins de demonstração e o acesso IP não é restrito (0.0.0.0/0). Certifique-se de fortalecer a segurança atualizando o endereço IP relevante (se necessário).
git clone https://github.com/mongodb-partners/Stream_Data_into_MongoDB_AWS_Glue
cd kinesis-glue-aws-cdk
a. Configure o ID da chave de acesso da variável de ambiente da AWS, a chave de acesso secreta da AWS e, opcionalmente, o token de sessão da AWS.
b. Usaremos o CDK para facilitar nossas implantações.
Você deve ter o npm pré-instalado. Se você não tiver o CDK instalado:
npm install -g aws-cdk
Verifique se você está no diretório raiz.
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
Para a configuração de desenvolvimento, use requires-dev.txt.
c. Bootstrap o aplicativo com a conta AWS.
cdk bootstrap
Defina o ORG_ID como uma variável de ambiente no .env Migrator. Todos os outros parâmetros são definidos como padrão em global_args.py na pasta kinesis-glue-aws-cdk. Os parâmetros MONGODB_USER e MONGODB_PASSWORD são definidos diretamente em mongodb_atlas_stack.py e cola_job_stack.py
A captura de tela abaixo mostra o local para obter o ID da organização do MongoDB Atlas.
Observe que usando "0.0.0.0/0" como IP, estamos permitindo o acesso ao banco de dados de qualquer lugar. Isso pode ser adequado para fins de desenvolvimento ou teste, mas é altamente desencorajado para ambientes de produção, pois expõe o banco de dados a possíveis ataques de fontes não autorizadas.
e. Liste as CDKs:
cdk ls
Você deverá ver uma saída das pilhas disponíveis:
aws-etl-glue-job-stack
Vamos examinar cada uma das pilhas:
Pilha para MongoDB Atlas: aws-etl-mongo-atlas-stack Essa pilha criará um projeto MongoDB Atlas e um cluster de banco de dados de camada livre com permissão de usuário e rede (aberto).
a. Crie um papel AWS com seu relacionamento de confiança como um serviço CloudFormation.
b.A seguinte extensão pública no CloudFormation Registry deve ser ativada com a função criada na etapa anterior. Após fazer login no console AWS, use este link para registrar extensões no CloudFormation.
Passe o ARN da role da etapa anterior como entrada para ativar o recurso MongoDB na Extensão Pública.
Ativação de recursos do MongoDB em extensão pública:
A captura de tela acima mostra a ativação das Extensões Públicas de Registro para o MongoDB::Atlas::Cluster.
Como alternativa, você pode ativar a extensão pública acima por meio da AWS CLI.
Comando para listar as extensões públicas MongoDB. Anote os alas para as quatro extensões públicas acima.
Comando para ativar a Extensão Pública. Use este comando para ativar todas as quatro extensões públicas mencionadas nas etapas anteriores.
c. Faça login no console do MongoDB e anote o ID da organização. Certifique-se de que o ID da organização esteja atualizado no global_args.py
A captura de tela acima mostra as configurações da Organização do Cluster MongoDB.
d. Criar uma chave de API em uma organização com acesso de Proprietário da organização. Anote as credenciais da API.
A captura de tela acima mostra os gerenciadores de acesso para a chave de API criada no cluster do MongoDB Atlas.
Restrinja o acesso à API da organização com a lista de acesso à API. Fornecemos um 0 de acesso aberto.0.0.0/1 apenas para fins de demonstração. Desaconselhamos fortemente o uso desse recurso em qualquer ambiente de produção ou equivalente.
e. Um perfil deve ser criado no AWS Secrets Manager contendo a chave de API programática do MongoDB Atlas.
A captura de tela acima mostra os parâmetros da pilha do AWS CloudFormation.
Inicie a implantação com o seguinte comando:
Depois de implantar a pilha com sucesso, valide a seção Saídas da pilha e o MongoDB Atlas cluster. Você encontrará o stdUrl e o stdSrvUrl para a connection string.
A captura de tela acima mostra a saída da pilha CloudFormation.
A captura de tela acima mostra a criação bem-sucedida do cluster do MongoDB Atlas.
Esta pilha criará dois fluxos de dados do Kinesis. Cada produtor executa um fluxo de ingestão de eventos para diferentes clientes com seus pedidos.
Inicie a implantação com o seguinte comando:
Depois de implantar a pilha com sucesso, verifique a seção Saídas da pilha. Você encontrará a função CustomerOrderKinesisDataStream Kinesis.
A captura de tela acima mostra a saída da pilha do CloudFormation para fluxos do Kinesis.
A captura de tela acima mostra o fluxo do Kinesis criado.
Essa pilha criará um bucket de3 S que será usado pelos trabalhos do AWS Glue para manter os detalhes do cliente e do pedido recebidos.
Após a implantação bem-sucedida da pilha, verifique a seção Outputs (Saídas) da pilha. Você encontrará o recurso SourceBucket S3 .
A captura de tela acima mostra a Saída da pilha CloudFormation.
Bucket AWS S3 :
A captura de tela acima mostra os buckets S3 criados.
Essa pilha criará dois trabalhos do AWS Glue: um trabalho para o cliente e outro para o pedido. O código está na localização glue_job_stack/glue_job_scripts/customer_kinesis_streams_s3.py e glue_job_stack/glue_job_scripts/order_kinesis_streams_s3.py.
A captura de tela acima mostra a saída da pilha CloudFormation.
A captura de tela acima mostra o trabalho do Amazon Web Services Glue Studio para configurar o trabalho.
A URL MongoDB do cluster recém-criado e outros parâmetros serão passados para o trabalho do AWS Glue programaticamente. Atualize esses parâmetros para seus valores (se necessário).
"Caminho dos logs da interface do usuário do Spark" e "Caminho temporário" Os detalhes serão mantidos no mesmo local do bucket com o nome de pasta /sparkHistoryLogs e /temporary.
s3://<S3_BUCKET_NAME>/sparkHistoryLogs
s3://<S3_BUCKET_NAME>/temporary/
A captura de tela acima mostra os parâmetros do Amazon Web Services Glue.
Quando estiver pronto com todas as pilhas, inicie os produtores para o cliente e faça o pedido. O código está nesse local, para ingerir dados em um fluxo de dados do kinesis e também iniciar o trabalho do Glue para ambos.
producer/customer.py
e producer/order.py
Use
cdk destroy
para limpar todos os recursos do Amazon Web Services CDK.Consulte o GitHub para resolver alguns problemas comuns encontrados ao usar o AWS CloudFormation/CDK com MongoDB Atlas Resources.
cdk ls
lista todas as pilhas no aplicativo.cdk synth
emite o modelo sincronizado do CloudFormation. cdk deploy
implanta esta pilha em sua conta/região padrão da AWS. cdk diff
compara a pilha distribuída com o estado atual. cdk docs
abre a documentação do CDK.Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.