集成SDK

更新时间:

在调用OpenAPI时,建议采用在项目中集成SDK的方式。使用SDK可以简化开发流程,实现功能的快速集成,同时有效降低维护成本。本文将详细介绍如何在项目中安装SDK以及使用SDK开发。

环境要求

Python >= 3.7

安装SDK

由于在安装云产品Python V1.0 SDK时会自动安装核心SDK,所以在实际应用过程中仅需要安装云产品SDK即可。

云产品SDK

云产品SDK主要包含了调用OpenAPI所需的请求参数Request对象及返回结果Response对象。以云产品ECSSDK为例,您可以在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、macOSWindows系统配置环境变量

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时如果发生异常,您可以通过捕获ServerExceptionClientException来获取错误信息。其中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账号的AccessKey ID
        os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 从环境变量中获取RAM账号Access Key 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)

配置pip国内镜像源(可选)

在中国内地,使用阿里云的镜像源可以显著提高下载速度。

临时使用

如果您只是想在某一次安装时使用特定的镜像源,可以在pip命令后加上-i参数指定镜像地址。例如使用阿里云的镜像源安装aliyun-python-sdk-core库,可以这样操作:

 pip install aliyun-python-sdk-core -i https://mirrors.aliyun.com/pypi/simple/ 

永久配置

如果您想永久修改pip的默认源,可以编辑pip的配置文件,LinuxmacOS上通常是~/.pip/pip.conf,Windows上是 %USERPROFILE%\pip\pip.ini。如果文件不存在,您可以手动创建它。

Linux/macOS

  1. 在终端中执行以下命令来编辑配置文件(如果文件不存在,这将创建它):

    mkdir -p ~/.pip && vim ~/.pip/pip.conf
    
  2. 按下i键进入编辑模式,将以下内容复制到配置文件中。

    [global]
    index-url = http://mirrors.cloud.aliyuncs.com/pypi/simple/
    
  3. 按下ESC,输入:wq保存配置文件。您可以执行以下命令检查是否配置正确。

    pip config list
    
    # 如果显示下列信息,则已配置完成。
    global.index-url='http://mirrors.cloud.aliyuncs.com/pypi/simple/'
    

Windows

您可以在%USERPROFILE%\pip目录下创建pip.ini文件,并将以下内容复制到该文件中。

[global]
index-url = http://mirrors.cloud.aliyuncs.com/pypi/simple/

相关文档