2016-11-23 46 views
2

我使用AWS SDK試圖精細操作系統名稱,我嘗試使用描述實例:查找EC2 AWS操作系統名稱中使用SDK

ec2.describe_instances(); 

我能收集到的所有實例,但不能夠得到OS Linux實例的名稱,以及任何其他獲取Linux實例的操作系統名稱的方式。

+0

無。 不可能。 – helloV

回答

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,否則爲null。

無法獲取操作系統名稱(例如Redhat,Suse) - 因此,您可以檢查用於啓動實例的AMI的名稱。

1

正如@helloV所說,操作系統信息是由describe instances命令提供的而不是。您可以在一段時間內通過查詢實例的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