全部產品
Search
文件中心

Alibaba Cloud SDK:整合SDK

更新時間:Dec 24, 2025

在調用OpenAPI時,建議採用在專案中整合SDK的方式。使用SDK可以簡化開發流程,實現功能的快速整合,同時有效降低維護成本。本文將詳細介紹如何在專案中安裝SDK以及使用SDK開發。

環境要求

Python >= 3.7

安裝SDK

由於在安裝雲產品Python V1.0 SDK時會自動安裝核心SDK,所以在實際應用過程中僅需要安裝雲產品SDK即可。

雲產品SDK

雲產品SDK主要包含了調用OpenAPI所需的請求參數Request對象及返回結果Response對象。以雲產品ECS的SDK為例,您可以在Terminal或者命令列中執行以下安裝命令:

pip install aliyun-python-sdk-ecs

V1.0 SDK的命名方式為aliyun-python-sdk-${產品code}。您也可以通過SDK資訊中心來查看具體產品的V1.0 SDK的資訊。

核心SDK

核心SDK主要包含在調用OpenAPI時所需的Client對象、簽名邏輯以及異常處理等功能。當您使用泛化調用或者單獨安裝某一個版本的核心SDK時,可以執行以下安裝命令:

pip install aliyun-python-sdk-core

核心SDK版本資訊請參見aliyun-python-sdk-core · PyPI

使用SDK

本文將以調用ECSDescribeInstances介面為例,為您分步介紹如何使用V1.0 SDK。

1. 初始化請求用戶端

所有的OpenAPI均通過核心SDK提供的Client發起調用,因此在調用OpenAPI之前,需要先進行用戶端初始化。這裡以使用AK初始化方式為例,更多用戶端初始化方式請參見管理訪問憑據

說明

樣本採用讀取環境變數的方式擷取憑證,運行代碼前需配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數

import os

from aliyunsdkcore.client import AcsClient

# 初始化Client
client = AcsClient(
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 從環境變數中擷取RAM使用者的AccessKey ID
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 從環境變數中擷取RAM使用者Access Key Secret
    '<REGION_ID>'  # 地區ID
)

2. 構造OpenAPI請求參數對象

可以使用雲產品SDK中提供的Request對象封裝請求參數。

說明

OpenAPI請求參數對象的命名方式為:<OpenAPI名稱>Request

from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest

# 構造DescribeInstancesRequest對象
request = DescribeInstancesRequest()
request.set_InstanceIds("[\"i-bp1dXXXXXXXXXXXX\"]")
request.set_PageSize(100)
request.set_PageNumber(1)

3. 發起請求

通過步驟1建立的請求用戶端調用do_action_with_exception介面發起請求,該介面的參數為步驟2構造的Request對象。調用成功後,將返回Response對象。

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

4. 異常處理

在調用OpenAPI時如果發生異常,您可以通過捕獲ServerException和ClientException來擷取錯誤資訊。其中ClientException異常一般是在初始化用戶端過程中參數填錯,例如AK輸入錯誤;ServerException異常產生的原因有很多種,您可以根據異常中返回的RequestId聯絡阿里雲協助排查問題。

完整程式碼範例

import os

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

try:
    # 初始化Client
    client = AcsClient(
        os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 從環境變數中擷取RAM帳號的AccRAM使用者y ID
        os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 從環境變數中擷取RAM帳號AccesRAM使用者 Secret
        'cn-hangzhou'  # 地區ID,以cn-hangzhou為例
    )

    # 構造DescribeInstancesRequest對象
    request = DescribeInstancesRequest()
    request.set_InstanceIds("[\"i-bp1dXXXXXXXXXXXX\"]")
    request.set_PageSize(100)
    request.set_PageNumber(1)

    #  發送請求
    response = client.do_action_with_exception(request)
    print(response)
except ClientException as e:
    # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
    print(e)
except ServerException as e:
    # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
    print(e)

相關文檔