AWS EBS – – 查找 AWS EC2 EBS 中显示的所有信息

我正在尝试创建一个脚本来为所有可用的 AWS EBS 卷生成 csv 格式文件,并显示我在 AWS EC2 EBS 卷控制台中看到的所有字段值。

10

11

[arun@-MBP-2 ~/aks/–ws-sunny/] $ cat ~/aws-vol-info.py

博托3

#这

ec2 = boto3.('ec2', = "us-west-2")

= ec2..all()

对于卷:

print"(" + str(vol.) +"),(" + str(vol.state) +"),(" + str(vol.id) +"),(" + str(vol.size) + ")" + 卷类型

[arun@-MBP-2 ~/aks/–ws-sunny/] $

该脚本给我以下错误消息。 原因:如果我不使用 vol.type 字段,上面的脚本就可以工作。 它不起作用,因为卷变量正在运行 ec2..all()。

从未将其包含在其价值中

[arun@-MBP-2 ~/aks/–ws-sunny/]$ ~/aws-vol-info.py

(大多数电话最后):

文件“/Users/arun/aws-vol-info.py”,第 9 行,位于

print"(" + str(vol.) +"),(" + str(vol.state) +"),(" + str(vol.id) +"),(" + str(vol.size) + ")" + 卷类型

:“EC2”。 没有“类型”

[arun@-MBP-2 ~/aks/–ws-sunny/] $

我应该在上面的脚本中使用/更改什么库/函数,通过它我可以显示 EBS 卷的所有字段或更有意义的字段(我在 AWS EC2 EBS 卷控制台中看到的内容),请参阅下图 AWS 可用字段在台中。

enter

我在网上发现了另一个脚本(#2),它似乎可以打印更多字段,但它给出了下面列出的另一个错误。 我成功运行 -m pip –user aws 或 -m pip aws 或 pip aws ,或运行脚本(仅在其存储库的 aws 文件夹内的 # from aws 行之后包含行(克隆后),但仍然得到错误。

10

11

12

13

14

15

16

17 号

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

博托.ec2

班级:

定义(自我):

''' '''

定义(连接):

'''列表'''

# 得到所有

卷 = 康恩.()

# 如果找到

如果卷:

#环形

对于卷中的 v:

print 'Id:', v.id

打印 ':', v.

print '尺寸:', v.size

print '区域:', v.zone

print '类型:', v.type

打印 ':', v.

#打印设置

= v.

打印'ID:',.

打印“时间:”,.

打印 ':', 。

打印 '***********************************'

# 来自AWS

来自AWS

来自AWS

来自AWS

#aws

= ()

康涅狄格州 = .()

# 和列表

= ()

.(康涅狄格州)

脚本 #2 错误是:

(大多数电话最后):

文件">

来自AWS

: 姓名

如果我在脚本 #2 中注释来自 aws … .. 的行并且仅使用/取消注释 aws,那么我得到:

(大多数电话最后):

文件“/Users/arun/aws-vol-info2.py”,第 35 行,位于

= ()

: 名称 '' 不是

我认为您正在寻找 vol.. 您可以在 ec2 中查看属性的完整列表。 这里:

#

可以增强此脚本以显示更有意义的信息,但使用 jpavs 的提示,我想出了此脚本 ~/aws-vol-info.py:

10

11

12

13

14

15

16

17 号

18

博托3

#这

ec2 = boto3.('ec2', = "us-west-2")

# 找到所有

= ec2..all()

# 循环所有并将其传递给 ec2.('xxx')

对于卷:

iv = ec2.(str(vol.id))

print"(" + str(iv.) +"),AZ(" + str(iv.) +"),(" + str(iv.) +"),(" + str(iv.) +") ,状态(" + str(iv.state) +"),大小(" + str(iv.size) +"),IOPS(" + str(iv.iops) +"),(" + str(iv. ) +"),(" + str(iv.) +"),(" + str(iv.) +")",

# 接下来的 2 个打印仅适用于我的情况。

打印",(" + str(iv.[0]['']) +"),(" + str(iv.[0]['State']) +"),(" + str(iv.[ 0]['']) +"),(" + str(iv.[0]['']) +")",

如果四。 标签:

print",Name(" + str(iv.tags[0]['Name']) +"),(" + str(iv.tags[0]['']) +"),Role(" + str (iv.tags[0]['角色']) +"),(" + str(iv.tags[0]['']) +"),(" + str(iv.tags[0][' ']) +"),(" + str(iv.tags[0]['']) +"),Index(" + str(iv.tags[0]['index']) +")"

打印””

Ran: ~/aws-vol-info.py 它为我提供了脚本中提到的所有字段的 CSV 格式值。 由于库不提供这些,所以缺少 (2-3) 个 AWS 控制台字段,但无论我可以从上面得到什么,或者如果我深入研究 iv.[0][''] 或 iv.tags[0] [''],这对我来说已经足够了。

PS:两者皆有。 和 iv.tags 是 iv 对象中的列表/字典类型变量,因此您可以通过准确显示您想要从中获取的内容来增强脚本。 因此,如果您愿意,可以使用:str(iv.[0]['']) 来打印它。

如需更好的版本:请查看此处。 脚本:- exec 插件 – aws ec2 ebs info – 指标解析错误,原因:[缺少字段] 或遇到的错误:[无效数字]

还在这里找到了这个有用的脚本:

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注