Skip to content

DevOpsProjectsLab/automation-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

🧠 AWS RDS Automation

Scripts de automação em Python para ligar, desligar e verificar o status de instâncias Amazon RDS na AWS.


📋 Descrição

Este projeto fornece uma maneira simples de controlar instâncias do Amazon RDS diretamente pela linha de comando, sem precisar acessar o console da AWS.
É ideal para reduzir custos desligando bancos fora do horário comercial, ou iniciar automaticamente ambientes de teste e desenvolvimento.


🚀 Funcionalidades

  • ✅ Verificar o status atual de uma instância RDS
  • 🟢 Iniciar uma instância e aguardar até que fique disponível
  • 🔴 Parar uma instância e aguardar até que fique parada
  • ⚙️ Suporte a regiões personalizadas

🧰 Pré-requisitos

  • Python 3.8 ou superior
  • Biblioteca boto3 instalada
  • Credenciais AWS configuradas localmente (ex: ~/.aws/credentials)

Instale a dependência necessária:

pip install -r requirements.txt

Verifique se suas credenciais AWS estão configuradas:

aws configure

🧩 Estrutura do Projeto

aws-rds-automation/
├── aws_rds_control.py   # Script principal
├── README.md            # Documentação
└── requirements.txt     # Dependências do Python

🖥️ Uso

🔎 Verificar o status da instância

python aws_rds_control.py --instance-id meu-rds --action status --region us-east-1

🟢 Ligar a instância

python aws_rds_control.py --instance-id meu-rds --action start --region us-east-1

🔴 Desligar a instância

python aws_rds_control.py --instance-id meu-rds --action stop --region us-east-1

📊 Tabela Resumida de Comandos e Parâmetros

Comando Descrição Parâmetros Opcionais
start Inicia a instância RDS --wait → aguarda até available
--delay <segundos> → intervalo entre verificações
--timeout-minutes <min> → timeout máximo
stop Para a instância RDS --wait → aguarda até stopped
--delay <segundos> → intervalo entre verificações
--timeout-minutes <min> → timeout máximo
status Consulta status da instância Nenhum parâmetro adicional necessário
--region Define a região AWS (padrão: us-east-1) Opcional para todos os comandos

⚡ Exemplos Avançados

O script oferece parâmetros opcionais para controle fino do tempo de espera:

  • --wait → aguarda até que o RDS atinja o status final (available ou -stopped)
  • --delay → define o intervalo entre cada verificação (em segundos)
  • --timeout-minutes → define o tempo máximo de espera (em minutos)

🟢 Iniciar e aguardar até ficar disponível, verificando a cada 20 segundos, com timeout de 60 minutos:

python aws_rds_control.py \
  --instance-id meu-rds \
  --action start \
  --region us-east-1 \
  --wait \
  --delay 20 \
  --timeout-minutes 60

🔴 Parar e aguardar até desligar, verificando a cada 15 segundos, com timeout de 30 minutos:

python aws_rds_control.py \
  --instance-id meu-rds \
  --action stop \
  --region us-east-1 \
  --wait \
  --delay 15 \
  --timeout-minutes 30

Esses parâmetros permitem adaptar o script para pipelines CI/CD, automações noturnas ou horários de baixo uso, garantindo que o script não finalize antes do RDS atingir o status desejado.

📖 Exemplo de Saída

🔎 Status atual: stopped
🔄 Enviando comando START para 'meu-rds'...
✅ Comando START enviado.
⏳ Polling: aguardando 'available' (delay=15s, max_attempts=120)
[1/120] status: starting
[2/120] status: starting
✅ Instância 'meu-rds' atingiu 'available'. Endpoint: meu-rds.abc123xyz.us-east-1.rds.amazonaws.com Engine: mysql

⚠️ Notas Importantes

  • O comando stop só funciona para instâncias RDS Single-AZ (não Multi-AZ).
  • O script aguarda automaticamente até o status mudar para available (ao iniciar) ou stopped (ao parar).
  • Certifique-se de que seu usuário IAM tem as permissões necessárias:
    • rds:StartDBInstance
    • rds:StopDBInstance
    • rds:DescribeDBInstances

About

Scripts para automação de tarefas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages