天天看點

【Amazon EC2 Python API系列】擷取執行個體資訊

上一節我們提到了如何連接配接EC2,也就是boto.ec2.connect_to_region()方法。在連接配接到EC2後,我們可以擷取目前所在區域的instance資訊,下面我們來看幾種常用的方法。首先還是先連接配接到EC2:

import boto
conn = boto.ec2.connect_to_region('ap-northeast-1')
           
reservations = conn.get_all_instances()
           

這個方法會擷取class boto.resultset.ResultSet 并傳回一個list值。類似于:

[Reservation:xxxxxxx, Reservation:xxxxxxx]

這裡要了解reservation的概念,它不是instance的id,它是包含instance的一個object或者了解為action。

我們可以在AWS的控制台中通過手動的 Launch instance來了解:

在我們手動launch一個執行個體的時候,我們可以配置instance的type、network、count等等一系列的屬性值,最後Launch出我們想要的instance。當然我們可以一次Launch一個instance也可以一次launch N多個instance。一個成功Launch的過程就是一個reservation,是以一個reservation裡可以包含1個instance也可以包含N多次instance,也就是說reservation是一個成功Launch所産生的對象。

前面我們擷取到了所有的reservation,而且這是一個清單,那麼清單中第一個元素reservations[0]就是該區域目前存在的第一個被Launch的動作。我們通過這個元素可以取出該reservation中的instance資訊。

instances = reservations[0].instances
           

這裡擷取到的instances 同樣是一個list,這裡的元素就是具體的instance的id,也就是AWS控制台上可以看到的Instance_ID,一個id對應一個instance。

instance = instances[0]
           

這樣我們就可以取到instance,它是一個  class 'boto.ec2.instance.Instance',也就是一個執行個體化後的instance class。

它有非常多的屬性可以供我們檢視,我們可以使用instance.__doc__來檢視它的說明我文檔,你能在這裡找到所有的屬性值。AWS控制台上大多數的值都可以在這裡擷取,比如常用的:

state 運作狀态

launch_time 建立日期

ip_address public ip

private_ip_address private ip

更多屬性值可以參考官方文檔http://boto.readthedocs.org/en/latest/ref/ec2.html#module-boto.ec2.instance

下一節我們講解如何通過boto Launch一個instance。

繼續閱讀