Amazon web services 查找EC2实例的操作系统和许可软件

Amazon web services 查找EC2实例的操作系统和许可软件,amazon-web-services,amazon-ec2,boto3,Amazon Web Services,Amazon Ec2,Boto3,我正试图通过使用API(特别是python的boto3)来了解AWS ec2实例的操作系统和许可软件,但如果解决方案来自另一个SDK,我没问题 我自然尝试使用描述实例: client = session.client('ec2') ec2.describe_instances() 但数据并不存在。使用资源api: ec2 = session.resource('ec2') for instance in ec2.instances.all(): // I ran dir(instance

我正试图通过使用API(特别是python的boto3)来了解AWS ec2实例的操作系统和许可软件,但如果解决方案来自另一个SDK,我没问题

我自然尝试使用描述实例:

client = session.client('ec2')
ec2.describe_instances()
但数据并不存在。使用
资源
api:

ec2 = session.resource('ec2')
for instance in ec2.instances.all():
   // I ran dir(instance) here just to see what's going on.
我搜索了文档,但找不到如何检索此信息。我非常怀疑它不能被找到,因为Amazon使用此信息进行定价,并且此信息存在于定价API中(我认为除非能够检索到相应的数据,否则此信息将毫无用处)。

通过descripe\u instances()调用获取ec2的“ImageId”ami id

然后使用“描述图像”调用ie查找ami

这将提供有关操作系统的信息,以及是否随许可软件一起提供

查找安装在正在运行的实例上的第三方软件需要一个不同的过程,不确定如何通过descripe_instances()调用获取ec2的“ImageId”ami id

然后使用“描述图像”调用ie查找ami

这将提供有关操作系统的信息,以及是否随许可软件一起提供


查找安装在正在运行的实例上的第三方软件需要另一个过程,不确定通常如何执行此操作。快速回答:不,您无法直接从descripe_instances()函数获取操作系统和许可软件信息

更详细的回答:这些信息需要在每个实例中安装某种类型的SNMP监控代理,这将给任何VM实例带来太多的复杂性

我做了一些努力,试图在boto3脚本中获得所有细节。 在descripe_instances()之后,从结果字典键['Reservations']循环列表以查找AMI图像id,然后按照上述方式搜索信息

import boto3
ec2 = boto3.client("ec2")
instance_metas = ec2.describe_instances()
ami_list = list()
for each_instance in instance_metas['Reservations']: 
  ami_list.append(each_instance['Instances'][0]['ImageId'])

# next , query correspondence AMI info
ami_metas = ec2.describe_images(ImageIds=ami_list)
在检查dict之后,我注意到AWS没有存储操作系统信息。“Name”键只是一个抽象定义,可以由用户替换

如果要获取实际的实例OS版本,可以使用ec2.client.description_instances()提供的IP地址,运行ssh脚本并获取实例OS版本


如果您从AWS AMI marketplace创建实例,则所有实例都已获得许可。只需反向检查AMI id。

快速回答:不,您无法直接从descripe_instances()函数获取操作系统和许可软件信息

更详细的回答:这些信息需要在每个实例中安装某种类型的SNMP监控代理,这将给任何VM实例带来太多的复杂性

我做了一些努力,试图在boto3脚本中获得所有细节。 在descripe_instances()之后,从结果字典键['Reservations']循环列表以查找AMI图像id,然后按照上述方式搜索信息

import boto3
ec2 = boto3.client("ec2")
instance_metas = ec2.describe_instances()
ami_list = list()
for each_instance in instance_metas['Reservations']: 
  ami_list.append(each_instance['Instances'][0]['ImageId'])

# next , query correspondence AMI info
ami_metas = ec2.describe_images(ImageIds=ami_list)
在检查dict之后,我注意到AWS没有存储操作系统信息。“Name”键只是一个抽象定义,可以由用户替换

如果要获取实际的实例OS版本,可以使用ec2.client.description_instances()提供的IP地址,运行ssh脚本并获取实例OS版本

如果您从AWS AMI marketplace创建实例,则所有实例都已获得许可。只需反向检查AMI id