小编给大家分享一下如何使用Shell脚本实现EC2 预留实例RI到期提醒,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
创新互联是一家专注于成都网站制作、网站设计与策划设计,扬中网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:扬中等地区。扬中做网站价格咨询:18982081108
一、场景描述
作为一个云运维工程师,要管理的机器少则几百台,多则上千上万台。对于企业客户而言,采购AWS EC2均会使用ALL Upfront(预付全部的方式,一年可以节约成本50%~70%之间),因此需要我们在客户购买的预留实例(Reserve Instance)到期之前,可以提醒到客户,避免因为按照On demand(按需运行)带来的巨大花费。
二、脚本依赖条件
执行这个脚本的前提:
1. 配置AWS CLI环境。
2. 配置管理的所有AWS账户的密钥文件
示例:使用aws configure --profile test-acccount (红色的字体代表账户名称,用来标识不同的账户)
三、脚本的功能
这是脚本的第一个版本,比较简单,主要分为几个步骤:
1. 轮询获取每个客户的AWS账户EC2预留实例的过期时间
2. 计算过期时间和当前时间的时间
3. 如果时间差小于15天,发送告警邮件到指定的邮箱。
四、脚本内容
#!/bin/bash
#Author:Andy Wei
#Version:1.0
#Function: Reserve Instance retired Alert
####客户列表
customer_list=("test-account" "myacccount" )
for customer in ${customer_list[@]}
do
#####获取所有实例的RI到期信息
ri_teach_time_list=`aws ec2 describe-reserved-instances --profile $customer --query 'ReservedInstances[*].[End,State]' --output t
ext|grep active | awk -F"T" '{print $1}'`# echo $customer
###获取当前时间信息
cur_date=`date "+%Y-%m-%d"`
####计算到期时间和当前时间相差天数
for time in $ri_teach_time_list
do
####计算到期时间和当前时间相差天数
time_difference=$(($(date +%s -d "$time") - $(date +%s -d "$cur_date")))
difference_day=$(($time_difference/24/60/60))
###RI到期时间和当前时间对比,小于15天发送邮件
if [ $difference_day -le 15 ];then
echo "The $customer account $time will have EC2 RI retired."|mail -s "The $customer RI retired Notication" 你的邮箱
fi
done
done
看完了这篇文章,相信你对“如何使用Shell脚本实现EC2 预留实例RI到期提醒”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!