快速入门
快速入门
确认Endpoint
在使用 SDK 之前,需确认您将接入的 BES 服务域名(Endpoint)。BES 按地域隔离,各地域采用不同的域名:
| 地域 | Endpoint | 支持协议 |
|---|---|---|
| 北京 | bes.bj.baidubce.com |
HTTP 和 HTTPS |
| 保定 | bes.bd.baidubce.com |
HTTP 和 HTTPS |
| 广州 | bes.gz.baidubce.com |
HTTP 和 HTTPS |
| 苏州 | bes.su.baidubce.com |
HTTP 和 HTTPS |
为了提升数据的安全性,建议通过 HTTPS 调用。
获取密钥
要使用百度智能云 BES,您需要拥有一个有效的 AK(Access Key ID)和 SK(Secret Access Key)用来进行签名认证。AK/SK 是由系统分配给用户的,均为字符串,用于标识用户,为访问 BES 做签名验证。
其中 AK 对应控制台中的"Access Key ID",SK 对应控制台中的"Access Key Secret",获取方式请参考《操作指南 获取ACCESSKEY》。
创建Client对象
BES 提供两代客户端,接口路径与请求模型互不兼容,新接入请直接使用 BesClientV3:
BesClientV3:BES v3 服务的客户端,接口走/v3/...,覆盖 13 类 119 个接口。BesClientV2:BES v2 服务的客户端,接口走/api/bes/cluster/...,覆盖 9 类 73 个接口,为存量调用方保留。
两者的创建方式一致,都需要传入两部分信息:
BceClientConfiguration:承载 AK/SK 与服务域名,决定请求发往哪个地址。region:地域标识(如bj),SDK 会把它作为地域请求头发给服务端(v3 用X-Region,v2 用x-Region,两者都由 SDK 自动添加,不需要自己设置)。
详细的构造方式与可配置项见 BesClientV3、BesClientV2。
调用功能接口
创建 client 后即可调用对应的功能接口。每个接口的入参都是一个 request 对象,通过 setter 设置字段后传入,返回对应的 response 对象。未设置(保持 null)的字段不会出现在请求中,因此可选参数不需要显式赋值。
v2 有 3 个接口(listTags、listAvailableCoupons、listInspectItems)没有任何请求参数,直接无参调用即可,不需要构造 request 对象。
示例(v3)
下面以 BesClientV3 查询集群列表为例,给出一个完整的使用示例:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.Protocol;
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bes.v3.BesClientV3;
5import com.baidubce.services.bes.v3.model.cluster.ClusterSummary;
6import com.baidubce.services.bes.v3.model.cluster.ListClustersRequest;
7import com.baidubce.services.bes.v3.model.cluster.ListClustersResponse;
8
9public class Sample {
10 public static void main(String[] args) {
11 String ak = "<your-access-key-id>"; // 用户的Access Key ID
12 String sk = "<your-secret-access-key>"; // 用户的Secret Access Key
13 String endpoint = "https://bes.bj.baidubce.com"; // 服务域名,需与下面的地域一致
14 String region = "bj"; // 地域
15
16 // 初始化一个BesClientV3
17 BceClientConfiguration config = new BceClientConfiguration();
18 config.setCredentials(new DefaultBceCredentials(ak, sk));
19 config.setEndpoint(endpoint);
20 BesClientV3 client = new BesClientV3(config, region);
21
22 ListClustersRequest request = new ListClustersRequest();
23 // 页码,从1开始,可选
24 request.setPageNo(1);
25 // 每页条数,可选
26 request.setPageSize(10);
27
28 ListClustersResponse response = client.listClusters(request);
29 System.out.println("totalCount: " + response.getTotalCount());
30 for (ClusterSummary cluster : response.getClusters()) {
31 System.out.println(cluster.getClusterId() + " " + cluster.getName() + " " + cluster.getStatus());
32 }
33 }
34}
注意: 不指定
endpoint时默认为北京地域的http://bes.bj.baidubce.com(HTTP 明文),不指定region时默认为bj。两者必须指向同一地域,否则请求会被发往错误的地域。百度智能云目前开放了多区域支持,请参考区域选择说明。
示例(v2)
同一件事用 BesClientV2 查询集群列表,写法如下:
1import com.baidubce.BceClientConfiguration;
2import com.baidubce.auth.DefaultBceCredentials;
3import com.baidubce.services.bes.v2.BesClientV2;
4import com.baidubce.services.bes.v2.model.cluster.ClusterListRequest;
5import com.baidubce.services.bes.v2.model.cluster.ListClustersResponse;
6
7public class SampleV2 {
8 public static void main(String[] args) {
9 String ak = "<your-access-key-id>"; // 用户的Access Key ID
10 String sk = "<your-secret-access-key>"; // 用户的Secret Access Key
11 String endpoint = "https://bes.bj.baidubce.com"; // 服务域名,需与下面的地域一致
12 String region = "bj"; // 地域
13
14 // 初始化一个BesClientV2
15 BceClientConfiguration config = new BceClientConfiguration();
16 config.setCredentials(new DefaultBceCredentials(ak, sk));
17 config.setEndpoint(endpoint);
18 BesClientV2 client = new BesClientV2(config, region);
19
20 ClusterListRequest request = new ClusterListRequest();
21 // 页码,必填,从1开始
22 request.setPageNo(1);
23 // 每页条数,必填
24 request.setPageSize(10);
25
26 ListClustersResponse response = client.listClusters(request);
27 // v2 的响应带 success/status 外层,业务数据在 page 里
28 System.out.println(response.getSuccess() + " " + response.getStatus());
29 ListClustersResponse.Page page = response.getPage();
30 System.out.println("totalCount: " + page.getTotalCount());
31 for (ListClustersResponse.ClusterListItem cluster : page.getResult()) {
32 System.out.println(cluster.getClusterId() + " " + cluster.getClusterName()
33 + " " + cluster.getActualStatus());
34 }
35 }
36}
对比这两个示例可以看到 v2 与 v3 的三处主要差异,写 v2 代码时要留意:
- request 类名不同构:v3 是
ListClustersRequest,v2 是ClusterListRequest(v2 的命名普遍是「资源 + 动作」,如ClusterDeleteRequest、InspectTaskListRequest)。 - 分页参数在 v2 是必填:
pageNo、pageSize不传会抛出IllegalArgumentException;v3 里两者可选,服务端有默认值。 - v2 响应有外层信封:业务数据包在
success/status/page或result里,且嵌套类型都是响应类的静态内部类(如ListClustersResponse.Page);v3 的响应字段是平铺的。
评价此篇文章
