首页 > 编程语言 >基于python-统计所有AWS-EC2的Events-事件信息-并进行邮件通知

基于python-统计所有AWS-EC2的Events-事件信息-并进行邮件通知

时间:2023-06-10 12:36:38浏览次数:57  
标签:python Completed AWS NotAfter Duration EC2 HasEvent Events

关于AWS的EC2,我们可以有时间会收到一些官方邮件,提示让在指定的时间之前在console界面stop一次,或者重启一次,完成底层维护

其实这些Events事件,在Console的EC2服务界面左侧菜单的Events下也可以看到的,如下图所示

其中Event status 为Completed 就是我们已经完成了的,Scheduled的为计划中,如果在Start time时间之前,我们没有完成要求的操作,则aws会自动强制进行事件操作

如果到了时间,aws强性执行stop或者reboot等其他操作、那也就是在我们的预期之外,必然就有可能影响到业务的正常运行,造成业务中断

因此可以知道,这种Events事件的重要性,如果对于公司有多个aws账号时,我们就更有必须去主动发现收集所有aws账号EC2的Events事件,最好能通过邮件通告

于是笔者基于这种需求,使用 AWS SDK for Python (Boto3)  的方式进行了编程实现,核心代码如下(需要使用到ec2的describe_instance_status):

for Ec2ResponsePage in Ec2Response:
    for Ec2 in Ec2ResponsePage["InstanceStatuses"]:
        InstanceId=Ec2["InstanceId"]
        AvailabilityZone=Ec2["AvailabilityZone"]
        
        HasEvent=Ec2.get("Events")
        if HasEvent:
            InstanceEventId=HasEvent[0]["InstanceEventId"]
            Code=HasEvent[0]["Code"]
            Description=HasEvent[0]["Description"]

            # 关于状态,是需要进行推断的,如果Descriptionp字符串以[Completed]开头,则代表Completed完成
            if Description.startswith("[Completed]"):
                EventStatus="Completed"
            else:
                EventStatus="Scheduled"

            NotBefore=(HasEvent[0]["NotBefore"]+datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
            NotAfter=""                    

            # Console上有、有持续时间、的才会有NotAfter字段,其实严谨来说应该是有NotAfter字段的才会有持续时间,Duration需要自己计算
            try:
                NotAfter=(HasEvent[0]["NotAfter"]+datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
                Duration_a=((HasEvent[0]["NotAfter"]-HasEvent[0]["NotBefore"]).seconds)/3600
                Duration=round(Duration_a,1)
            except:
                Duration=""

最后,将HasEvent下的进行整理输出到Excel表格中,以邮件发送给相关的人员,表格如下:

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17471064.html

 

标签:python,Completed,AWS,NotAfter,Duration,EC2,HasEvent,Events
From: https://www.cnblogs.com/5201351/p/17471064.html

相关文章

  • 印度人口超过中国?python可视化分析一波
    印度人口超过中国?python可视化分析一波哈喽大家好,我是AI小智,今天带大家了解下在Python中装饰器的使用前言印度和中国是世界上人口最多的两个国家,它们的人口变化对全球经济、社会和环境都有重要影响。根据联合国《2022年世界人口展望》报告²,印度人口将在今年4月中旬超过中国......
  • Python 实现水仙花数
    水仙花数水仙花数(Narcissisticnumber)也被称为超完全数字不变数(pluperfectdigitalinvariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrongnumber),水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3+5^3+3^3=153。根据定义可知:水......
  • Python一句话实现秦九韶算法快速计算多项式的值
    关于秦九韶算法快速计算多项式值的原理描述请参考之前推送的文章Python使用秦九韶算法求解多项式的值。本文重点演示Python函数reduce()和lambda表达式的用法。代码没加注释,如果不好理解的话,可以先参考文末相关阅读中的介绍。......
  • 报告PPT(123页):Python编程基础精要
    本文所发PPT是董付国老师2018年5月份在成都第二届全国高校“数据科学与大数据技术”专业教学研讨会(电子工业出版社)上作报告用的。......
  • 2.6万字的软件测试高频面试题(2023全新版),内容包括:面试技巧,HR面试、基础面试、JMeter面
    1.求职面试准备(记得收藏保存转发给你的朋友)1.1面试技巧......
  • 有关 python 切片的趣事
    哈喽大家好,我是咸鱼今天来讲一个我在实现python列表切片时遇到的趣事在正式开始之前,我们先来了解一下切片(slice)切片操作是访问序列(列表、字符串......)中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列语法如下name[start:end:step]st......
  • AWS学习笔记
    IAM1.使用根用户名创建IAM用户。2.为了测试权限,使用根用户创建两个S3桶。#这时候使用IAM用户登录看不到S3桶,因为还没有赋予相应的权限。3.创建用户组(deploy),把S3桶的可见权限(AmazonS3ReadOnlyAccess)设置到组上。4.把IAM用户加到组上。这样该用户组下的所有IAM用户都可以可以看......
  • python之requests库详解
    1.requests库详解发送http请求,接受http响应的库安装:pipinstallrequests1.1常用方法requests.get()--->defget(url,params=None,**kwargs)#发送get请求url:接口请求地址params:是get请求用于传参,这个参数会自动以?的方式加到url之后,多个参数之间用&分割**kwargs:可变......
  • Python字符串注意啦!
    注意在进行python里面进行比较时,一定要先看好比较双方的类型,如果我们想要比较的是字符串,第二项就一定要定义成字符串类型;例如:#这就是一个错误典型aa.get()==1#这个就会显示出False#我们需要将其改成这样aa.get()=='1'#这样才能够显示出True真的会谢!记住啦!......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......