Python

安装

可使用 pip 安装:

$ pip install qingcloud-sdk

如果不是在 virtualenv 上安装,则需要 sudo

$ sudo pip install qingcloud-sdk

如果你已安装 qingcloud-sdk 并需要更新到最新版本,则可以:

$ pip install --upgrade qingcloud-sdk

通过源码安装:

$ git clone https://github.com/yunify/qingcloud-sdk-python.git
$ cd qingcloud-sdk-python
$ python setup.py install

Quick Start

使用 qingcloud-sdk 前请先在 青云控制台 申请 access key,申请后便可以自由使用了。

下面举几个例子来帮助大家快速上手,全部功能请见后面的 函数列表

建立连接

发起请求前要先建立连接:

>>> import qingcloud.iaas
>>> conn = qingcloud.iaas.connect_to_zone(
        'pek1', # 你的资源所在的节点ID,可在控制台切换节点的地方查看,如 'pek1', 'pek2', 'gd1' 等
        'access key id',
        'secret access key'
    )

上面代码中得到的 conn 是 APIConnection 的实例,在接下来的教程中会继续用到它。

APIConnection 中各操作函数的返回值是根据 API 返回的 JSON 数据转换而成的 dict 。 具体返回内容可参见 API 文档 中对应指令。

创建主机

创建一台主机至少要提供映像ID,Instance Types 或 cpu/memory:

>>> ret = conn.run_instances(
        image_id='img-xxxxxx',
        cpu=1,
        memory=1024,
        vxnets=['vxnet-0'],
        login_mode='passwd',
        login_passwd='Passw0rd@()'
    )

如果创建时没有指定防火墙 security_group ,则自动使用缺省防火墙。

关闭主机

当你的主机暂时不需要运行时,可将其关闭以减少费用(可同时关闭多台):

>>> ret = conn.stop_instances(
        instances=['instance-id-1','instance-id-2', ...]
    )

有时默认关机会失败,特别是 windows 系统,部分运行中的应用会阻止系统关机。 这时需要强制关机:

>>> ret = conn.stop_instances(
        instances=['instance-id-1','instance-id-2', ...],
        force=True
    )

销毁主机

当你的主机确已不再需要时,可将其销毁,主机系统磁盘内的数据也会随之一起销毁:

>>> ret = conn.terminate_instances(
        instances=['instance-id-1','instance-id-2', ...]
    )

主机所加载的硬盘不会因主机的销毁而删除,硬盘内的数据也不会因此丢失。

获取主机

可根据主机ID,状态,主机名称,映像ID 作过滤条件,来获取主机列表。 如果不指定任何过滤条件,默认返回你所拥有的所有主机:

>>> ret = conn.describe_instances(limit=50)
>>> all_instances = ret['instance_set']

>>> ret = conn.describe_instances(status=['running'])
>>> running_instances = ret['instance_set']

>>> ret = conn.describe_instances(search_word='test')
>>> test_instances = ret['instance_set']

创建并加载硬盘

在同一个 zone 下的硬盘可加载到任何一个正在运行或处于关闭状态的主机上。

先创建一个硬盘:

>>> ret = conn.create_volumes(
        size=10,
        volume_name='demo vol'
    )
>>> volume_id = ret['volumes'][0]

检查这个硬盘的状态:

>>> ret = conn.describe_volumes(volumes=[volume_id])
>>> volume = ret['volume_set'][0]
>>> volume.status
u'available'

创建成功后将其加载到主机:

>>> ret = conn.attach_volumes(volumes=[volume_id], instance='instance-id')

硬盘加载成功后,需要到加载的主机上进一步手动操作,具体可参考 FAQ

函数列表

APIConnection 中包括各项资源的操作函数,简单罗列如下:

Image 映像

  • describe_images - 获取映像列表
  • capture_instance - 基于主机创建自有映像
  • delete_images - 删除自有映像
  • modify_image_attributes - 修改映像基本属性

Instance 主机

  • describe_instances - 获取主机列表
  • run_instances - 创建主机
  • terminate_instances - 销毁主机
  • stop_instances - 关机
  • restart_instances - 重启主机
  • start_instances - 开机
  • reset_instances - 重置主机(会将系统盘恢复到初始状态,慎用)
  • resize_instances - 修改主机 CPU 内存配置
  • modify_instance_attributes - 修改主机基本属性

Volume 硬盘

  • describe_volumes - 获取硬盘列表
  • create_volumes - 创建硬盘
  • delete_volumes - 删除硬盘
  • attach_volumes - 挂载
  • detach_volumes - 卸载
  • resize_volumes - 扩容
  • modify_volume_attributes - 修改硬盘基本属性

Snapshot 备份

  • describe-snapshots - 获取备份列表
  • create-snapshots - 创建备份
  • delete-snapshots - 删除备份
  • apply-snapshots - 基于备份回滚数据
  • modify-snapshot-attributes - 修改备份基本属性
  • capture-instance-from-snapshot - 基于主机的备份创建自有映像
  • create-volume-from-snapshot - 基于硬盘的备份创建新硬盘

KeyPair 密钥

  • describe_key_pairs - 获取 SSH 密钥列表
  • attach_keypairs - 加载密钥
  • detach_keypairs - 卸载密钥
  • create_keypair - 创建新密钥对
  • delete_keypairs - 删除密钥
  • modify_keypair_attributes - 修改密钥基本属性

Security Group 防火墙

  • describe_security_groups - 获取防火墙列表
  • create_security_group - 创建新防火墙
  • modify_security_group_attributes - 修改防火墙属性
  • apply_security_group - 应用防火墙规则
  • delete_security_groups - 删除防火墙
  • describe_security_group_rules - 获取防火墙规则列表
  • add_security_group_rules - 添加规则
  • delete_security_group_rules - 删除规则
  • modify_security_group_rule_attributes - 修改规则

Vxnet 私有网络

  • describe_vxnets - 获取私有网络列表
  • create_vxnets - 创建私有网络
  • join_vxnet - 将主机加入网络
  • leave_vxnet - 主机离开网络
  • delete_vxnets - 删除私有网络
  • modify_vxnet_attributes - 修改网络基本属性
  • describe_vxnet_instances - 获取网络内的主机

Router 路由器

  • describe_routers - 获取路由器列表
  • create_routers - 创建新路由器
  • delete_routers - 删除路由器
  • update_routers - 更新路由器的改动
  • poweroff_routers - 关闭
  • poweron_routers - 开启
  • join_router - 连接私有网络和路由器
  • leave_router - 断开私有网络和路由器
  • modify_router_attributes - 修改路由器基本属性
  • describe_router_vxnets - 获取路由器连接的私有网络
  • describe_router_statics - 获取路由器规则,包括端口转发、VPN、隧道、访问控制等
  • add_router_statics - 添加路由器规则
  • delete_router_statics - 删除规则

Eip 公网IP

  • describe_eips - 获取公网 IP 列表
  • associate_eip - 绑定公网 IP 到资源
  • dissociate_eips - 解绑公网 IP
  • allocate_eips - 申请公网 IP
  • release_eips - 释放公网 IP
  • change_eips_bandwidth - 调整带宽
  • modify_eip_attributes - 修改公网 IP 基本属性

LB 负载均衡器

  • describe_loadbalancers - 获取负载均衡器列表
  • create_loadbalancer - 创建负载均衡器
  • delete_loadbalancers - 删除负载均衡器
  • modify_loadbalancer_attributes - 修改负载均衡器基本属性
  • associate_eips_to_loadbalancer - 绑定公网 IP 到负载均衡器
  • dissociate_eips_from_loadbalancer - 解绑公网 IP
  • start_loadbalancers - 开启
  • stop_loadbalancers - 关闭
  • update_loadbalancers - 更新负载均衡器
  • describe_loadbalancer_listeners - 获取负载均衡器监听器列表
  • add_listeners_to_loadbalancer - 添加监听器
  • modify_loadbalancer_listener_attributes - 修改监听器基本属性
  • delete_loadbalancer_listeners - 删除监听器
  • describe_loadbalancer_backends - 获取负载均衡器后端服务列表
  • add_backends_to_listener - 添加后端服务
  • modify_loadbalancer_backend_attributes - 修改后端服务基本属性
  • delete_loadbalancer_backends - 删除后端服务

Monitor 监控

  • get_monitoring_data - 获取主机、IP、路由器监控数据
  • get_loadbalancer_monitoring_data - 获取负载均衡器监控数据

DNS Alias 内网域名别名

  • describe_dns_aliases - 获取内网域名别名列表
  • associate_dns_alias - 给资源关联内外域名别名
  • dissociate_dns_aliases - 解除资源的内网域名别名
  • get_dns_label - 获取内网域名的标签,用于组成内网域名

內容目录