通过IDE使用阿里云Python SDK

更新时间:

本文以在Windows操作系统上,通过PyCharm使用阿里云SDK为例,帮助您了解如何快速使用阿里云Python SDK。

前提条件

使用 SDK

使用OpenAPI门户提供的代码示例工程

说明

可能会存在OpenAPI无法下载代码示例工程的情况,您可查看在已有项目中使用SDK

  1. 进入OpenAPI门户的API调试页面,选择产品和接口。例如我们以调用云服务器ECS的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的云产品,这里以云服务器ECS为例。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 代码自动生成

相关文档

进阶文档