小编给大家分享一下如何使用Shell脚本实现EC2 预留实例RI到期提醒,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
一、场景描述
作为一个云运维工程师,要管理的机器少则几百台,多则上千上万台。对于企业客户而言,采购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到期提醒”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。