通過IDE使用阿里云Python SDK
本文以在Windows操作系統上,通過PyCharm使用阿里云SDK為例,幫助您了解如何快速使用阿里云Python SDK。
前提條件
已安裝了Python,如果還未安裝,請參見安裝Python。
已安裝了PyCharm,如果還未安裝,請參見在Windows搭建Python開發環境。
使用 SDK
使用OpenAPI門戶提供的代碼示例工程
可能會存在OpenAPI無法下載代碼示例工程的情況,您可查看在已有項目中使用SDK。
進入OpenAPI門戶的API調試頁面,選擇產品和接口。例如我們以調用云服務器ECS的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的云產品,這里以云服務器ECS為例。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 代碼自動生成。