2014-04-09 64 views
4

如何使用AWS CLI找出在EC2實例上運行的操作系統。如何使用AWS CLI找到EC2實例的操作系統

ec2 describe-instance命令吐出了大量的信息,但沒有任何指示操作系統。

我也試過ec2 describe-images在一個特定的圖像。再一次,似乎沒有任何OS的跡象。

幫助..?

+0

簡而言之,不,你不能使用AWS-CLI來做到這一點。 – slayedbylucifer

+0

@slayedbylucifer:夠公平的。我想我最好開始在AMIs上執行命名約定 – ivarrian

回答

0

您無法從AWS cli查詢實例的特定操作系統,但可以查詢該實例基於的AMI。此外,您無法獲得「操作系統」屬性,但可以獲得AMI的DescriptionName,因此,如果使用有意義的描述創建AMI,則可以使其工作。

$ aws ec2 describe-images --image-ids "ami-xxxxxxxx" 
{ 
    "Images": [ 
     { 
      "VirtualizationType": "paravirtual", 
      "Name": "amazon-linux-20130509", 
      "Tags": [ 
       { 
        "Value": "amazon-linux-20130509", 
        "Key": "Name" 
       } 
      ], 
      "Hypervisor": "xen", 
      "ImageId": "ami-xxxxxxxx", 
      "RootDeviceType": "ebs", 
      "State": "available", 
      "BlockDeviceMappings": [ 
       { 
        "DeviceName": "/dev/sda1", 
        "Ebs": { 
         "DeleteOnTermination": true, 
         "SnapshotId": "snap-xxxxxxxx", 
         "VolumeSize": 100, 
         "VolumeType": "standard" 
        } 
       } 
      ], 
      "Architecture": "x86_64", 
      "ImageLocation": "123456789012/amazon-linux-20130509", 
      "KernelId": "aki-fc37bacc", 
      "OwnerId": "123456789012", 
      "RootDeviceName": "/dev/sda1", 
      "Public": false, 
      "ImageType": "machine", 
      "Description": "Amazon Linux" 
     } 
    ] 
} 

如果你想獲得更詳細的您可以編寫自己的腳本ssh到機器和他們中的每一個運行cat /etc/issue

+0

謝謝。是的,當我準備和AMI中的描述一起使用時,我的組織中只有一些用戶正確地命名它們並沒有幫助。 至於腳本/ etc/issue,我實際上需要OS信息來自動連接到幾個EC2實例,一些運行Amazon Linux(默認ssh用戶:ec2-user),一些運行RHEL(默認ssh用戶:root) 。 – ivarrian

5

這裏有一個快速的方法來列出平臺領域,這至少是Windows和Linux之間的區別:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Platform]' --output text 
i-78b4ef47 windows 
i-b8ae3386 windows 
i-9d3611a2 None 
i-1c57c651 windows 
i-a241ec91 None 
i-7d26b630 None 
+0

*無*表示什麼? – Jeff

+2

'無'是相當於NULL的Python。在Platform字段中,只有Windows實例返回一個值('windows')。所有其他人都不會返回一個值,因此「無」。 (我不知道爲什麼會出現這種情況,但那是行爲。) –

+0

我得到你必須指定區域錯誤。 –

1

試試這個命令:

aws ec2 describe-images --image-ids $(aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxx --query 'Reservations[0].Instances[0].ImageId' --output text) --query 'Images[0].Name' 

$()部分得到利用INSTANCEID圖像標識。

+0

這是問題的正確答案。 –