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

Como pausar e retomar clusters do Atlas de maneira fácil

Joe Drumgoole5 min read • Published Nov 30, 2021 • Updated Sep 11, 2024
Atlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Uma das coisas mais importantes a se pensar na cloud é o que está queimando dólares enquanto você dorme. No caso do MongoDB Atlas, ou seja, seus clusters ativos. No minuto em que você inicia um cluster (com exceção de nossa camada grátis), passamos a acumular custos.
Se você estiver usando um cluster dedicado - não um dos tipos de cluster compartilhados mais barato, como M0, M2 ou M5- então é fácil pausar um cluster usando a UI do Atlas, mas fazer login com mais 2Fa pode ser uma chatice. Não seria ótimo se pudéssemos simplesmente pular em uma linha de comando local para ver nossos clusters ativos?
Isso você pode fazer com uma ferramenta de linha de comando como curl, algum conhecimento de programação e conhecimento da APIdoMongoDB Atlas Admin. Mas quem tem tempo para isso? Não eu, com certeza.
É por isso que criei um script simples para automatizar essas etapas. Agora é um pacote Python no PyPi chamado mongodbotlas.
Você precisará de Python 3.6 ou melhor instalado para executar o script. (Esta é sua chance de escapar das capturas de 2.x.)
Apenas corra:
1$ pip install mongodbatlas
2 Collecting mongodbatlas
3 Using cached mongodbatlas-0.2.6.tar.gz (17 kB)
4 ...
5 ...
6 Building wheels for collected packages: mongodbatlas
7 Building wheel for mongodbatlas (setup.py) ... done
8 Created wheel for mongodbatlas: filename=mongodbatlas-0.2.6-py3-none-any.whl size=23583 sha256=d178ab386a8104f4f5100a6ccbe61670f9a1dd3501edb5dcfb585fb759cb749c
9 Stored in directory: /Users/jdrumgoole/Library/Caches/pip/wheels/d1/84/74/3da8d3462b713bfa67edd02234c968cb4b1367d8bc0af16325
10 Successfully built mongodbatlas
11 Installing collected packages: certifi, chardet, idna, urllib3, requests, six, python-dateutil, mongodbatlas
12 Successfully installed certifi-2020.11.8 chardet-3.0.4 idna-2.10 mongodbatlas-0.2.6 python-dateutil-2.8.1 requests-2.25.0 six-1.15.0 urllib3-1.26.1
Agora você terá um script instalado chamado atlascli. Para testar se a instalação funcionou, execute atlascli -h.
1$ atlascli -h
2 usage: atlascli [-h] [--publickey PUBLICKEY] [--privatekey PRIVATEKEY]
3 [-p PAUSE_CLUSTER] [-r RESUME_CLUSTER] [-l] [-lp] [-lc]
4 [-pid PROJECT_ID_LIST] [-d]
5
6 A command line program to list organizations,projects and clusters on a
7 MongoDB Atlas organization.You need to enable programmatic keys for this
8 program to work. See https://docs.atlas.mongodb.com/reference/api/apiKeys/
9
10 optional arguments:
11 -h, --help show this help message and exit
12 --publickey PUBLICKEY
13 MongoDB Atlas public API key.Can be read from the
14 environment variable ATLAS_PUBLIC_KEY
15 --privatekey PRIVATEKEY
16 MongoDB Atlas private API key.Can be read from the
17 environment variable ATLAS_PRIVATE_KEY
18 -p PAUSE_CLUSTER, --pause PAUSE_CLUSTER
19 pause named cluster in project specified by project_id
20 Note that clusters that have been resumed cannot be
21 paused for the next 60 minutes
22 -r RESUME_CLUSTER, --resume RESUME_CLUSTER
23 resume named cluster in project specified by
24 project_id
25 -l, --list List everything in the organization
26 -lp, --listproj List all projects
27 -lc, --listcluster List all clusters
28 -pid PROJECT_ID_LIST, --project_id PROJECT_ID_LIST
29 specify the project ID for cluster that is to be
30 paused
31 -d, --debug Turn on logging at debug level
32
33 Version: 0.2.6
Para que esse script funcione, você precisará fazer uma pequena configuração única em seu cluster. Você precisará de uma chave programática para seu cluster. Você também precisará habilitar o endereço IP do qual o cliente está fazendo solicitações.
Há duas maneiras de criar uma chave de API:

Chave API de projeto único

Indo para a página "Configurações do projeto" clicando no botão "três pontos" próximo ao nome do projeto no canto superior esquerdo da tela e selecionando "Configurações do projeto". Em seguida, clique em “Access Manager” no lado esquerdo da tela e clique em “Criar chave API”. Anote as partes pública e privada da chave e certifique-se de que a chave tenha a permissão "Project Cluster Manager". Etapas mais detalhadas podem ser encontradas na documentação.
Uma captura de tela da página Access Manager do projeto.

Chave de API da organização

Clique no ícone de engrenagem ao lado do nome da sua organização na parte superior esquerda da tela. Clique em "Access Manager" no lado esquerdo da tela e clique em "Create API Key". Anote as partespúblicae privada da chave. Não se preocupe em selecionar nenhuma permissão específica da organização.
Uma captura de tela mostrando os botões descritos acima desta imagem
Agora você precisará convidar a chave de API para cada um dos projetos contendo clusters que deseja controlar. Clique em "Projetos" no lado esquerdo da tela. Para cada um dos projetos, clique no ícone de três pontos "" na mesma linha da tabela de projetos e selecione "Visit Project Settings" Clique em "Access Manager" e clique em "Invite to Project" no canto superior direito. Cole sua chave pública na caixa de pesquisa e selecione-a no menu exibido. Certifique-se de que a chave tenha a permissão "Project Cluster Manager" necessária para pausar e retomar os clusters nesse projeto.
Etapas mais detalhadas podem ser encontradas na documentação.

Configurando

atlascli
A chave programática tem duas partes: uma chave pública e uma chave privada. Ambos são usados pelo programa atlascli para consultar os projetos e clusters associados à organização.
Você pode passar as chaves na linha de comando, mas isso não é recomendado porque elas serão armazenadas no histórico da linha de comando. É melhor armazená-las em variáveis de ambiente, e o programaatlascliprocurará por essas duas:
  • ATLAS_PUBLIC_KEY: armazena a parte da chave pública da chave programática
  • ATLAS_PRIVATE_KEY: armazena a parte privada da chave programática
Depois de criar essas variáveis de ambiente, você pode executar o atlascli -l para listar a organização e seus projetos e clusters associados. Bloqueie parte dos IDs reais com xxxx caracteres por motivos de segurança:
1$ atlascli -l
2 {'id': 'xxxxxxxxxxxxxxxx464d175c',
3 'isDeleted': False,
4 'links': [{'href': 'https://cloud.mongodb.com/api/atlas/v1.0/orgs/599eeced9f78f769464d175c',
5 'rel': 'self'}],
6 'name': 'Open Data at MongoDB'}
7 Organization ID:xxxxxxxxxxxxf769464d175c Name:'Open Data at MongoDB'
8 project ID:xxxxxxxxxxxxd6522bc457f1 Name:'DevHub'
9 Cluster ID:'xxxxxxxxxxxx769c2577a54' name:'DRA-Data' state=running
10 project ID:xxxxxxxxx2a0421d9bab Name:'MUGAlyser Project'
11 Cluster ID:'xxxxxxxxxxxb21250823bfba' name:'MUGAlyser' state=paused
12 project ID:xxxxxxxxxxxxxxxx736dfdcddf Name:'MongoDBLive'
13 project ID:xxxxxxxxxxxxxxxa9a5a04e7 Name:'Open Data Covid-19'
14 Cluster ID:'xxxxxxxxxxxxxx17cec56acf' name:'pre-prod' state=running
15 Cluster ID:'xxxxxxxxxxxxxx5fbfe04313' name:'dev' state=running
16 Cluster ID:'xxxxxxxxxxxxxx779f979879' name:'covid-19' state=running
17 project ID xxxxxxxxxxxxxxxxa132a8010 Name:'Open Data Project'
18 Cluster ID:'xxxxxxxxxxxxxx5ce1ef94dd' name:'MOT' state=paused
19 Cluster ID:'xxxxxxxxxxxxxx22bf6c226f' name:'GDELT' state=paused
20 Cluster ID:'xxxxxxxxxxxxxx5647797ac5' name:'UKPropertyPrices' state=paused
21 Cluster ID:'xxxxxxxxxxxxxx0f270da18a' name:'New-York-Taxi' state=paused
22 Cluster ID:'xxxxxxxxxxxxxx11eab32cf8' name:'demodata' state=running
23 Cluster ID:'xxxxxxxxxxxxxxxdcaef39c8' name:'stackoverflow' state=paused
24 project ID:xxxxxxxxxxc9503a77fcce0c Name:'Realm'
Para pausar um cluster, você precisará especificar o project ID e o cluster name. Aqui está um exemplo:
1$ atlascli --project_id xxxxxxxxxxxxxxxxa132a8010 --pause demodata
2 Pausing 'demodata'
3 Paused cluster 'demodata'
Para retomar o mesmo cluster, faça o inverso:
1$ atlascli --project_id xxxxxxxxxxxxxxxxa132a8010 --resume demodata
2 Resuming cluster 'demodata'
3 Resumed cluster 'demodata'
Observe que, depois de retomado, um cluster não pode ser pausado novamente por um tempo.
Esse atraso permite que o serviço do Atlas aplique ao cluster quaisquer alterações ou patches pendentes que possam ter se acumulado enquanto ele estava pausado.
Agora Go economizar algum dinheiro. Este script pode ser facilmente executado a partir de uma entradacrontab ou do Agendador de Tarefas do Windows.
Quer ver o código? Está neste repositório no GitHub.
Para obter uma API Atlas Admin muito mais completa em Python, confira o pacote PyPIAtlasAPI do meucolega Matty Monteleone .
Se tiver dúvidas, acesse o site da nossa comunidade de desenvolvedores, no qual os engenheiros e a comunidade do MongoDB ajudarão você a desenvolver sua próxima grande ideia com o MongoDB.

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

Crie uma API CRUD com MongoDB, Typescript, Express, Prisma e Zod


Sep 04, 2024 | 10 min read
Tutorial

Desenvolvimento sem servidor com Kotlin, AWS Lambda e MongoDB Atlas


Aug 01, 2023 | 6 min read
exemplo de código

Blogue


Sep 11, 2024 | 1 min read
Tutorial

Como desenvolver um aplicativo web com funções sem servidor da Netlify e MongoDB


Aug 30, 2024 | 6 min read
Sumário
  • Chave API de projeto único
  • Chave de API da organização