Transmitir dados para o MongoDB Atlas usando o AWS Glue
BS
Babu Srinivasan, Anuj Panchal, Igor Alekseev6 min read • Published Apr 16, 2024 • Updated Jan 15, 2025
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 Amazon Web Services Glue Studio é utilizado para enriquecer os dados. Os dados enriquecidos são armazenados em um bucket S3, enquanto o fluxo consolidado é armazenado no MongoDB Atlas e disponibilizado 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.
1 export AWS_ACCESS_KEY_ID = <"your AWS access key"> 2 export AWS_SECRET_ACCESS_KEY =<"your AWS secret access key"> 3 export AWS_SESSION_TOKEN = <"your AWS session token">
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:
1 `aws-etl-mongo-atlas-stack` 2 `aws-etl-kinesis-stream-stack` 3 `aws-etl-bucket-stack`
aws-etl-glue-job-stack
Vamos examinar cada uma das pilhas:
Pilha para MongoDB Atlas : aws-etl-mongo-atlas-stack Esta 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.
1 MongoDB::Atlas::Project, 2 MongoDB::Atlas::DatabaseUser, 3 MongoDB::Atlas::Cluster, 4 MongoDB::Atlas::ProjectIpAccessList
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.
1 aws cloudformation list-types \ 2 --visibility PUBLIC \ 3 --filters "Category=THIRD_PARTY,TypeNamePrefix=Mongodb"
Comando para ativar a Extensão Pública. Use este comando para ativar todas as quatro extensões públicas mencionadas nas etapas anteriores.
1 aws cloudformation activate-type --region us-east-1 --public-type-arn "<arn for the public extension noted down in the previous step>" --execution-role-arn "<arn of the role created in step a>"
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:
1 cdk deploy aws-etl-mongo-atlas-stack
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.
![Criação de um cluster MongoDB Atlas ][9]
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:
1 cdk deploy aws-etl-kinesis-stream-stack
Depois de implantar a pilha com sucesso, verifique a seção Saídas da pilha. Você encontrará a função CustomerOrderKinesisDataStream Kinesis.
![Saída da pilha do CloudFormation][10]
A captura de tela acima mostra a saída da pilha do CloudFormation para fluxos do Kinesis.
![Kinesis stream][11]
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.
1 cdk deploy aws-etl-bucket-stack
Após a implantação bem-sucedida da pilha, verifique a seção Outputs (Saídas) da pilha. Você encontrará o recurso SourceBucket S3 .
![Saída da pilha do CloudFormation][12]
A captura de tela acima mostra a Saída da pilha CloudFormation.
Bucket AWS S3 :
![S3 buckets criados][13]
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.
1 cdk deploy aws-etl-glue-job-stack
![Saída da pilha do CloudFormation][14]
A captura de tela acima mostra a saída da pilha CloudFormation.
![Amazon Web Services Glue Studio][15]
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/
![Parâmetros do Amazon Web Services Glue][16]
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
1 { 2 "_id": "1", 3 "country_id": "1", 4 "customer_name": "NICK", 5 "email_id": "nick@gmail.com", 6 "orders": [ 7 { 8 "order_id": "8", 9 "product_name": "Artisanal Cheese Selection", 10 "quantity": "8", 11 "price": "29.17" 12 } 13 ] 14 }
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.