使用Python獲取ECS相關資訊

死生之契發表於2018-12-09

阿里云為很多產品提供了相關的SDK,我們可以通過呼叫相關的SDK來獲取相關的產品資訊.這裡展示一下如何使用Pyhton來獲取相關的ECS資訊

1.環境準備

使用SDK前我們要先準備一個RAM賬號以及一對AccessKey ID和AccessKey Secret.當然主賬號也是可以開通AccessKey ID和AccessKey Secret的,但是並不推薦這樣做.因為主賬號對賬戶擁有完全操作許可權,在程式碼的編寫過程中很容產生誤操作,所以建議建立一個RAM賬戶,只給予需要的許可權即可.此處不再詳細寫出如何建立RAM賬號和賦予許可權,需要的朋友可以檢視阿里雲相關文件.

接下來就要安裝阿里雲提供的SDK了.本人使用的是Python3.7,直接使用pip安裝即可

安裝python SDK 核心庫

pip install aliyun-python-sdk-core-v3

安裝ECS的SDK

pip install aliyun-python-sdk-ecs

引入相關模組

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526 import StopInstanceRequest

準備工作已經完成

2.使用阿里雲SDK

使用阿里雲的SDK主要有以下三個步驟

1.建立Client例項

2.建立API請求並設定請求引數

3.傳送請求並處理應答或異常

為什麼要建立Client例項和如何建立Client例項呢?

當我們使用阿里雲SDK訪問相關資訊時需要獲取到相關API的服務地址,而Client例項就是為了獲取這個服務地址

在Python中這樣建立Client例項

client = AcsClient(
    "<your-access-key-id>",
    "<your-access-key-secret>",
    "<your-region-id>" 
);

其中我們需要提供三個引數,分別是 AccessKey ID 和 AccessKey Secret 以及 Region ID,而且必須按照這樣的順序來寫,這樣才能成功獲取到對應的服務地址

其中第一個和第二個引數就是我們之前為子賬號開通的東西,第三個則是地域ID,相關的地域ID可以在阿里雲官方文件中找到.這樣我們就可以成功的獲取到相應的服務地址了

接下來就是建立API請求並設定請求引數程式碼如下:

request = DescribeInstancesRequest.DescribeInstancesRequest()
request.set_PageSize(10)

第一句建立了一個request物件,並且呼叫了類DescribeInstancesRequest中的DescribeInstancesRequest方法

在阿里雲裡面,類的命名規則是api中對應的方法名加上一個Request.所以說我們從api文件中找到DecribeInstances這個方法得知:

這個方法可以查詢一臺或多臺例項的資訊,並且返回json或者xml格式的資訊

第二句設定頁的大小為10個每頁

最後我們發起請求並且列印出相關的資訊即可

response = client.do_action_with_exception(request)
print(response)

在python3.7中可能會返回一些以 x 開頭的 utf-8 編碼資料,我們可以使用decode()方法將其轉換成更加容易讀寫的方式

之後我們就可以將返回的資訊進行處理並且輸出的表格或者進一步的開發了

以上純屬本人理解,有什麼錯誤的地方還望各位大神指正


相關文章