查找EC2 AWS使用SDK的操作系统名称

时间:2016-11-23 06:33:44

标签: amazon-web-services amazon-ec2 aws-sdk

我正在尝试使用AWS SDK来优化操作系统名称,我尝试使用描述实例:

ec2.describe_instances();

我能够收集所有实例但无法获取Linux实例的操作系统名称,以及获取Linux实例的操作系统名称的任何其他方式。

2 个答案:

答案 0 :(得分:2)

正如@helloV所说,描述实例命令提供的操作系统信息。您可以在一段时间内通过查询实例的AMI中的元数据来获取它。

注意:这个脚本很简陋,可以轻松改进(编辑赞赏)

set -f; IFS=$'\n' # split array on newlines
for  x in $(IFS=$'\n' aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,ImageId]' --output text); do instance=$(echo $x | cut -f1); ami=$(echo $x | cut -f2); echo $instance $ami $(aws ec2 describe-images --image-ids $ami --query Images[*].[Name] --output text); done;
set +f; unset IFS # reset separator

如果您使用指定基本图像的AMI,您应该看到类似的内容:

i-abd94ccc ami-a73264ce ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20131003
i-ea827c52 ami-abcdefgh Custom Secret Image
i-71ccf280 ami-9eaa1cf6 ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-20140927
i-cb72a300 ami-08ab2f65 k8s-1.3-debian-jessie-amd64-hvm-ebs-2016-06-18
i-2aaed139 ami-e3c3b8f4 ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20160922

答案 1 :(得分:1)

您可以显示实例的platform

$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Platform]' --output text
i-0c9c9494b3b83afdc None
i-0ef635853b32f705e windows
i-3da613a2  None
i-5d261c40  None
i-8daa32d2  windows
i-292b91c7  None

如果实例是Windows,则值为windows,否则为空。

无法获取操作系统名称(例如Redhat,Suse) - 为此,您可以检查用于启动实例的AMI的名称。