2017-08-11 82 views
0

我試圖使用Python和Boto3獲取EC2實例的平臺名稱。但是,當我運行腳本時,它只會將Windows實例的平臺名稱顯示爲「Windows」,而在Linux平臺上運行的每個實例(Amazon Linux,Ubuntu,CentOS等)均顯示爲「無」。 這裏是我的腳本:獲取EC2實例的「平臺」屬性時出現錯誤

import boto3 
ec2 = boto3.resource('ec2') 
filters = [{'Name':'instance-state-name','Values':['running']}] 
instances = ec2.instances.filter(Filters=filters).all() 
for inst in instances: 
    print inst.id + "-" + str(inst.platform) 

和輸出:

i-00dddfd5011ab2993-None 
i-0ff7a32debff120de-None 
i-018cd715318fc5b2d-None 
i-06a84fa0421b7918c-windows 

有沒有辦法,我能得到Linux實例的平臺屬性的任何方式?

+0

[有沒有什麼辦法從實例中獲取平臺和操作系統](https://stackoverflow.com/questions/41172415/is-there-any-way-to-get-the-platform-和-OS-from-the-instances) – helloV

回答

1

對於基於Linux內核的操作系統,使用AWS開發工具包或CLI無法列出Linux的確切版本或非null的任何內容。 雖然有一種方法可以解決問題:

您可以添加具有所有linux實例的標籤,然後可以使用這些標籤名稱進行過濾。

實際上,AWS SDK和CLI爲您提供了可用於管理程序級別的信息。但是,正在使用哪些Linux映像的這些詳細信息在虛擬機級別內部不在管理程序級別。

希望它會幫助!

+0

您從其他答案中逐字逐句獲取了此信息。 – helloV

+0

我認爲我同意這一點..我可能讀過你的答案,並且在回答這個問題的時候在我的腦海裏。我絕對不應該對此表示讚賞。我將刪除答案。很抱歉無意中褒獎你的工作。 @helloV –

+0

沒問題。不要刪除你的答案。我只是提到它。我有時無意中這樣做。 – helloV