随笔 - 639, 文章 - 19, 评论 - 34, 阅读 - 115万
  博客园  :: 首页  :: 管理

关于AWS-EBS-volume信息的收集方法及性能对比

Posted on   520_1351  阅读(52)  评论(0编辑  收藏  举报

笔者刚开始只是注意到了EC2下面的 class EC2.Volume(id) - A resource representing an Amazon Elastic Compute Cloud (EC2) Volume:

可参考:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#volume

但是此方法,必须要提供一个Volume的id , 大体过程如下(只是简要说明,仅举出部分代码):

复制代码
#!/usr/bin/evn python3
# Author:QQ:5201351
#
session=boto3.Session(profile_name=AWS_Account_XXX,region_name='cn-north-1') ec2 = session.resource('ec2')
EbsVolume
=ec2.Volume(VolumeId_XXX) volume_id=EbsVolume.volume_id size=EbsVolume.size kms_key_id=EbsVolume.kms_key_id
复制代码

但是这样的面临两个问题,一是必须要先得到卷ID,这里我们可以能过EC2的信息得到,

二是通过for循环得到所以EBS卷的信息,按上面的方式,性能太慢,笔者这里一个AWS账号,425个EBS卷,执行下来,都得20秒+

于是笔者想到早期的实现版本,基于aws cli 的方式 , aws ec2 describe-volumes   --output json --profile XXXX 

那按道理说也应该有boto3的实现方法,于是又仔细找了一次,果然发现也是有的,与EC2一样,也是在EC2的client下面

session=boto3.Session(profile_name=AWS_Account,region_name='cn-north-1')
client = session.client('ec2')

EC2Response = client.describe_instances()
EbsResponse = client.describe_volumes()

其中都可以只连接一次,就能得到所有的EC2的信息及所有Ebs的信息,这样可以减少与远端的连接次数,整个代码执行下来,所花时间更短,仅2~3秒,于是记录于此

 

 

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

 

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2014-12-30 postgresql数据库中对重复数据的处理
点击右上角即可分享
微信分享提示