本文以在Windows作業系統上,通過PyCharm使用阿里雲SDK為例,協助您瞭解如何快速使用阿里雲Python SDK。
前提條件
已安裝了Python,如果還未安裝,請參見安裝Python。
已安裝了PyCharm,如果還未安裝,請參見在Windows搭建Python開發環境。
使用 SDK
使用OpenAPI門戶提供的程式碼範例工程
可能會存在OpenAPI無法下載程式碼範例工程的情況,您可查看在已有專案中使用SDK。
進入OpenAPI門戶的API調試頁面,選擇產品和介面。例如我們以調用Elastic Compute Service的DescribeInstanceTypeFamilies介面為例,可在搜尋欄中填入DescribeInstanceTypeFamilies,然後點擊進入API調試頁面。
在頁面中間的參數配置頁簽,並填寫需要的參數資訊。填寫時請參考右側的文檔頁簽,充分瞭解介面的說明和注意事項(尤其是費用相關資訊),以及各參數的具體含義和使用方法。如DescribeInstanceTypeFamilies介面支援傳入兩個參數,其中RegionId為必填,您可填入cn-hangzhou(表示杭州地區);Generation非必填,您可填入ecs-5(表示系列 V 執行個體規格類型系列),參數詳細取值可在右側文檔中查看。
在右側的SDK樣本頁面,選擇語言,單擊下載完整工程按鈕,下載SDK完整工程至本地並解壓。
開啟PyCharm,單擊File->Open,選擇解壓好的工程檔案,在Creating Virtual Environment視窗單擊OK,等待Python虛擬環境的建立和依賴資源下載。
說明如果所需依賴資源沒有正常下載完成,請在Terminal中執行
python3 setup.py install
。在調用之前,需要先擷取訪問憑證AccessKey,建議使用RAM使用者的AccessKey。更多資訊,請參見建立RAM使用者的AccessKey。
重要擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數
運行範例程式碼。
在PyCharm視窗底部單擊Terminal選項卡或者按下
Alt + F12
開啟Terminal,在Terminal中輸入下面的命令運行。python ./alibabacloud_sample/sample.py
查看運行結果。在底部控制台按下
ctrl+f
,搜尋statusCode
,如果看到"statusCode":200
表示調用成功。
在已有專案中使用SDK
擷取SDK。
訪問SDK中心,選擇您想要使用的 SDK的雲產品,這裡以Elastic Compute Service為例。SDK版本選擇 V2.0,語言選擇 Python。
安裝SDK。
在PyCharm中,按下
ALT+F12
開啟Terminal,複製安裝命令到Terminal中,斷行符號執行。建立python檔案。
按右鍵專案名稱,選擇New->Python File,在新快顯視窗輸入檔案名稱sdk_demo,選擇Python file,然後按下斷行符號就建立了一個名稱為sdk_demo.py的檔案。
初始化用戶端。
如您想調用ECS的API,必須先對ECS的用戶端做初始化。
重要初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey。
擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數。
endpoint如何設定請參見服務存取點。
import os from alibabacloud_ecs20140526 import client as ecs_client from alibabacloud_tea_openapi import models as open_api_models def init_ecs_client(): """ 初始化ECS用戶端。 該函數不接受任何參數。 返回: ecs_client.Client: 一個初始化好的ECS用戶端對象,可用於進一步的ECS操作。 """ # 建立ECS設定物件,並從環境變數中讀取存取密鑰 ecs_config = open_api_models.Config() ecs_config.access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] ecs_config.access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] # 設定endpoint ecs_config.endpoint = 'ecs-cn-hangzhou.aliyuncs.com' # 使用配置初始化ECS用戶端並返回 return ecs_client.Client(ecs_config) if __name__ == '__main__': client = init_ecs_client()
調用API。在調用OpenAPI之前,您需要先瞭解OpenAPI的詳細資料,請查看API文檔,以調用ECS的DescribeRegions為例。
說明每個API都有獨立的請求對象,命名規則為${API名稱}${Request},例如DescribeRegionsRequest。
import os from alibabacloud_ecs20140526 import client as ecs_client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ecs20140526 import models as ecs_20140526_models def init_ecs_client(): """ 初始化ECS用戶端。 該函數不接受任何參數。 返回: ecs_client.Client: 一個初始化好的ECS用戶端對象,可用於進一步的ECS操作。 """ # 建立ECS設定物件,並從環境變數中讀取存取密鑰 ecs_config = open_api_models.Config() ecs_config.access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] ecs_config.access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] # 設定endpoint ecs_config.endpoint = 'ecs-cn-hangzhou.aliyuncs.com' # 使用配置初始化ECS用戶端並返回 return ecs_client.Client(ecs_config) if __name__ == '__main__': # 初始化ECS用戶端 client = init_ecs_client() # 建立DescribeRegionsRequest請求對象 describeRegions_request = ecs_20140526_models.DescribeRegionsRequest() # 發送describeRegions請求,擷取地區資訊 response = client.describe_regions(describeRegions_request) print(response.body)
異常處理。
Python V2.0 SDK中的異常是統一由Tea.exceptions來處理的,它將異常分為了兩類:
UnretryableException:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出。
TeaException:在SDK的請求中主要以業務報錯為主的異常。
import os from Tea.exceptions import UnretryableException, TeaException from alibabacloud_ecs20140526 import client as ecs_client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ecs20140526 import models as ecs_20140526_models def init_ecs_client(): """ 初始化ECS用戶端。 該函數不接受任何參數。 返回: ecs_client.Client: 一個初始化好的ECS用戶端對象,可用於進一步的ECS操作。 """ # 建立ECS設定物件,並從環境變數中讀取存取密鑰 ecs_config = open_api_models.Config() ecs_config.access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] ecs_config.access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] # 設定endpoint ecs_config.endpoint = 'ecs-cn-hangzhou.aliyuncs.com' # 使用配置初始化ECS用戶端並返回 return ecs_client.Client(ecs_config) if __name__ == '__main__': try: # 初始化ECS用戶端 client = init_ecs_client() # 建立DescribeRegionsRequest請求對象 describeRegions_request = ecs_20140526_models.DescribeRegionsRequest() # 發送describeRegions請求,擷取地區資訊 response = client.describe_regions(describeRegions_request) # 列印響應結果 print(response.body) except UnretryableException as e: # 處理網路異常 print(e) except TeaException as e: # 處理業務異常 print(e) except Exception as e: # 處理其他異常 print(e)
(可選)您也可以複製OpenAPI門戶提供的範例程式碼到檔案中運行,如何擷取範例程式碼請查看SDK代碼自動產生。