• 沒有找到結果。

DNS Python SDK示例_SDK开发指南_开发指南_SDK(旧)_Python_华为云

N/A
N/A
Protected

Academic year: 2022

Share "DNS Python SDK示例_SDK开发指南_开发指南_SDK(旧)_Python_华为云"

Copied!
230
0
0

加載中.... (立即查看全文)

全文

(1)

开发指南

文档版本 12

发布日期 2021-11-10

(2)

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 SDK V3 版本简介(新)...1

2 SDK(旧)... 3

2.1 SDK 简介... 3

2.2 Java...3

2.2.1 Java SDK 入门... 3

2.2.2 Java SDK 使用... 5

2.2.2.1 安装 Java SDK...5

2.2.2.2 Java SDK 认证方式... 6

2.2.2.3 Java SDK 服务地址设置... 9

2.2.2.4 Java SDK 故障排查... 10

2.2.3 IAM Java SDK 示例... 10

2.2.4 IMS Java SDK 示例...11

2.2.5 VPC Java SDK 示例... 11

2.2.6 ECS Java SDK 示例... 12

2.2.7 EVS Java SDK 示例...13

2.2.8 AS Java SDK 示例... 14

2.2.9 CES Java SDK 示例... 15

2.2.10 DNS Java SDK 示例... 15

2.2.11 ELB Java SDK 示例...16

2.2.12 VBS Java SDK 示例... 16

2.2.13 CTS Java SDK 示例... 21

2.2.14 KMS Java SDK 示例...22

2.2.15 Anti-DDoS Java SDK 示例... 22

2.2.16 DMS Java SDK 示例... 25

2.2.17 MRS Java SDK 示例...26

2.2.18 CDN Java SDK 示例...27

2.2.19 FGS Java SDK 示例... 28

2.2.20 BSS Java SDK 示例... 28

2.2.21 TMS Java SDK 示例... 29

2.2.22 EPS Java SDK 示例...29

2.2.23 RDS Java SDK 示例...29

2.3 Python...30

2.3.1 Python SDK 入门... 30

(4)

2.3.2 Python SDK 使用... 32

2.3.2.1 安装 Python SDK...32

2.3.2.2 Python SDK 认证方式... 32

2.3.2.3 Python SDK 客户端配置...34

2.3.2.4 Python SDK 服务地址设置... 35

2.3.2.5 Python SDK 故障排查... 36

2.3.2.6 Python SDK 函数通用参数... 36

2.3.3 IAM Python SDK 示例...37

2.3.4 IMS Python SDK 示例... 38

2.3.5 VPC Python SDK 示例... 38

2.3.6 ECS Python SDK 示例... 39

2.3.7 EVS Python SDK 示例... 40

2.3.8 AS Python SDK 示例... 40

2.3.9 CES Python SDK 示例... 41

2.3.10 DNS Python SDK 示例... 41

2.3.11 ELB Python SDK 示例... 43

2.3.12 VBS Python SDK 示例...43

2.3.13 KMS Python SDK 示例... 47

2.3.14 Anti-DDoS Python SDK 示例... 48

2.3.15 DMS Python SDK 示例...50

2.3.16 MRS Python SDK 示例... 51

2.3.17 RDS Python SDK 示例... 53

2.3.18 CDN Python SDK 示例... 54

2.3.19 FGS Python SDK 示例...54

2.3.20 BSS Python SDK 示例... 54

2.3.21 TMS Python SDK 示例... 55

2.3.22 EPS Python SDK 示例... 55

2.4 Go... 55

2.4.1 Go SDK 入门... 55

2.4.2 Go SDK 使用... 58

2.4.2.1 Go SDK 认证方式... 58

2.4.2.2 Go SDK 故障排查... 61

2.4.3 ECS Go SDK 用户指导... 61

2.4.4 EVS Go SDK 用户指导... 62

2.4.5 VPC Go SDK 用户指导... 63

2.4.6 IAM Go SDK 用户指导... 63

2.4.7 IMS Go SDK 用户指导...65

2.4.8 ELB Go SDK 用户指导... 66

2.4.9 AS Go SDK 用户指导... 67

2.4.10 CES Go SDK 用户指导... 67

2.4.11 FGS Go SDK 用户指导... 68

2.4.12 RDS Go SDK 用户指导...68

(5)

2.4.13 BSS GO SDK 用户指导...68

2.5 SDK 常见问题... 69

2.5.1 如何在控制台上创建秘钥对?... 69

2.5.2 如何创建安全组?...69

2.5.3 如何获取 IAM 用户名、账号 ID 以及项目 ID?... 70

2.5.4 服务名称列表... 70

2.5.5 云服务区域类型列表... 71

2.6 API 与 SDK 对应关系...72

2.6.1 Java... 72

2.6.1.1 IAM...72

2.6.1.2 IMS... 79

2.6.1.3 VPC... 81

2.6.1.4 ECS... 89

2.6.1.5 EVS... 100

2.6.1.6 AS... 104

2.6.1.7 CES... 108

2.6.1.8 DNS... 109

2.6.1.9 ELB... 111

2.6.1.10 VBS... 115

2.6.1.11 CTS... 117

2.6.1.12 KMS... 117

2.6.1.13 AntiDDoS...118

2.6.1.14 DMS... 119

2.6.1.15 MRS... 120

2.6.1.16 CDN... 121

2.6.1.17 FGS... 124

2.6.1.18 BSS...128

2.6.1.19 TMS... 131

2.6.1.20 EPS...131

2.6.1.21 RDS... 132

2.6.2 Python... 134

2.6.2.1 IAM... 134

2.6.2.2 IMS...141

2.6.2.3 VPC... 142

2.6.2.4 ECS... 151

2.6.2.5 EVS... 159

2.6.2.6 AS... 161

2.6.2.7 CES... 166

2.6.2.8 DNS... 167

2.6.2.9 ELB... 168

2.6.2.10 VBS... 173

2.6.2.11 KMS... 174

(6)

2.6.2.12 AntiDDoS...175

2.6.2.13 DMS... 176

2.6.2.14 MRS... 177

2.6.2.15 RDS... 178

2.6.2.16 CDN... 180

2.6.2.17 FGS... 184

2.6.2.18 BSS...186

2.6.2.19 TMS... 189

2.6.2.20 EPS...189

2.6.3 Go... 190

2.6.3.1 ECS... 190

2.6.3.2 EVS... 195

2.6.3.3 VPC... 196

2.6.3.4 IAM... 202

2.6.3.5 IMS...203

2.6.3.6 ELB... 203

2.6.3.7 AS... 207

2.6.3.8 FGS...213

2.6.3.9 RDS... 215

2.6.3.10 BSS...218

2.6.3.11 CES... 221

A 修订记录... 223

(7)

1 SDK V3 版本简介(新)

本文介绍了各个云服务提供的SDK语言版本,列举了最新版本SDK的获取地址。

访问和使用 SDK V3 版本

登录SDK中心,您可以访问和使用SDK V3版本。

通过SDK中心,您可以选择不同服务、不同语言类型的SDK,包含源码仓库、Nuget仓 库以及相关API的入口,如图1-1所示。

1-1 SDK 中心

在线生成 SDK 代码

API Explorer能根据需要动态生成SDK代码功能,降低您使用SDK的难度,推荐使用。

您可以在API Explorer中具体API页面的“代码示例”页签查看对应编程语言类型的 SDK代码,如图1-2所示。

(8)

1-2 获取 SDK 代码示例

SDK 列表

表1-1提供了各个云服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、获 取安装包以及查看指导文档。

1-1 SDK 列表

编程语言 Github地址 参考文档 视频指导

Java huaweicloud-sdk-java-

v3 Java SDK使用指导 Java SDK视频

指导 Python huaweicloud-sdk-

python-v3 Python SDK使用指

Python SDK视

频指导 PHP huaweicloud-sdk-php-

v3 PHP SDK使用指导 PHP SDK视频指

Go huaweicloud-sdk-go-v3 Go SDK使用指导 Go SDK视频指

Node.js huaweicloud-sdk-

nodejs-v3 Node.js SDK使用指

Node.js SDK视

频指导 .NET huaweicloud-sdk-net-

v3 .NET SDK使用指导 .NET SDK视频

指导

(9)

2 SDK(旧)

2.1 SDK 简介

软件开发工具包(SDK)包括代码以及示例,用户可以自行选择语言创建云应用。

目前SDK的语言支持:Java、Python、Go。如果以下SDK中有任意一种不支持您所选 的语言或用例,您可以使用API或其他任意一种熟知的SDK。

2.2 Java

2.2.1 Java SDK 入门

欢迎使用华为云开发者工具套件(Java SDK)。Java SDK让您轻松编程即可访问云服 务。

本教程介绍如何安装和使用Java SDK,并提供示例,方便您快速入门。

我们支持的Java SDK基于OpenStack4j开发。

支持的云服务列表

Java SDK支持的云服务产品如下:

● 统一身份认证 IAM

● 镜像服务 IMS

● 虚拟私有云 VPC

● 弹性云服务器 ECS

● 云硬盘 EVS

● 弹性伸缩 AS

● 云监控服务 CES

● 云解析服务 DNS

● 弹性负载均衡 ELB

(10)

● 云硬盘备份 VBS

● 云审计服务 CTS

● 数据加密服务 KMS

● 流量清洗Anti-DDoS

● 分布式消息服务 DMS

MapReduce服务 MRS

● 内容分发网络 CDN

● 运营能力 BSS

● 标签管理服务 TMS

● 企业管理 EPS

● 云数据库 RDS

前提条件

1. 已经申请到云平台账号,并开通所需的云服务。

2. 已经安装好JDK,Java SDK适用于 JDK1.8和以上版本,我们建议您使用 JDK1.8。

SDK 获取和安装

通过在pom.xml文件中添加以下Maven依赖安装Java SDK。

<dependency>

<groupId>com.huawei</groupId>

<artifactId>openstack4j</artifactId>

<version>1.0.12</version>

</dependency>

Java SDK支持的最新版本,请在这儿查询。

本文档中涉及的服务使用同一个JAR文件。

开始使用

设置参数,初始化SDK客户端,然后调用SDK访问服务的API。参数详情请参考表 2-1。

package demo;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.huawei.openstack4j.openstack.OSFactory;

import com.huawei.openstack4j.api.OSClient.OSClientV3;

import com.huawei.openstack4j.core.transport.Config;

import com.huawei.openstack4j.model.common.Identifier;

import com.huawei.openstack4j.model.compute.Server;

public class Demo {

public static void main(String[] args) { //设置认证参数

String authUrl = "https://iam.example.com/v3";//endpointUrl String user = "replace-with-your-username";//用户名 String password = "replace-with-your-password";//用户密码 String projectId = "replace-with-your-projectId";//项目ID String userDomainId = "replace-with-your-domainId";//账号ID

(11)

//初始化client

OSClientV3 os = OSFactory.builderV3() .endpoint(authUrl)

.credentials(user, password, Identifier.byId(userDomainId)) .scopeToProject(Identifier.byId(projectId)).authenticate();

//设置查询参数

Map<String, String> filter = new HashMap<String, String>();

//将需要输入的参数都放入filter里面 filter.put("limit", "3");

//调用查询虚拟机列表的接口

List<? extends Server> serverList = os.compute().servers().list(filter);

if (serverList.size() > 0) {

System.out.println("get serverList success, size = " + serverList.size());

for (Server server : serverList) { System.out.println(server);

} } else {

System.out.println("no server exists.");

} } }

2-1 参数说明

名称 说明 取值样例

authUrl 认证服务(IAM)的 Endpoint。

“https://iam.example.com/

v3”中的“example”为“区 域.云平台域名”,参数详情可 以访问这里了解。

https://iam.cn-

north-1.myhuaweicloud.com/v3

user IAM用户名。如何获取,请参

考如何获取IAM 用户名、账号 ID以及项目ID?。

-

password IAM用户密码。 -

projectId 项目ID。如何获取,请参考如 何获取IAM 用户名、账号ID以 及项目ID?。

-

userDomai

nId 账号ID。如何获取,请参考如

何获取IAM 用户名、账号ID以 及项目ID?。

-

2.2.2 Java SDK 使用

2.2.2.1 安装 Java SDK

Java SDK提供“导入Java SDK JAR文件”、“添加Maven依赖”和“从华为云镜像站 下载”三种安装方式。

(12)

方式一:导入Java SDK JAR文件的方式,如下:

请从GitHub 上下载JAR文件,并在集成开发环境(IDE)中导入。

https://github.com/huaweicloud/huaweicloud-sdk-release/tree/master/java- sdk

以Eclipse为例,创建Java工程后,执行以下步骤,导入JAR文件到新建的工程中:

1. 将下载的JAR文件复制到工程文件夹中。

2. 在Eclipse中打开工程,右键单击该项工程,选择Properties。

3. 在弹出的对话框中,单击Java Build Path,然后在Libraries页签下单击Add JARs,添加下载的JAR文件。

4. 单击OK。

方式二:添加Maven依赖的方式,如下:

通过在pom.xml文件中添加以下依赖安装Java SDK。

<dependency>

<groupId>com.huawei</groupId>

<artifactId>openstack4j</artifactId>

<version>1.0.12</version>

</dependency>

Java SDK支持的最新版本,请在这儿查询。

方式三:从华为云镜像站下载的方式,如下:

1. 找到本地maven的全局配置文件(settings.xml),该文件通常位于maven安装目 录的conf下,例如windows系统中:D:\maven\apache-maven-3.3.9\conf

\settings.xml

2. 在settings.xml找到mirror节点,在mirror节点中增加:

<mirror>

<id>huaweicloud</id>

<mirrorOf>*,!HuaweiCloudSDK</mirrorOf>

<url>https://repo.huaweicloud.com/repository/maven/</url>

</mirror>

3. 打开Maven工程的pom.xml,在“<dependency>”节点中加入以下配置:

<dependency>

<groupId>com.huawei</groupId>

<artifactId>openstack4j</artifactId>

<version>1.0.12</version>

</dependency>

Java SDK支持的最新版本,请在这儿查询。

2.2.2.2 Java SDK 认证方式

Java SDK支持两种认证方式:token认证和AK/SK认证。

token 认证

token认证方式示例代码,参数详情请参考表2-2。

package demo;

import java.util.HashMap;

(13)

import java.util.List;

import java.util.Map;

import com.huawei.openstack4j.openstack.OSFactory;

import com.huawei.openstack4j.api.OSClient.OSClientV3;

import com.huawei.openstack4j.core.transport.Config;

import com.huawei.openstack4j.model.common.Identifier;

import com.huawei.openstack4j.model.compute.Server;

public class Demo {

public static void main(String[] args) { //设置认证参数

String authUrl = "https://iam.example.com/v3";//endpointUrl String user = "replace-with-your-username";//用户名 String password = "replace-with-your-password";//用户密码 String projectId = "replace-with-your-projectId";//项目ID String userDomainId = "replace-with-your-domainId";//账号ID //初始化client

OSClientV3 os = OSFactory.builderV3() .endpoint(authUrl)

.credentials(user, password, Identifier.byId(userDomainId)) .scopeToProject(Identifier.byId(projectId)).authenticate();

//设置查询参数

Map<String, String> filter = new HashMap<String, String>();

//将需要输入的参数都放入filter里面 filter.put("limit", "3");

//调用查询虚拟机列表的接口

List<? extends Server> serverList = os.compute().servers().list(filter);

if (serverList.size() > 0) {

System.out.println("get serverList success, size = " + serverList.size());

for (Server server : serverList) { System.out.println(server);

} } else {

System.out.println("no server exists.");

} } }

2-2 参数说明

名称 说明 取值样例

authUrl 认证服务(IAM)的 Endpoint。

“https://iam.example.com/

v3”中的“example”为“区 域.云平台域名”,参数详情可 以访问这里了解。

https://iam.cn-

north-1.myhuaweicloud.com/v3

user IAM用户名。如何获取,请参

考如何获取IAM 用户名、账号 ID以及项目ID?。

-

password IAM用户密码。 -

projectId 项目ID。如何获取,请参考如 何获取IAM 用户名、账号ID以 及项目ID?。

-

(14)

名称 说明 取值样例 userDomai

nId 账号ID。如何获取,请参考如

何获取IAM 用户名、账号ID以 及项目ID?。

-

token具有24小时有效期,如果您的程序运行时间超过24小时,在使用SDK调用API之 前,建议您在程序中重新申请一次token,方法如下:

import com.huawei.openstack4j.openstack.OSFactory;

OSFactory.refreshToken();

AK/SK 认证

AK/SK认证方式示例代码,参数详情请参考表2-3。

package demo;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.huawei.openstack4j.api.OSClient.OSClientAKSK;

import com.huawei.openstack4j.core.transport.Config;

import com.huawei.openstack4j.model.compute.Server;

import com.huawei.openstack4j.openstack.OSFactory;

public class Demo {

public static void main(String[] args) { // 设置认证参数

String ak = "replace-your-ak";

String sk = "replace-your-sk";

String projectId = "replace-your-projectId";

String region = "replace-your-region"; //example: region = "cn-north-1"

String cloud = "myhuaweicloud.com";

OSClientAKSK osclient = OSFactory.builderAKSK().credentials(ak, sk, region, projectId, cloud) .authenticate();

// 设置查询参数

Map<String , String> filter = new HashMap<String, String>();

// 将需要输入的参数都放入filter里面 filter.put("limit", "3");

// 调用查询虚拟机列表的接口

List<? extends Server> serverList = osclient.compute().servers().list(filter);

if(serverList.size() > 0)

{ System.out.println("get serverList success, size = " + serverList.size());

for (Server server : serverList) { System.out.println(server);

} } else {

System.out.println("no server exists.");

} } }

(15)

2-3 参数说明

名称 说明 取值样例

ak/sk AK/SK访问密钥。

说明

● AK/SK生成说明:登录控制 台,进入“我的凭证”,点击

“管理访问密钥”创建 AK/SK。

● AK/SK签名时间与UTC时间误 差不可以超过15分钟,否则会 鉴权失败。

● AK/SK签名连续失败超过5次,

将锁定对应访问的源IP的 AK/SK请求,持续5分钟。

-

projectId 项目ID。如何获取项目ID请参 考如何获取IAM 用户名、账号 ID以及项目ID?。

-

region 区域名称。 cn-north-1

cloud 云平台域名。 myhuaweicloud.com

2.2.2.3 Java SDK 服务地址设置

使用SDK调用云服务API时,需要获取每个云服务的地址(Endpoint)。

Java SDK支持两种方式:SDK自动获取、手工编码设置。

编码设置云服务Endpoint的示例如下:

endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE, "https://ces.xxx.yyy.com/V1.0/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.DNS, "https://dns.yyy.com");

endpointResolver.addOverrideEndpoint(ServiceType.CDN, "https://cdn.yyy.com/v1.0");

endpointResolver.addOverrideEndpoint(ServiceType.COMPUTE, "https://ecs.xxx.yyy.com/v2/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.NETWORK, "https://vpc.xxx.yyy.com");

endpointResolver.addOverrideEndpoint(ServiceType.IMAGE, "https://ims.xxx.yyy.com");

endpointResolver.addOverrideEndpoint(ServiceType.BLOCK_STORAGE, "https://evs.xxx.yyy.com/v2/%

(project_id)s"");

endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP, "https://vbs.xxx.yyy.com/v2/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING, "https://as.xxx.yyy.com/autoscaling-api/

v1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER, "https://elb.xxx.yyy.com/v1.0/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE, "https://mrs.xxx.yyy.com/v1.1/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT, "https://kms.xxx.yyy.com/v1.0/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE, "https://cts.xxx.yyy.com/v1.0/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS, "https://antiddos.xxx.yyy.com/v1/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.Notification, "https://smn.xxx.yyy.com/v2/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue, "https://dms.xxx.yyy.com/v1.0/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.MAAS, "https://maas.xxx.yyy.com/v1/%(project_id)s");

(16)

endpointResolver.addOverrideEndpoint(ServiceType.ECS, "https://ecs.xxx.yyy.com/v1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.ECS1_1, "https://ecs.xxx.yyy.com/v1.1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.EVS, "https://evs.xxx.yyy.com/v2/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.EVS2_1, "https://evs.xxx.yyy.com/v2.1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.VPC, "https://vpc.xxx.yyy.com/v1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.VPC2, "https://vpc.xxx.yyy.com/v2.0/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.IDENTITY, "https://iam.xxx.yyy.com/v3");

endpointResolver.addOverrideEndpoint(ServiceType.ORCHESTRATION, "https://rts.xxx.yyy.com/v1/%

(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.NAT, "https://nat.xxx.yyy.com/v2.0");

endpointResolver.addOverrideEndpoint(ServiceType.BMS, "https://bms.xxx.yyy.com/v1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.DEH, "https://deh.xxx.yyy.com/v1.0/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.CSBS, "https://csbs.xxx.yyy.com/v1/%(project_id)s");

endpointResolver.addOverrideEndpoint(ServiceType.IAM, "https://iam.xxx.yyy.com/v3");

● 上述代码中xxx.yyy的格式为:“区域.云平台域名”,参数详情可以访问这里了

解。

● 上述代码中project_id不需要替换为实际值。

● 单击此处获取使用Java SDK的一个完整代码示例,供参考。

2.2.2.4 Java SDK 故障排查

执行如下代码,将Java SDK的执行细节打印出来:

OSFactory.enableHttpLoggingFilter(true);

2.2.3 IAM Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用IAM SDK的时候,SDK支持的参数细节,请参考IAM API描述。

统一身份认证服务IAM Java SDK支持如下资源对象的操作,资源对象的“增改查删”

代码示例如下:

资源对象 “增改查删”代码样例

token 代码

securitytoken 代码

credential 代码

region 代码

project 代码(identity)

代码(iam)

domain 代码

user 代码(identity)

代码(iam)

group 代码

role 代码

custom role 代码

(17)

资源对象 “增改查删”代码样例

agency 代码

version 代码

service 代码

endpoint 代码

2.2.4 IMS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用IMS SDK的时候,SDK支持的参数细节,请参考IMS API描述。

IMS v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如下:

资源对象 “增改查删”代码样例

image 代码

Glance v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

image 代码

image member 代码

2.2.5 VPC Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用VPC SDK的时候,SDK支持的参数细节,请参考VPC API描述。

VPC v1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如下:

资源对象 “增改查删”代码样例

bandwidth 代码

port 代码

private ip 代码

public ip 代码

(18)

资源对象 “增改查删”代码样例

quota 代码

security group 代码

security group rule 代码

subnet 代码

vpc 代码

VPC v2.0 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

bandwidth 代码

public ip 代码

Neutron v2.0 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例 如下:

资源对象 “增改查删”代码样例

floating ip 代码

network 代码

port 代码

route 代码

security group 代码

security group rule 代码

subnet 代码

2.2.6 ECS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用ECS SDK的时候,SDK支持的参数细节,请参考ECS API描述。

ECS v1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如下:

(19)

资源对象 “增改查删”代码样例

cloudserver v1 代码

job 代码

ECS v1.1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

cloudserver 代码

Nova v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

flavor 代码

floating ip 代码

interface 代码

keypair 代码

quota set 代码

security group 代码

server 代码

server group 代码

zone 代码

ECS Java SDK提供的场景示例代码如下:

场景 代码样例

create one or more servers 代码 create server with password 代码

2.2.7 EVS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

(20)

在使用EVS SDK的时候,SDK支持的参数细节,请参考EVS API描述。

EVS v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如下:

资源对象 “增改查删”代码样例

volume 代码

snapshot 代码

job 代码

EVS v2.1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

volume 代码

Cinder v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

volume 代码

snapshot 代码

zone 代码

transfer 代码

2.2.8 AS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考描述。

在使用AS SDK的时候,SDK支持的参数细节,请参考AS API描述。

AS v1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如下:

资源对象 “增改查删”代码样例

group 代码

configration 代码

instance 代码

lifecyclehook 代码

(21)

资源对象 “增改查删”代码样例

log 代码

notification 代码

policy 代码

quota 代码

tag 代码

2.2.9 CES Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用CES SDK的时候,SDK支持的参数细节,请参考CES API描述。

CES V1.0 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例如 下:

资源对象 “增改查删”代码样例

metric 代码

alarm 代码

metric data 代码

quota 代码

2.2.10 DNS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考DNS。

在使用DNS SDK的时候,SDK支持的参数细节,请参考DNS API描述。

云解析服务DNS v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代 码示例如下:

资源对象 “增改查删”代码样例

zone 代码

recordset 代码

ptr 代码

(22)

2.2.11 ELB Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用ELB SDK的时候,SDK支持的参数细节,请参考ELB API描述。

增强型负载均衡ELB v2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”

代码示例如下:

资源对象 “增改查删”代码样例

loadbalancer 代码

listener 代码

pool 代码

member 代码

healthmonitor 代码

certificate 代码

whitelist 代码

l7policy 代码

l7rule 代码

经典型负载均衡ELB v1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”

代码示例如下:

资源对象 “增改查删”代码样例

loadbalancer 代码

listener 代码

member 代码

healthcheck 代码

certificate 代码

2.2.12 VBS Java SDK 示例

创建云硬盘备份

下面代码为创建云硬盘备份的过程,用户可以根据需求进行相应的参数配置,创建完 成后,新创建的备份会在VBS的备份列表显示。

public static void createBackup() {

AsyncVolumeBackupCreate vbc = Builders.asyncVolumeBackupCreate()

(23)

.name(backupName) .volumeId(volume.getId()) .build();

AsyncVolumeBackupJob job = osclient.blockStorage().asyncBackups().create(vbc);

Assert.assertNotNull(job.getId());

backupJobId = job.getId();

}

2-4 请求参数说明

名称 是否必选 参数类型 说明

backup 是 dict 待创建的备份。

volume_id 是 string 需要进行备份的磁盘ID。

snapshot_i

d 否 string 需要进行备份的磁盘对应的快照ID。

name 是 string 备份名称,最大支持64个字符(不区分中英

文),只能是中文、英文、数字、下划线

(_)和中划线(-)。

descriptio

n 否 string 备份描述,最大支持64个字符(不区分中英

文),且不能包含“<”和“>”。

查询备份详情列表

下面代码为查询备份列表的过程,返回每个备份的详细信息,用户可以根据需求进行 相应的参数配置。

public static void queryNativeBackupsDetail(){

// 无查询条件

List<? extends VolumeBackup> list = osclient.blockStorage().backups().list(true);

Assert.assertNotEquals(list.size(), 0);

// 条件查询

HashMap<String, String> filter = new HashMap<>();

filter.put("name", backupName);

List<? extends VolumeBackup> list2 = osclient.blockStorage().backups().list(true, filter);

for (VolumeBackup backup: list2) {

Assert.assertEquals(backup.getName(), backupName);

} }

2-5 请求参数说明

名称 是否必选 参数类型 说明

name 否 string 指定查询的备份名称。用于过滤名称为指定

字符串的备份。

status 否 string 指定查询的备份状态。用于过滤特定状态的

备份。可选的值目前只支持:

“available”,“error”,

“restoring”,“creating”,

“deleting”,“error_restoring”。

(24)

名称 是否必选 参数类型 说明

offset 否 int 指定查询信息列表的偏移量。

limit 否 int 指定返回结果个数限制。

volume_id 否 string 指定查询备份的磁盘ID。用于过滤指定磁盘

ID对应的备份。

从备份恢复磁盘

下面代码为选择一个备份恢复到磁盘的过程,用户可以根据需求进行相应的参数配 置。

public static void restoreBackup() {

AsyncVolumeBackupJob job = osclient.blockStorage() .asyncBackups()

.restore(backupId, volume.getId());

Assert.assertNotNull(job.getId());

}

2-6 请求参数说明

名称 是否必选 参数类型 说明

restore 是 dict 标记从备份恢复磁盘操作。

backup_i

d 是 string 需要恢复的备份ID

volume_i

d 是 string 将要被恢复的磁盘ID。

删除备份

下面代码为删除一个备份的过程,用户可以根据需求进行相应的参数配置。

public static void deleteNativeBackup()

{ ActionResponse delete = osclient.blockStorage().backups().delete(backupId);

Assert.assertEquals(delete.isSuccess(), true);

}

2-7 请求参数说明

名称 是否必选 参数类型 说明

tenant_id 是 string 租户ID。

backup_id 是 string 需要恢复的备份ID。

(25)

创建备份策略

下面代码为备份策略的创建过程,用户可以根据需求进行相应的参数配置。

public static void createPolicy() { // 先创建 scheduled policy

VBSVolumeBackupScheduledPolicy scheduledPolicy = VBSVolumeBackupScheduledPolicy.builder() .frequency(10)

.maxBackupAmount(10)

.retainFirstBackupOfCurrentMonth(true) .startTime("01:00")

.status(VolumeBackupPolicy.VolumeBackupPolicyStatus.OFF) .build();

Assert.assertNotNull(scheduledPolicy);

// 创建 backup policy 对象

VolumeBackupPolicy create = VBSVolumeBackupPolicy.builder() .name(policyName)

.scheduledPolicy(scheduledPolicy) .build();

VolumeBackupPolicy policy = osclient.blockStorage().policies().create(create);

Assert.assertNotNull(policy.getId());

2-8 请求参数说明

名称 是否必选 参数类型 说明

backup_polic

y_name 是 string 备份策略名称

只能由数字、字母、汉字、下划线、中划线 组成,同时不能以default开头,长度1到64 位。

scheduled_p

olicy 是 dict 调度策略详情。

start_time 是 string 备份开始时间,需要转化成本地时间对应的

UTC时间(目前只支持整点)。

格式为HH:mm

frequency 否 integer 备份间隔(1-14天),该字段和

week_frequency字段二选一,如果同时设 置,默认以该字段为准。

week_freque

ncy 否 list<dict> 按指定周进行备份,取值为以下值的一个或

者多个:

SUN,MON,TUE,WED,THU,FRI,

SAT rentention_n

um 否 integer 备份保留个数(最小值为2),该字段和

rentention_day字段二先一,如果同时设 置,默认以该字段为准。

rentention_d

ay 否 integer 备份保留天数。

(26)

名称 是否必选 参数类型 说明 remain_first_

backup_of_c urMonth

是 string 是否保留当月的第一个备份。

● Y

● N

status 是 string 策略状态:启用或停用。

● ON

● OFF

删除备份策略

下面代码为备份策略的删除过程,用户可以根据需求进行相应的参数配置。

public static void deletePolicy() {

osclient.blockStorage().policies().delete(policyId);

List<? extends VolumeBackupPolicy> policies = osclient.blockStorage().policies().list();

boolean isSuccess = true;

for (VolumeBackupPolicy policy:

policies) {

if (policy.getId().equals(policyId)) { isSuccess = false;

break;

} }

Assert.assertEquals(isSuccess, true);

}

2-9 请求参数说明

名称 是否必选 参数类型 说明

tenant_id 是 string 租户ID

policy_id 是 string 策略ID

查询备份策略

下面代码为查询备份策略的过程,用户可以根据需求进行相应的参数配置。

public static void queryPolicy() {

List<? extends VolumeBackupPolicy> policies = osclient.blockStorage().policies().list();

boolean isSuccess = false;

for (VolumeBackupPolicy policy:

policies) {

if (policy.getName().equals(policyName)) { isSuccess = true;

policyId = policy.getId();

break;

} }

Assert.assertEquals(isSuccess, true);

}

(27)

2.2.13 CTS Java SDK 示例

Tracker

云审计服务开通后系统会创建一个追踪器,用来关联系统记录的所有操作。

创建 Tracker

下面代码为创建Tracker的过程,用户可以根据需求进行相应的参数配置,目前只能创 建一个Tracker:“system”。

public void CreateTracker() {

Tracker create = osclient.cloudTraceV1().trackers().create(bucket_name,FilePrefixName);

}

删除 Tracker

下面代码为删除Tracker的过程。

public void DeleteTraker() {

ActionResponse delete = osclient.cloudTraceV1().trackers().delete(tracker_name);

Assert.assertTrue(delete.isSuccess());

List<Tracker> trackers = osclient.cloudTraceV1().trackers().list();

Assert.assertTrue(trackers.size() == 0);

}

更新 Tracker

下面代码为更新Tracker的过程,可以更新的信息包括桶名,文件夹名称以及status,

tracker_name可选,但只能为system。

public void UpdateTraker() {

TrackerUpdate update = TrackerUpdate.builder().trackerName(tracker_name)

.bucketName(bucket_name).filePrefixName("SDK-unittest").status(TrackerStatus.Enabled”).build();

Tracker updated = osclient.cloudTraceV1().trackers().update(update);

}

查询 Tracker

下面代码为查询Tracker的过程,参数为tracker_name。

public void GetTraker() {

Tracker get = osclient.cloudTraceV1().trackers().get(tracker_name);

}

Trace

通过事件查询接口,可以查处系统记录的7天内资源操作记录。

查询 Trace 列表

下面代码为查询trace列表,可以设置多个查询参数进行筛选。

/*v2interface*/

publicvoidListTrace(){

TraceListOptionsoptions=TraceListOptions.create().limit(5).user("renxiaomei").serviceType("CTS");

List<Trace>list=osclient.cloudTraceV2().traces().list("system", options);

if(list.size()>0){

Tracetrace=list.get(list.size()-1);

options.marker(trace.getId());

(28)

List<Trace>list2=osclient.cloudTraceV2().traces().list("system", options);

} }

2.2.14 KMS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用KMS SDK的时候,SDK支持的参数细节,请参考KMS API描述。

KMS Java SDK提供的场景示例代码如下:

场景 代码样例

manage customer master key 代码

encrypt/decrypt data 代码

create data encrypt key 代码 encrypt/decrypt with data encrypt key 代码

2.2.15 Anti-DDoS Java SDK 示例

查询 Anti-DDoS 配置可选范围

查询系统支持的Anti-DDoS防护策略配置的可选范围,用户根据范围列表选择适合自 已业务的防护策略进行Anti-DDoS流量清洗。

代码示例如下:

public void listConfigs() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService=antiDDoSServices.antiddos();

AntiDDoSConfig configs = antiDDoSService.listConfigs();

LOGGER.info("{}", configs);

}

开通 Anti-DDoS 服务

用户开通Anti-DDoS流量清洗防护。作为异步接口,调用成功,只是说明服务节点收 到了开通请求,开通是否成功需要通过任务查询接口查询该任务的执行状态。

代码示例如下:

public void createAntiDDoS() throws InterruptedException {

AntiDDoS entity = AntiDDoS.builder() .enableL7(true)

.trafficPos(TrafficPos.POS_1)

.httpRequestPos(HttpRequestPos.POS_1) .cleaningAccessPos(CleaningAccessPos.POS_1) .appType(AppType.Type_0)

.build();

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

Task task = antiDDoSService.create(entity, floatingIpId);

(29)

LOGGER.info("{}", task);

taskId = task.getTaskId();

waitTaskFinish(taskId); } }}

关闭 Anti-DDoS 服务

用户关闭Anti-DDoS流量清洗防护。作为异步接口,调用成功,只是说明服务节点收 到了关闭防护请求,操作是否成功需要通过任务查询接口查询该任务的执行状态。

代码示例如下:

public void deleteAntiDDoS() throws InterruptedException {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService=antiDDoSServices.antiddos();

Task task = antiDDoSService.delete(floatingIpId);

LOGGER.info("{}", task);

waitTaskFinish(task.getTaskId());

}

查询 Anti-DDoS 服务

查询配置的Anti-DDoS防护策略,用户可以查询指定EIP的Anti-DDoS防护策略。

代码示例如下:

public void getAntiDDoS() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

AntiDDoS antiDDoS = antiDDoSService.get(floatingIpId);

LOGGER.info("{}", antiDDoS);

}

更新 Anti-DDoS 服务

更新指定EIP的Anti-DDoS防护策略配置。调用成功,只是说明服务节点收到了更新配 置请求,操作是否成功需要通过任务查询接口查询该任务的执行状态。

代码示例如下:

public void updateAntiDDoS() throws InterruptedException {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

AntiDDoS entity = antiDDoSService.get(floatingIpId);

entity = entity.toBuilder().appType(AppType.Type_1).build();

Task task = osclient.antiDDoS().antiddos().update(entity, floatingIpId);

LOGGER.info("{}", task);

waitTaskFinish(task.getTaskId());

}

查询 Anti-DDoS 任务

用户查询指定的Anti-DDoS防护配置任务,得到任务当前执行的状态。

代码示例如下:

public void getTask() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

(30)

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

Task task = antiDDoSService.getTask(taskId);

LOGGER.info("{}", task);

}

查询 EIP 防护状态列表

查询用户所有EIP的Anti-DDoS防护状态信息,用户的EIP无论是否绑定到云服务器,都 可以进行查询。

代码示例如下:

public void listStatuses()

{ AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

AntiDDoSStatus statuses = antiDDoSService.listStatus();

LOGGER.info("{}", statuses);

}

查询指定 EIP 防护状态

查询指定EIP的Anti-DDoS防护状态。

代码示例如下:

public void getStatus() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

AntiDDoSStatusDetail status = antiDDoSService.getStatus(floatingIpId);

LOGGER.info("{}", status);

}

查询指定 EIP 防护流量

查询指定EIP在过去24小时之内的防护流量信息,流量的间隔时间单位为5分钟。

代码示例如下:

public void dailyReport() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

List<? extends AntiDDoSDailyData> dailyReport = antiDDoSService.dailyReport(floatingIpId);

LOGGER.info("{}", dailyReport);

}

查询指定 EIP 异常事件

查询指定EIP在过去24小时之内的异常事件信息,异常事件包括清洗事件和黑洞事件,

查询延迟在5分钟之内。

代码示例如下:

public void listLog() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

List<? extends AntiDDoSLog> logs = antiDDoSService.listLogs(floatingIpId);

LOGGER.info("{}", logs);

AntiDDoSLogListOptions options = AntiDDoSLogListOptions.create().limit(1).offset(1);

List<? extends AntiDDoSLog> logs2 = osclient.antiDDoS().antiddos().listLogs(floatingIpId, options);

(31)

LOGGER.info("{}", logs2);

}

查询周防护统计情况

查询用户所有Anti-DDoS防护周统计情况,包括一周内DDoS拦截次数和攻击次数、以 及按照被攻击次数进行的排名信息等统计数据。

代码示例如下:

public void weeklyReport() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSService antiDDoSService =antiDDoSServices.antiddos();

AntiDDoSWeeklyData weekly = antiDDoSService.weeklyReport();

LOGGER.info("{}", weekly);

Calendar cal = Calendar.getInstance();

cal.add(Calendar.HOUR, -10);

AntiDDoSWeeklyData weekly2 = osclient.antiDDoS().antiddos().weeklyReport(cal.getTime());

LOGGER.info("{}", weekly2);

}

查询告警配置信息

查询用户配置信息,用户可以通过此接口查询是否接收某类告警,同时可以配置是手 机短信还是电子邮件接收告警信息。

代码示例如下:

public void queryWarningInfo() {

AntiDDoSServices antiDDoSServices = osclient.antiDDoS();

AntiDDoSWarn query = antiDDoSServices.warnalert().query();

LOGGER.info("{}", query);

}

2.2.16 DMS Java SDK 示例

分布式消息服务(Distributed Message Service)是一项基于高可用分布式集群技术的 消息中间件服务,具有大规模、高可靠、高并发访问、可扩展且完全托管的特点。

DMS帮助云端的应用程序组件去耦合,具有很高的成本效益。

创建队列

下面代码为消息队列的创建,创建成功后,可往此队列上生产消息,使用示例:

String name = randomName();

String description = "sdk-unittest"

Queue queue = null;

queue = osclient.messageQueue().queue().create(name, description);

创建消费组

下面代码为消费组的创建,创建成功后该消费组可消费队列上的消息,使用示例:

List<ConsumerGroup> groups = null;

List<String> groupNames = Lists.newArrayList("consumer-group-1", "consumer-group-2");

queueId queueID = queue.getId();

groups = osclient.messageQueue().consumerGroups().create(queueID, groupNames);

(32)

生产消息

下面代码为生产消息的过程,使用示例:

public void testProduceMessage() {

HashMap<String, Object> attributes1 = Maps.newHashMap();

attributes1.put("attr1", 1);

attributes1.put("attr2", false);

QueueMessage message = QueueMessage.builder().body("sdk-unittests").attributes(attributes1).build();

ActionResponse produce = osclient.messageQueue().messages().produce(queue.getId(), message);

}

消费消息

下面代码为消费消息的过程,使用示例:

public void testConsumeMessages() {

ConsumerGroup consumerGroup1 = groups.get(0);

List<QueueMessageWithHandler> all = Lists.newArrayList();

for (int i = 0; i < 3; i++) {

List<QueueMessageWithHandler> temp = osclient.messageQueue().messages().consume(queue.getId(), consumerGroup1.getId(), 5, 10);

all.addAll(temp);

}}

2.2.17 MRS Java SDK 示例

MapReduce服务(MapReduce Service):提供租户完全可控的企业级大数据集群云 服务,轻松运行Hadoop、Spark、HBase、Kafka、Storm等大数据组件。

创建集群并提交作业

下面代码为MRS集群创建并提交作业的过程,用户可以根据需求进行相应的参数配 置,创建完成后,新创建的集群会在MRS服务的集群列表页面上显示。

public void createClusterAndRunAJob() {MapReduceComponent component =

MapReduceComponent.builder().id(component_id).name(component_name).version(component_version).de sc(component_desc).build();

MapReduceClusterCreate cluster =

MapReduceClusterCreate.builder().dataCenter(data_center).masterNodeNum(master_node_num).masterNo deSize(master_node_size).coreNodeNum(core_node_num).coreNodeSize(core_node_size).name(cluster_nam e).availablilityZoneId(available_zone_id).vpcName(vpc).vpcId(vpc_id).subnetName(subnet_name).subnetId(s ubnet_id).version(cluster_version).type(cluster_type).volumeSize(volume_size).volumeType(volume_type).key pair(node_public_cert_name).safeMode(safe_mode).components(Lists.newArrayList(component)).build();

MapReduceJobExeCreate jobExe =

MapReduceJobExeCreate.builder().jobType(job_type).jobName(job_name).jarPath(jar_path).arguments(argu ments).input(input).output(output).jobLog(job_log).fileAction(file_action).hql(hql).hiveScriptPath(hive_script _path).shutdownCluster(shutdown_cluster).submitJobOnceClusterRun(submit_job_once_cluster_run).build();

MapReduceClusterCreateResult result = osclient.mrs().clusters().createAndRunJob(cluster, jobExe);

}

查询集群详情

下面代码为查询集群详情的过程,用户需要传入集群id。

public void describeCluster () {

MapReduceClusterInfo cluster = osclient.mrs().clusters().get(id);

}

(33)

终止集群

下面代码为查询集群详情的过程,用户需要传入集群id。

public void deleteCluster () {

ActionResponse delete = osclient.mrs().clusters().delete(id);

}

新增作业并执行

下面代码为新增作业并执行的过程,用户可以根据需求进行相应的参数配置,创建完 成后,新创建的作业会在MRS服务的作业列表页面上显示。

public void submitAndExecuteJob () { MapReduceJobExeCreate jobExeCreate =

MapReduceJobExeCreate.builder().jobType(job_type).jobName(job_name).clusterId(cluster_id).jarPath(jar_pa th).arguments(arguments).input(input).output(output).jobLog(job_log).fileAction(file_action).hql(hql).hiveSc riptPath(hive_script_path).isProtected(is_protected).isPublic(is_public).build();

MapReduceJobExe exe = osclient.mrs().jobExes().create(jobExeCreate);

}

查询作业 exe 对象列表

下面代码为查询作业exe对象列表的过程,用户可以根据需求进行相应的参数配置。

public void getJobExeList () { JobExeListOptions options =

JobExeListOptions.create().page(current_page).pageSize(page_size).clusterId(cluster_id) .state(state);

List<? extends MapReduceJobExe> list = osclient.mrs().jobExes().list(options);

}

查询作业 exe 对象详情

下面代码为查询作业exe对象详情的过程,用户需要传入作业exe对象id。

public void getJobExes() { osclient.mrs().jobExes().get(id);

}

删除作业执行对象

下面代码为删除作业执行对象详情的过程,用户需要传入作业执行对象id。

public void deleteJobExecution () {

ActionResponse delete = osclient.mrs().jobExecutions().delete(id);

}

2.2.18 CDN Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用CDN SDK的时候,SDK支持的参数细节,请参考CDN API描述。

CDN Java SDK支持如下资源对象的操作:

资源对象 代码样例

Domain 代码

(34)

资源对象 代码样例

Statistic 代码

Log 代码

2.2.19 FGS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考FGS。

在使用FGS SDK的时候,SDK支持的参数细节,请参考FGS API描述。

函数工作流FGS V1 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码 示例如下:

资源对象 “增改查删”代码样例

function 代码

version 代码

trigger 代码

函数工作流FGS V2 Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码 示例如下:

资源对象↵ “增改查删”代码样例↵

function 代码↵

version 代码↵

trigger 代码↵

2.2.20 BSS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用BSS SDK的时候,SDK支持的参数细节,请参考BSS 合作伙伴运营能力API描述 和客户运营能力API描述。

能力开放BSS v1 Java SDK支持如下资源对象的操作,资源对象的代码示例如下:

资源对象 “增改查删”代码样例

customer management 代码

realname auth 代码

(35)

资源对象 “增改查删”代码样例

enquiry 代码

period order 代码

period resource 代码

pay-per-use resource 代码

bill 代码

utilities 代码

2.2.21 TMS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用TMS SDK的时候,SDK支持的参数细节,请参考TMS 描述。

能力开放TMS v1 Java SDK支持如下资源对象的操作,资源对象的代码示例如下:

资源对象 “增改查删”代码样例

Tag management 代码

2.2.22 EPS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用EPS SDK的时候,SDK支持的参数细节,请参考EPS 描述。

能力开放EPS v1 Java SDK支持如下资源对象的操作,资源对象的代码示例如下:

资源对象 “增改查删”代码样例

EnterpriseProject management 代码

2.2.23 RDS Java SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考这里。

在使用RDS SDK的时候,SDK支持的参数细节,请参考RDS API描述。

云数据库RDS Java SDK支持如下资源对象的操作,资源对象的“增改查删”代码示例 如下:

(36)

资源对象 “增改查删”代码样例 Rds Instance management 代码

SDK提供的场景示例代码如下:

场景 代码样例

Rds Backup and Restore 代码

Rds Param Configurtion 代码

2.3 Python

2.3.1 Python SDK 入门

欢迎使用华为云开发者工具套件(Python SDK)。Python SDK让您轻松编程即可访问 云服务。

本教程介绍如何安装和使用Python SDK,并提供示例,方便您快速入门。

我们支持的Python SDK基于Python OpenStack SDK开发。

支持的云服务列表

Python SDK支持的云服务产品如下:

● 统一身份认证 IAM

● 镜像服务 IMS

● 虚拟私有云 VPC

● 弹性云服务器 ECS

● 云硬盘 EVS

● 弹性伸缩 AS

● 云监控服务 CES

● 云解析服务 DNS

● 弹性负载均衡 ELB

● 云硬盘备份 VBS

● 数据加密服务 KMS

● 流量清洗Anti-DDoS

● 分布式消息服务 DMS

MapReduce服务 MRS

● 关系型数据库 RDS

● 内容分发网络 CDN

(37)

● 运营能力 BSS

● 标签管理服务 TMS

● 企业管理 EPS

前提条件

1. 已经申请到云平台账号,并开通所需的云服务。

2. 已经安装好Python、pip和git,Python SDK适用于 Python 2.7.10-2.7.15 和 3.4-3.7 系列版本。

SDK 获取和安装

使用pip安装,请执行以下命令:

pip install huaweicloud-sdk-python

开始使用

设置参数,创建连接(Connection),然后调用SDK来访问服务的API。参数详情请参考 表2-10。

# -*- coding:utf-8 -*-

from openstack import connection

# create connection

username = "replace-with-your-username" #用户名称 password = "replace-with-your-password" #用户密码 projectId = "replace-with-your-projectId" #项目ID userDomainId = "replace-with-your-domainId" #账户ID auth_url = "https://iam.example.com/v3" # endpoint url conn = connection.Connection(auth_url=auth_url, user_domain_id=userDomainId, project_id=projectId,

username=username, password=password)

# set parameters limit = 5

# define function for listing servers def list_servers():

# get server list with params

servers = conn.compute.servers(limit=limit) # iterate servers list

for server in servers:

print(server)

# visit API list_servers()

(38)

2-10 参数说明

名称 说明 取值样例

auth_url 认证服务(IAM)的 Endpoint。

“https://iam.example.com/

v3”中的“example”为“区 域.云平台域名”,参数详情可 以访问这里了解。

https://iam.cn-

north-1.myhuaweicloud.com/v3

username IAM用户名。如何获取,请参 考如何获取IAM 用户名、账号 ID以及项目ID?。

-

password IAM用户密码。 -

projectId 项目ID。如何获取,请参考如 何获取IAM 用户名、账号ID以 及项目ID?。

-

userDomai

nId 账号ID。如何获取,请参考如

何获取IAM 用户名、账号ID以 及项目ID?。

-

2.3.2 Python SDK 使用

2.3.2.1 安装 Python SDK

Python SDK提供GitHub和pip两种安装方式。

方式一:下载GitHub源码安装方式,如下:

将代码下载到您项目合适的位置,以pythonsdk作为您选择的位置举例,执行下面的命

令完成源码下载和安装:

git clone https://github.com/huaweicloud/huaweicloud-sdk-python pythonsdk cd pythonsdk

pip install -r requirements.txt python setup.py install

方式二:使用pip安装,请执行以下命令:

pip install huaweicloud-sdk-python

2.3.2.2 Python SDK 认证方式

Python SDK支持两种认证方式:token认证和AK/SK认证。

(39)

token 认证

token认证方式示例代码,参数详情请参考表2-11。

# -*- coding:utf-8 -*-

from openstack import connection

# create connection

username = "replace-with-your-username" #用户名称 password = "replace-with-your-password" #用户密码 projectId = "replace-with-your-projectId" #项目ID userDomainId = "replace-with-your-domainId" #账户ID auth_url = "https://iam.example.com/v3" # endpoint url conn = connection.Connection(auth_url=auth_url, user_domain_id=userDomainId, project_id=projectId,

username=username, password=password)

# set parameters limit = 5

# define function for listing servers def list_servers():

# get server list with params

servers = conn.compute.servers(limit=limit) # iterate servers list

for server in servers:

print(server)

# visit API list_servers()

2-11 参数说明

名称 说明 取值样例

auth_url 认证服务(IAM)的 Endpoint。

“https://iam.example.com/

v3”中的“example”为“区 域.云平台域名”,参数详情可 以访问这里了解。

https://iam.cn-

north-1.myhuaweicloud.com/v3

username IAM用户名。如何获取,请参 考如何获取IAM 用户名、账号 ID以及项目ID?。

-

password IAM用户密码。 -

projectId 项目ID。如何获取,请参考如 何获取IAM 用户名、账号ID以 及项目ID?。

-

userDomai

nId 账号ID。如何获取,请参考如

何获取IAM 用户名、账号ID以 及项目ID?。

-

(40)

AK/SK 认证

AK/SK认证方式示例代码,参数详情请参考表2-12。

#encoding=utf-8

from openstack import connection projectId = "***"

cloud = "myhuaweicloud.com"

region= "***" # example: region = "cn-north-1"

AK = "***"

SK = "***"

conn = connection.Connection(

project_id=projectId, cloud=cloud, region=region, ak = AK, sk = SK) def test_compute():

servers = conn.compute.servers(limit = 3) for server in servers:

print server

if __name__ == "__main__":

test_compute()

2-12 参数说明

名称 说明 取值样例

ak/sk AK/SK访问密钥。

说明

● AK/SK生成说明:登录控制 台,进入“我的凭证”,点击

“管理访问密钥”创建 AK/SK。

● AK/SK签名时间与UTC时间误 差不可以超过15分钟,否则会 鉴权失败。

● AK/SK签名连续失败超过5次,

将锁定对应访问的源IP的 AK/SK请求,持续5分钟。

-

project_id 项目ID。如何获取项目ID请参 考如何获取IAM 用户名、账号 ID以及项目ID?。

-

region 区域名称。 cn-north-1

cloud 云平台域名。 myhuaweicloud.com

2.3.2.3 Python SDK 客户端配置

SDK支持的自定义功能,用户可以通过配置进行开启或者关闭。

示例代码:

(41)

conn = connection.Connection(auth_url=auth_url, user_domain_id=userDomainId, project_id=projectId,

username=username, password=password, verify=False)

当前支持的自定义参数如下:

参数名称 默认值 功能描述 备注

verify True SSL检查 建议打开

2.3.2.4 Python SDK 服务地址设置

使用SDK调用云服务API时,需要获取每个云服务的地址(Endpoint)。

Python SDK支持两种方式:SDK自动获取、手工编码设置。

编码设置云服务Endpoint的示例如下:

os.environ.setdefault(

'OS_CLOUD_EYE_ENDPOINT_OVERRIDE', 'https://ces.example.com/V1.0/%(project_id)s' )os.environ.setdefault(

'OS_AUTO_SCALING_ENDPOINT_OVERRIDE', ('https://as.example.com'

'/autoscaling-api/v1/%(project_id)s') )os.environ.setdefault(

'OS_DNS_ENDPOINT_OVERRIDE', 'https://dns.example.com/v2' )os.environ.setdefault(

'OS_VOLUME_BACKUP_ENDPOINT_OVERRIDE', 'https://vbs.example.com/v2/%(project_id)s' )os.environ.setdefault(

'OS_ELBV1_ENDPOINT_OVERRIDE',

'https://elb.example.com/v1.0/%(project_id)s' )os.environ.setdefault(

'OS_MAP_REDUCE_ENDPOINT_OVERRIDE', 'https://mrs.example.com/v1.1/%(project_id)s' )os.environ.setdefault(

'OS_CTS_ENDPOINT_OVERRIDE',

'https://cts.example.com/v1.0/%(project_id)s' )os.environ.setdefault(

'OS_SMN_ENDPOINT_OVERRIDE',

'https://smn.example.com/v2/%(project_id)s' )os.environ.setdefault(

'OS_MAAS_ENDPOINT_OVERRIDE',

'https://maas.example.com/v1/%(project_id)s' )os.environ.setdefault(

'OS_KMS_ENDPOINT_OVERRIDE',

'https://kms.example.com/v1.0/%(project_id)s' )os.environ.setdefault(

'OS_ANTI_DDOS_ENDPOINT_OVERRIDE',

(42)

'https://antiddos.example.com/v1/%(project_id)s' )os.environ.setdefault(

'OS_DMS_ENDPOINT_OVERRIDE',

'https://dms.example.com/v1.0/%(project_id)s' )os.environ.setdefault(

'OS_RDSV1_ENDPOINT_OVERRIDE', 'https://rds.example.com/v3/%(project_id)s' )os.environ.setdefault(

'OS_CDN_ENDPOINT_OVERRIDE', 'https://cdn.example.com/v1.0' )

● 上述代码中example的格式为:“区域.云平台域名”,参数详情可以访问这里了

解。

● 上述代码中project_id不需要替换为实际值。

● 单击此处获取使用Python SDK的一个完整代码示例,供参考。

2.3.2.5 Python SDK 故障排查

Python SDK打开debug的方法:

from openstack import utils

utils.enable_logging(debug=True,stream=sys.stdout)

2.3.2.6 Python SDK 函数通用参数

Python SDK支持一些通用参数,使用方法如下:

ignore_missing

该参数一般出现在服务的delete接口中,默认参数为True,例如:

delete_flavor(self, flavor, ignore_missing=True) delete_image(self, image, ignore_missing=True)

当设置为True时,如果删除的资源不存在时,不打印异常信息,不抛出异常;

当设置为False时,如果所删除的资源不存在,会抛出

openstack.exceptions.ResourceNotFound异常。如果没有处理该异常,会导致程序异 常终止执行。

details

该参数一般出现在服务的获取资源详细列表接口中,例如:

flavors(self, details=True, **query) images(self, details=True, **query) 只有支持/detail接口的资源才支持传入。

当设置为True,请求资源的URI为{RES}/details,返回资源的详细信息;

当设置为False,请求的资源的URI为{RES},返回资源的最基本的信息。

(43)

limit

该参数一般出现在服务的获取资源详细列表接口中,例如:

flavors(self, details=True, limit = 5) images(self, details=True, limit = 10)

当传入limit参数时,查询结果会分页返回,每次返回的个数为limit的数值;

当不传入limit参数时,查询结果会一次返回。

2.3.3 IAM Python SDK 示例

SDK与RESTful API一一对应,SDK最新版本支持的接口列表,以及SDK和API的对应关 系,请参考IAM。

在使用IAM SDK的时候,SDK支持的参数细节,请参考IAM API描述。

统一身份认证服务IAM Python SDK支持如下资源对象的操作,资源对象的“增改查 删”代码示例如下:

资源对象 “增改查删”代码样例

authtoken 代码

securitytoken 代码

credential 代码

region 代码

project 代码 (identity)

代码 (iam)

domain 代码

user 代码 (identity)

代码 (iam)

group 代码

role 代码

customrole 代码

agency 代码

version 代码

service 代码

endpoint 代码

數據

表 2-3 参数说明 名称 说明 取值样例 ak/sk AK/SK访问密钥。 说明 ● AK/SK生成说明:登录控制 台,进入“我的凭证”,点击 “管理访问密钥”创建 AK/SK。 ● AK/SK签名时间与UTC时间误 差不可以超过15分钟,否则会 鉴权失败。 ● AK/SK签名连续失败超过5次, 将锁定对应访问的源IP的 AK/SK请求,持续5分钟。  -projectId 项目ID。如何获取项目ID请参 考如何获取IAM 用户名、账号 ID以及项目ID?。  -region 区域名称。 cn-north
表 2-7 请求参数说明
表 2-10 参数说明
表 2-15 请求参数说明

參考文獻

相關文件

reference electrode:參考電極 indicator

These programmes are operated by 11 degree-awarding self-financing institutions registered under the Post Secondary Colleges Ordinance (Cap. 320) or statutory

For any self-financing post-secondary education institutions registered under the Ordinance aspiring to become private universities, we shall maintain the current

南越王墓主人身穿絲縷玉衣,出土文物中有「文帝行璽金印」一方以及一枚青白玉篆刻 的「趙 眜 」玉印,可證墓主人是南越文王趙 眜 。趙 眜 ,《史記》稱為趙胡,是南越國的第

In order to achieve the learning objectives of the OLE – providing students with a broad and balanced curriculum with diverse learning experiences to foster whole-person development

 媽媽贊同這個安排嗎?(媽媽基本上是贊同的,她微 微的點了點頭,見第 15 頁;但她也有憂慮,當她聽 到夏剛在抱怨時,眼裏露出愛憐的目光,見第

指西周時居住在 東南亞的越裳氏 派使者晉見周成王 歸國時成王為了

當然,在此所指的南傾,並非意味著唐代北方,尤其泛指江北一