全部產品
Search
文件中心

Alibaba Cloud SDK:通過IDE使用阿里雲Python SDK

更新時間:Jul 01, 2024

本文以在Windows作業系統上,通過PyCharm使用阿里雲SDK為例,協助您瞭解如何快速使用阿里雲Python SDK。

前提條件

使用 SDK

使用OpenAPI門戶提供的程式碼範例工程

說明

可能會存在OpenAPI無法下載程式碼範例工程的情況,您可查看在已有專案中使用SDK

  1. 進入OpenAPI門戶的API調試頁面,選擇產品和介面。例如我們以調用Elastic Compute Service的DescribeInstanceTypeFamilies介面為例,可在搜尋欄中填入DescribeInstanceTypeFamilies,然後點擊進入API調試頁面。

    1.png

  2. 在頁面中間的參數配置頁簽,並填寫需要的參數資訊。填寫時請參考右側的文檔頁簽,充分瞭解介面的說明和注意事項(尤其是費用相關資訊),以及各參數的具體含義和使用方法。如DescribeInstanceTypeFamilies介面支援傳入兩個參數,其中RegionId為必填,您可填入cn-hangzhou(表示杭州地區);Generation非必填,您可填入ecs-5(表示系列 V 執行個體規格類型系列),參數詳細取值可在右側文檔中查看。

    2.png

  3. 在右側的SDK樣本頁面,選擇語言,單擊下載完整工程按鈕,下載SDK完整工程至本地並解壓。

    image

  4. 開啟PyCharm,單擊File->Open,選擇解壓好的工程檔案,在Creating Virtual Environment視窗單擊OK,等待Python虛擬環境的建立和依賴資源下載。

    image

    說明

    如果所需依賴資源沒有正常下載完成,請在Terminal中執行python3 setup.py install

  5. 在調用之前,需要先擷取訪問憑證AccessKey,建議使用RAM使用者的AccessKey。更多資訊,請參見建立RAM使用者的AccessKey

    重要

    擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數

  6. 運行範例程式碼。

    在PyCharm視窗底部單擊Terminal選項卡或者按下Alt + F12開啟Terminal,在Terminal中輸入下面的命令運行。

    python ./alibabacloud_sample/sample.py
    

    image

  7. 查看運行結果。在底部控制台按下ctrl+f,搜尋statusCode,如果看到"statusCode":200表示調用成功。

    image

在已有專案中使用SDK

  1. 擷取SDK。

    訪問SDK中心,選擇您想要使用的 SDK的雲產品,這裡以Elastic Compute Service為例。SDK版本選擇 V2.0,語言選擇 Python

    image

  2. 安裝SDK。

    在PyCharm中,按下ALT+F12開啟Terminal,複製安裝命令到Terminal中,斷行符號執行。

    image

  3. 建立python檔案。

    按右鍵專案名稱,選擇New->Python File,在新快顯視窗輸入檔案名稱sdk_demo,選擇Python file,然後按下斷行符號就建立了一個名稱為sdk_demo.py的檔案。

  4. 初始化用戶端。

    如您想調用ECS的API,必須先對ECS的用戶端做初始化。

    重要
    1. 初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey

    2. 擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數

    3. 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()
    
  5. 調用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)
    
  6. 異常處理。

    Python V2.0 SDK中的異常是統一由Tea.exceptions來處理的,它將異常分為了兩類:

    1. UnretryableException:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出。

    2. 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)
    
  7. (可選)您也可以複製OpenAPI門戶提供的範例程式碼到檔案中運行,如何擷取範例程式碼請查看SDK代碼自動產生

相關文檔

進階文檔