python(boto3) 脚本实现AWS实例的自起停
为AWS宁夏区开张送上迟到地祝福,上半年项目开发中用到了AWS云服务器,按时计费,为节省经费计划在上班期间开启,下班之后关闭。通过查看boto3文档,最终实现了这一小脚本。半年前的脚本,不知道在现在会不会过时,权当做个记录,如果能帮到网友自然更好
前置工作
- 目的
实现定时远程控制AWS中EC2和RDS实例的自启停 - 运行必要环境
python 3.6
boto 3
(通过aws命令行也可以进行远程控制,为了适应性,还是决定用python开发脚本,安装方法请通过网络检索。) - 参考文档
https://pypi.org/project/boto3/ - 访问信息
以管理员的身份登录AWS,生成远程访问的必要信息,access_id,secret_access_key,region
实现
- 思路
EC2, 在boto3的文档中现成的EC2示范代码,照葫芦画瓢即可
RDS,没有直接示范代码,参考session的示范代码,也捣鼓成功了 - 文件结构
根据boto3的推荐,分成python程序文件和配置文件
配置文件如下,不再重复贴
[config]
aws_access_key_id = ABCDEFG
aws_secret_access_key = 123456789/*-+
region = cn-northwest-1
- python代码
EC2 实例控制代码,可以自动获取所有已存在的实例
#!/usr/bin/env python
# coding = utf-8
import sys
import boto3
from boto3.session import Session
import configparser
DEBUG = False
def get_config_info(configFile):
cf = configparser.ConfigParser()
cf.read(configFile)
return cf['config']['aws_access_key_id'], \
cf['config']['aws_secret_access_key'], \
cf['config']['region']
def get_instances_info(resource, id_list, state):
instances = resource.instances.filter(
Filters=[{
'Name': 'instance-state-name', 'Values': [state]}])
if an