1. 通过 JavaSDK 操作云服务器资源
本文档说明如何通过 JavaSDK 操作您的云服务器资源。
本文档中涉及到的 AccessKey 和 SecretAccessKey 只用作演示用,不作为您真实操作自己资源的依据。
本文档中涉及到的链接信息实际应为https://ai.blsc.cn (opens in a new tab)
本页所有接口都用到可用区信息,可用区具体说明详见 可用区, 本页不再重复说明
本页所有接口都用到资源规格信息,资源规格具体说明详见 资源规格, 本页不再重复说明
本页所有接口返回信息都包含异步任务信息,异步任务具体说明详见 异步任务, 本页不再重复说明
1.1. 云服务器密码加密
String hexPassword = PasswordUtils.toHex("DaQ2mUt1i4d.dcce")
System.out.println(hexPassword)
1.2. 云服务器密码解密
String rawPassword = PasswordUtils.fromHex("3165666e50492e67464e616c49614155");
System.out.println(rawPassword);
1.3. 创建云服务器询价
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
// 待创建云服务器所属可用区
runInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待创建相同规格的云服务器个数
runInstancesRequest.setCount(1);
// 待创建云服务器类型。详见InstanceType.vhostModel
runInstancesRequest.setEcsModel("ecs.cpu.calc.4c8g");
// 待创建云服务器使用的镜像id
runInstancesRequest.setImageUuid("636bc998-9382-47e9-9573-6dbac34abda7");
// 待创建云服务器系统盘类型
runInstancesRequest.setRootDiskType("HDD");
// 待创建云服务器系统盘大小
runInstancesRequest.setRootDiskSize(20);
// 待创建云服务器计费类型
runInstancesRequest.setBillingType(BillingTypeEnum.PostPaid);
// 待创建云服务器带云盘信息
EBSInput ebsInput = new EBSInput();
ebsInput.setDiskType("HDD");
ebsInput.setDiskSize(20);
runInstancesRequest.setEbs(Collections.singletonList(ebsInput));
// 待创建云服务器带公网IP信息
EIPInput eipInput = new EIPInput();
eipInput.setNetworkSize(10);
eipInput.setNetworkType("Flow");
runInstancesRequest.setEip(eipInput);
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<InquiryPriceResponse> inquiryPriceResponse = client.InquirePriceRunInstances(runInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = inquiryPriceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = inquiryPriceResponse.getMessage();
// data属性为实际返回的云服务器信息列表。数据类型为InquiryPriceResponse
InquiryPriceResponse data = inquiryPriceResponse.getData();
// InquiryPriceResponse类重要属性如下所示
// billingType参数询价的计费类型
// cashBalance账户当前余额
// originPrice询价总额
// items询价明细,数据类型为list[InquirePriceItem]
// InquirePriceItem类主要属性如下所示
// resourceType资源类型
// subResourceType 资源子类型
// attr 资源属性。数据类型List[String],可能为空
// size 资源大小。
// originPrice资源子类询价结果
1.4. 创建云服务器
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
// 待创建云服务器所属可用区
runInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待创建相同规格的云服务器个数
runInstancesRequest.setCount(1);
// 待创建云服务器类型。详见InstanceType.vhostModel
runInstancesRequest.setEcsModel("ecs.cpu.calc.4c8g");
// 待创建云服务器别名
runInstancesRequest.setAliasName("ecs-abcdefg");
// 待创建云服务器使用的镜像id
runInstancesRequest.setImageUuid("636bc998-9382-47e9-9573-6dbac34abda7");
// 待创建云服务器系统盘类型
runInstancesRequest.setRootDiskType("HDD");
// 待创建云服务器系统盘大小
runInstancesRequest.setRootDiskSize(20);
// 待创建云服务器计费类型
runInstancesRequest.setBillingType(BillingTypeEnum.PostPaid);
// 待创建云服务器带云盘信息
EBSInput ebsInput = new EBSInput();
ebsInput.setDiskType("HDD");
ebsInput.setDiskSize(20);
runInstancesRequest.setEbs(Collections.singletonList(ebsInput));
// 待创建云服务器带公网IP信息
EIPInput eipInput = new EIPInput();
eipInput.setNetworkSize(10);
eipInput.setNetworkType("Flow");
runInstancesRequest.setEip(eipInput);
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<List<Job>> runInstanceResponse = client.RunInstances(runInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = runInstanceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = runInstanceResponse.getMessage();
// data属性为实际返回的云服务器信息列表。数据类型为RunInstancesResponse
List<Job> jobs = runInstanceResponse.getData();
// 您可以通过jobs.get(0).getJobUuid()的方式获得异步任务id
// 通过jobUuid可以查询异步任务接口获取当前操作的状态
1.5. 启动云服务器
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
StartInstancesRequest startInstancesRequest = new StartInstancesRequest();
// 待启动云服务器所属可用区
startInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待启动云服务器id
startInstancesRequest.setEcsUuids(Collections.singletonList("eb4fc7cd-20ca-45be-ae7e-2eaba7bb0526"));
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<List<Job>> startResponse = client.StartInstances(startInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = startResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = startResponse.getMessage();
// data属性为实际返回的异步任务信息列表。数据类型为List[Job]
List<Job> jobs = startResponse.getData();
// 您可以通过jobs.get(0).getJobUuid()的方式获得异步任务id
// 通过jobUuid可以查询异步任务接口获取当前操作的状态
1.6. 关闭云服务器
stopType请参考StopInstances中的说明
stoppedMode请参考StopInstances中的说明
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
StopInstancesRequest stopInstancesRequest = new StopInstancesRequest();
// 待关闭云服务器所属可用区
stopInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待关闭云服务器id
stopInstancesRequest.setEcsUuids(Collections.singletonList("eb4fc7cd-20ca-45be-ae7e-2eaba7bb0526"));
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<List<Job>> stopInstanceResponse = client.StopInstances(stopInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = stopInstanceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = stopInstanceResponse.getMessage();
// data属性为实际返回的异步任务信息列表。数据类型为List[Job]
List<Job> jobs = stopInstanceResponse.getData();
// 您可以通过jobs.get(0).getJobUuid()的方式获得异步任务id
// 通过jobUuid可以查询异步任务接口获取当前操作的状态
1.7. 重启云服务器
stopType请参考RebootInstances中的说明
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
RebootInstancesRequest rebootInstancesRequest = new RebootInstancesRequest();
// 待重启云服务器所属可用区
rebootInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待重启云服务器id信息
rebootInstancesRequest.setEcsUuids(Collections.singletonList("eb4fc7cd-20ca-45be-ae7e-2eaba7bb0526"));
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<List<Job>> rebootInstancesResponse = client.RebootInstances(rebootInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = rebootInstancesResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = rebootInstancesResponse.getMessage();
// data属性为实际返回的异步任务信息列表。数据类型为List[Job]
List<Job> jobs = rebootInstancesResponse.getData();
// 您可以通过jobs.get(0).getJobUuid()的方式获得异步任务id
// 通过jobUuid可以查询异步任务接口获取当前操作的状态
1.8. 续费云服务器
续费操作会默认把系统盘和云服务器一起续费,不用单独传入系统盘信息
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
RenewInstancesRequest renewInstancesRequest = new RenewInstancesRequest();
// 待续费云服务器所属可用区
renewInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待续费云服务器id信息
renewInstancesRequest.setEcsUuids(Collections.singletonList("e7a8e846-481e-4fd7-b98e-bde189eeb7ab"));
// 待续费云服务器续费月数
renewInstancesRequest.setPeriod(1);
// 返回的response是一个AICloudResponse实例
// 该实例有两个重要属性,分别是code、message
AICloudResponse<String> renewInstanceResponse = client.RenewInstances(renewInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = renewInstanceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = renewInstanceResponse.getMessage();
1.9. 删除云服务器
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
DeleteInstancesRequest deleteInstancesRequest = new DeleteInstancesRequest();
// 待删除云服务器所属可用区
deleteInstancesRequest.setZoneCode("cn-zhongwei-a");
// 待删除云服务器id信息
deleteInstancesRequest.setEcsUuids(Collections.singletonList("a7193a7b-a183-484d-bb6a-98d129c3dba7"));
// 删除云服务器是否同时删除公网IP。true表示删除,flase表示不删除卸载
deleteInstancesRequest.setDeleteEip(true);
// 删除云服务器是否同时删除数据云盘。True表示删除,False表示不删除卸载
deleteInstancesRequest.setDeleteEbs(true);
// 返回的response是一个AICloudResponse实例
// 该实例有三个重要属性,分别是code、message和data
AICloudResponse<List<Job>> deleteInstanceResponse = client.DeleteInstances(deleteInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = deleteInstanceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = deleteInstanceResponse.getMessage();
// data属性为实际返回的异步任务信息列表。数据类型为List[Job]
List<Job> jobs = deleteInstanceResponse.getData();
// 您可以通过jobs.get(0).getJobUuid()的方式获得异步任务id
// 通过jobUuid可以查询异步任务接口获取当前操作的状态
1.10. 查询云服务器列表
云服务器查询接口返回ECS信息,具体说明详见 ECS, 本页不再重复说明
// 实例化一个认证对象,入参需要传入智算云平台账户AccessKey和SecretAccessKey,此处还需注意密钥对的保密
// 秘钥可前往智算云平台->个人中心->我的秘钥进行获取
String AccessKey = "abcd";
String SecretAccessKey = "abcd1234";
ClientProfile clientProfile = new ClientProfile(AccessKey,SecretAccessKey);
// 实例化一个请求产品的client对象
ECSClient client = new ECSClient(clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
// 待查询列表使用公网IP过滤。该参数可选
describeInstancesRequest.setEip("130.234.213.23");
// 待查询列表使用内网IP过滤。该参数可选
describeInstancesRequest.setIp("172.18.2.23");
// 待查询列表使用云服务器id过滤。该参数可选
describeInstancesRequest.setEcsUuid("a5fd0143-0a6b-4825-b26a-142e2367c560");
// 待查询列表使用云服务器名称过滤。该参数可选
describeInstancesRequest.setAliasName("ecs-pnwtykfs");
// 分页页号,该参数可选。默认1
describeInstancesRequest.setPageNum(1);
// 分页页大小,该参数可选。默认200
describeInstancesRequest.setPageSize(200);
// 返回的response是一个AICloudResponse实例
AICloudResponse<PageData<ECS>> describeInstanceResponse = client.DescribeInstances(describeInstancesRequest);
// code属性表示本次请求返回的编码。该编码200表示正常,非200表示异常
int code = describeInstanceResponse.getCode();
// message属性表示本次请求返回的信息。如果code值为非200,则可通过message获得请求异常原因
String message = describeInstanceResponse.getMessage();
// data属性为实际返回的云服务器信息列表。数据类型为PageData
PageData<ECS> pageData = describeInstanceResponse.getData();
// pageNum当前页号
Integer pageNum = pageData.getPageNum();
// pageSize页大小
Integer pageSize = pageData.getPageSize();
// 总数据量
Long total = pageData.getTotal();
// rows表示返回的云服务器信息列表,数据类型为List[ECS]
List<ECS> ecsList = pageData.getRows();