Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Simplificar o gerenciamento de registros para o Amazon S3 usando exportações de registros baseadas em Atlas Push com o HashiCorp Terraform

Aastha Mahendru5 min read • Published Jul 08, 2024 • Updated Jul 08, 2024
TerraformAtlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
À medida que os volumes de dados gerenciados pelas organizações crescem exponencialmente, o gerenciamento eficaz de logs torna-se fundamental para manter o desempenho e a segurança das plataformas de banco de dados.
A automação e a configuração do gerenciamento de registros por meio de ferramentas de infraestrutura como código (IaC) podem permitir que os usuários enviem automaticamente os registros mongod, mongos e de auditoria diretamente para seus buckets S3, em vez de baixar manualmente os arquivos de log compactados ou criar soluções personalizadas para extrair continuamente os registros do Atlas.
Para aumentar a agilidade do desenvolvedor, estamos introduzindo um novo recurso que permite às equipes de desenvolvedores enviar registros para um bucket Amazon S3, fornecendo uma solução contínua, escalável e econômica para armazenamento e análise de registros.
Este guia mostrará como configurar o registro baseado em push para o Amazon S3 no Atlas por meio de nosso provedorHashiCorp Terraform MongoDB Atlas. Vamos começar!

Pré-requisitos

Você pode ativar o recursode exportação de log baseado em push em nível de projeto em sua organização Atlas depois de autorizar seu projeto Atlas a acessar o bucket S3 em sua conta da AWS. Isso significa que todos os clusters em seu projeto Atlas serão configurados automaticamente para enviar logs para o bucket S3 .
Então, para começar, vamos dar ao Atlas o que ele precisa para obter as permissões apropriadas!
Observe que, se preferir gerenciar funções e permissões do IAM por meio da interface do usuário ou de outras ferramentas, você pode fazer isso seguindo as etapas apropriadas descritas em Configurar o acesso unificado à AWS, ignorando Etapa #2e configurar as funções apropriadas em sua configuração do Terraform.*

Configurar os provedores HashiCorp Terraform MongoDB Atlas e Amazon Web Services

Neste tutorial, usaremos o Terraform para gerenciar todas as operações, para que você não precise se preocupar em alternar entre o Console de gerenciamento da AWS, a conta do MongoDB Atlas e os arquivos de configuração do Terraform. Isso exige que você primeiro especifique o provedor HashiCorp Terraform MongoDB Atlas , bem como as versões do provedor HashiCorp Terraform AWS em um arquivo version.tf , conforme abaixo:
1terraform {
2 required_providers {
3 mongodbatlas = {
4 source = "mongodb/mongodbatlas"
5 version = ">= 1.16.0"
6 }
7 aws = {
8 source = "hashicorp/aws"
9 version = ">= 5.0"
10 }
11 }
12 required_version = ">= 1.0"
13}
Observação: antes de implementar qualquer coisa, armazene as chaves da API programáticas do MongoDB Atlas que você criou como parte dos pré-requisitos como variáveis de ambientee, além disso, certifique-se de ter configurado suas credenciais para o provedor da AWS.
Vamos agora criar um arquivovariáveis.tf para declarar variáveis Terraform e um arquivocampoform.tfvars para definir valores de variável. Esses arquivos são normalmente criados dentro do diretório raiz do seu projeto Terraform.
Em variáveis.tf, definiremos o identificador da sua organização Atlas, o nome do seu novo projeto Atlas e o nome do novo bucket S3 para o qual os registros serão enviados:
1# Atlas Organization ID
2variable "atlas_org_id" {
3 type = string
4 description = "Atlas Organization ID"
5}
6
7# Atlas Project Name
8variable "atlas_project_name" {
9 type = string
10 description = "Atlas Organization ID"
11}
12
13# Unique AWS S3 Bucket Name
14variable "s3_bucket_name" {
15 type = string
16 description = "AWS S3 Bucket Name for logs"
17}
No arquivoterraform.tfvars, configuraremos os valores para as variáveis acima:
1atlas_org_id = "<UPDATE WITH YOUR ORG ID>"
2atlas_project_name = "<UPDATE WITH A NAME FOR PROJECT>"
3s3_bucket_name = "<UPDATE WITH A UNIQUE NAME FOR YOUR S3 BUCKET>"
Agora podemos executar terraform init no terminal. Isso inicializará o Terraform e baixará os provedores Terraform MongoDB Atlas e AWS.
A captura de tela mostra que o Terraform e os provedores foram inicializados com sucesso.

Configure o acesso da AWS para o MongoDB Atlas

Para configurar o acesso unificado da AWS, você deve dar acesso deProprietário da organização ou Proprietário do projeto ao projeto Atlas.
A partir daqui, configure o acesso do fornecedor de nuvem no MongoDB Atlas. Você pode fazer isso com o recursomongodbatlas_cloud_provider_access_setup que retorna um atlas_aws_account_arn e atlas_assumed_role_external_id.
Nesse ponto, seu arquivo de configuração *.tf deve ser semelhante a este:
1resource "mongodbatlas_project" "exampleProject" {
2 name = var.atlas_project_name
3 org_id = var.atlas_org_id
4}
5
6resource "mongodbatlas_cloud_provider_access_setup" "setupOnly" {
7 project_id = mongodbatlas_project.exampleProject.id
8 provider_name = "AWS"
9}
Se você estiver interessado em saber mais sobre esse mecanismo de autorização, visite a Amazon Web Services Docs.
Em seguida, crie uma função IAM com o assume_role_policy no Atlas configurado com a conta Atlas AWS da etapa anterior como o principal.
1resource "aws_iam_role" "atlasRole" {
2 name = "atlas-role"
3 max_session_duration = 43200
4
5 assume_role_policy = jsonencode({
6 "Version" : "2012-10-17",
7 "Statement" : [
8 {
9 "Effect" : "Allow",
10 "Principal" : {
11 "AWS" : "${mongodbatlas_cloud_provider_access_setup.setupOnly.aws_config[0].atlas_aws_account_arn}"
12 },
13 "Action" : "sts:AssumeRole",
14 "Condition" : {
15 "StringEquals" : {
16 "sts:ExternalId" : "${mongodbatlas_cloud_provider_access_setup.setupOnly.aws_config[0].atlas_assumed_role_external_id}"
17 }
18 }
19 }
20 ]
21 })
22}
23
24resource "aws_iam_role_policy" "atlasRolePolicy" {
25 name = "atlas-role-policy"
26 role = aws_iam_role.atlasRole.id
27
28 policy = jsonencode({
29 "Version" : "2012-10-17",
30 "Statement" : [
31 {
32 "Effect" : "Allow",
33 "Action" : "s3:*",
34 "Resource" : "*"
35 }
36 ]
37 })
38}
Por fim, use o recursomongodbatlas_cloud_provider_access_authorization para autorizar e configurar o novo ARN de função assumida do IAM.
Dica: por enquanto, autorizamos essa role apenas para ações S3 , mas, depois de bem-sucedido, você pode expandir a política e usar o valor role_id ao configurar outros serviços Atlas que usam a AWS, como Atlas Data Federation e encryption at rest.
1resource "mongodbatlas_cloud_provider_access_authorization" "authRole" {
2 project_id = mongodbatlas_project.exampleProject.id
3 role_id = mongodbatlas_cloud_provider_access_setup.setupOnly.role_id
4
5 aws {
6 iam_assumed_role_arn = aws_iam_role.atlasRole.arn
7 }
8}

Configurar um bucket do Amazon S3

Agora que você concedeu ao Atlas a autorização para o serviço Amazon S3 , criaremos um novo S3 bucket (ou usaremos um bucket existente) e configuraremos um recursoaws_iam_role_policy para permitir que o atlasRolecriado anteriormente seja executado operações necessárias para enviar os registros para este bucket:
1resource "aws_s3_bucket" "atlasLogBucket" {
2 bucket = var.s3_bucket_name
3 force_destroy = true // required for destroying as Atlas creates a test folder in the bucket when push-based log export is initially created
4}
5
6resource "aws_iam_role_policy" "atlasLogBucketPolicy" {
7 name = "atlas-log-bucket-policy"
8 role = aws_iam_role.atlasRole.id
9
10 policy = jsonencode({
11 "Version" : "2012-10-17",
12 "Statement" : [
13 {
14 "Effect" : "Allow",
15 "Action" : [
16 "s3:ListBucket",
17 "s3:PutObject",
18 "s3:GetObject",
19 "s3:GetBucketLocation"
20 ],
21 "Resource" : [
22 "${aws_s3_bucket.atlasLogBucket.arn}",
23 "${aws_s3_bucket.atlasLogBucket.arn}/*"
24 ]
25 }
26 ]
27 })
28}
Vamos implementar tudo até agora executando os comandos abaixo no terminal:
1terraform plan
2terraform apply
Com isso, você configurou seu bucket S3!

Habilitar exportação de registro baseado em push

Voltar para onde tudo começou, agora você pode habilitar muito facilmente a configuração de exportação de log baseada em push para seu projeto Atlas. Você só precisa do nome do bucket S3 e do role_id do recursomongodbatlas_cloud_provider_access_authorization. Adicione o seguinte ao seu arquivo *.tf:
1resource "mongodbatlas_push_based_log_export" "logExport" {
2 project_id = mongodbatlas_project.exampleProject.id
3 bucket_name = aws_s3_bucket.atlasLogBucket.bucket
4 iam_role_id = mongodbatlas_cloud_provider_access_authorization.authRole.role_id
5 prefix_path = "push-based-log-test"
6}
Para implantar novamente, execute a partir do terminal:
1terraform plan
2terraform apply
Se sua implementação foi bem-sucedida, você será recebido com "Apply complete! "
Terraform no terminal mostrando implantação
Você pode verificar a configuração buscando objetos no bucket S3 . Você pode fazer isso atualizando sua configuração do Terraform para incluir a fonte de dadosaws_s3_objects e especificar o nome do bucket e o caminho do prefixo da seguinte forma:
1data "aws_s3_objects" "atlasLogObjects" {
2 bucket = aws_s3_bucket.atlasLogBucket.bucket
3 prefix = mongodbatlas_push_based_log_export.logExport.prefix_path
4}
Liste os objetos no bucket criando um arquivooutputs.tf e referenciando o parâmetrokeys como abaixo:
1output "log_bucket_keys" {
2 value = data.aws_s3_objects.atlasLogObjects.keys
3}
Execute terraform plan seguido de terraform apply no terminal. Agora você deve ver um objeto "atlas-test " criado em seu bucket S3 nas saídas:
Terraform no terminal mostrando objetos criados no bucket do Amazon S3 como saídas
O Atlas cria esse objeto de teste para verificar se a função do IAM configurada tem acesso de gravação a esse bucket S3 para fins de exportação de registros baseada em push. É seguro excluir esse arquivo quando a configuração da exportação do log for bem-sucedida.
Agora que você configurou com êxito a exportação de registros baseada em push para seu bucket S3, assim que um cluster for implantado em seu projeto Atlas, você deverá ver os logs em seu bucket S3 configurado. Feliz registro!

Tudo feito

Parabéns! Agora você tem tudo de que precisa para começar a enviar os registros do banco de dados do MongoDB Atlas para o bucket do Amazon S3 .
O provedor HashiCorp Terraform Atlas é de código aberto sob a Licença Pública do Mozilla v2.0 e agradecemos as contribuições da comunidade. Para saber mais, consulte nossas diretrizes de contribuição.
A maneira mais rápida de começar é criar uma conta MongoDB Atlas a partir do AWS Marketplace. Para saber mais sobre o fornecedor Terraform, consulte nossa documentação, tutoriais, resumo da soluçãoou comece diretamente.
Go construir com o MongoDB Atlas e o provedor HashiCorp Terraform Atlas hoje!
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Capturando e armazenando óptica do mundo real com o MongoDB Atlas, o GPT-4 da OpenAI e o PyMongo


Sep 04, 2024 | 7 min read
Tutorial

Adicionando preenchimento automático aos seus aplicativos Laravel com Atlas Search


Dec 03, 2024 | 9 min read
exemplo de código

Final Space API


Jul 07, 2022 | 1 min read
Tutorial

Introdução ao Azure Spring Apps e ao MongoDB Atlas: um guia passo a passo


Jan 27, 2024 | 5 min read
Sumário