上一節我們提到了如何連接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。