Scripts de automação em Python para ligar, desligar e verificar o status de instâncias Amazon RDS na AWS.
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.
- ✅ 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
- 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.txtVerifique se suas credenciais AWS estão configuradas:
aws configureaws-rds-automation/
├── aws_rds_control.py # Script principal
├── README.md # Documentação
└── requirements.txt # Dependências do Python🔎 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| 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 |
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 30Esses 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.
🔎 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
- O comando
stopsó 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