Java SDK 调用示例 本节内容介绍了Java SDK 调用示例。 以下代码详细介绍了计算增强型 SDK的使用步骤,仅作步骤示范。示例展示了如何调用SDK创建一台计算增强型云电脑。 说明: 您需要替换示例中的 AK、SK和EndPoint的值以及对应参数的值。 plaintext package apis; import cn.ctyun.apis.; import cn.ctyun.sdk.Credential; import cn.ctyun.sdk.CtyunClient; import cn.ctyun.sdk.CtyunRequestException; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; / 示例:创建一台2C4G的Windows计算增强型云电脑 / class EcpcEcsDemoApiTest { / 创建计算增强型云电脑的完整流程 步骤: 1. 查询镜像ID 2. 查询VPC和子网ID 3. 查询规格模板ID 4. 查询安全组ID 5. 询价 6. 创建云电脑实例 / public static void main(String[] args) { CtyunClient ctyunClient CtyunClient.defaultClient(); // 创建认证凭证,指定AK,SK(请替换为实际的AK/SK) Credential credential new Credential(" ", " "); // 指定API网关地址(根据实际环境调整) Apis apis new Apis(" ", ctyunClient); String REGIONID " "; System.out.println(" 开始创建计算增强型云电脑 "); // 1. 查询镜像ID EcpcDescribeEcsImagesApi.DescribeEcsImagesRequest mirrorRequest new EcpcDescribeEcsImagesApi.DescribeEcsImagesRequest(); mirrorRequest.setRegionId(REGIONID); mirrorRequest.setMirrorType("PUBLIC"); // 公共镜像 mirrorRequest.setFlavorType("Common"); // 通用型 mirrorRequest.setBillMode("Cycle"); // 包周期计费 EcpcDescribeEcsImagesApi.DescribeEcsImagesResponse mirrorResponse apis.ecpcDescribeEcsImagesApi.send(credential, mirrorRequest); // 这里筛选出一个windows镜像,可以根据实际需求选择 String imageId mirrorResponse.getReturnObj().stream() .filter(x > x.getImageName().contains("Windows")) .map(EcpcDescribeEcsImagesApi.DescribeEcsImagesReturnObjResponse::getImageOid) .findFirst() .orElseThrow(() > new RuntimeException("未找到指定的镜像")); System.out.println("获取镜像ID: " + imageId); // 2. 查询网络资源 // 2.1 查询VPC EcpcDescribeVpcsV3Api.DescribeVpcsV3Request vpcRequest new EcpcDescribeVpcsV3Api.DescribeVpcsV3Request(); vpcRequest.setRegionId(REGIONID); vpcRequest.setVpcName("vpcpisr"); // 可以指定VPC名称,根据实际情况选择云电脑所属的VPC EcpcDescribeVpcsV3Api.DescribeVpcsV3Response vpcResponse apis.ecpcDescribeVpcsV3Api.send(credential, vpcRequest); String vpcId vpcResponse.getReturnObj().getList().get(0).getVpcOid(); // 根据实际情况选择 System.out.println("获取VPC ID: " + vpcId); // 2.2 查询子网 EcpcDescribeSubnetsV3Api.DescribeSubnetsV3Request subnetRequest new EcpcDescribeSubnetsV3Api.DescribeSubnetsV3Request(); subnetRequest.setRegionId(REGIONID); subnetRequest.setVpcOid(vpcId); // 查询指定VPC下的子网 EcpcDescribeSubnetsV3Api.DescribeSubnetsV3Response subnetResponse apis.ecpcDescribeSubnetsV3Api.send(credential, subnetRequest); String subnetId subnetResponse.getReturnObj().getList().get(0).getSubnetOid(); // 根据实际情况选择云电脑所属的VPC子网 System.out.println("获取子网ID: " + subnetId); // 3. 查询规格模板ID(4C8G) EcpcDescribeEcsFlavorTemplatesApi.DescribeEcsFlavorTemplatesRequest flavorRequest new EcpcDescribeEcsFlavorTemplatesApi.DescribeEcsFlavorTemplatesRequest(); flavorRequest.setRegionId(REGIONID); flavorRequest.setFlavorType("Common"); flavorRequest.setBillMode("Cycle"); EcpcDescribeEcsFlavorTemplatesApi.DescribeEcsFlavorTemplatesResponse flavorResponse apis.ecpcDescribeEcsFlavorTemplatesApi.send(credential, flavorRequest); // 根据实际需求选择规格,这里选择"通用型(2核4G)"作为示例 String templateId flavorResponse.getReturnObj().stream() .filter(x > x.getTemplateName().equals("通用型(2核4G)")) .map(EcpcDescribeEcsFlavorTemplatesApi.DescribeEcsFlavorTemplatesReturnObjResponse::getTemplateOid) .findFirst() .orElseThrow(() > new RuntimeException("未找到指定的规格模板")); System.out.println("获取规格模板ID: " + templateId); // 4. 查询安全组ID EcpcGetSecurityGroupListV3Api.GetSecurityGroupListV3Request sgRequest new EcpcGetSecurityGroupListV3Api.GetSecurityGroupListV3Request(); sgRequest.setRegionId(REGIONID); sgRequest.setSecurityGroupName("虚拟电子教室学生机默认安全组"); // 根据实际需求调整筛选条件 EcpcGetSecurityGroupListV3Api.GetSecurityGroupListV3Response sgResponse apis.ecpcGetSecurityGroupListV3Api.send(credential, sgRequest); String securityGroupId sgResponse.getReturnObj().getList().get(0).getSecurityGroupOid(); System.out.println("获取安全组ID: " + securityGroupId); // 5. (可选)询价 EcpcDescriEcsPriceV3Api.DescriEcsPriceV3Request priceRequest new EcpcDescriEcsPriceV3Api.DescriEcsPriceV3Request(); priceRequest.setRegionId(REGIONID); priceRequest.setTemplateOid(templateId); priceRequest.setImageOid(imageId); priceRequest.setBillMode("Cycle"); priceRequest.setCycleType("Month"); priceRequest.setCycleCnt(1); priceRequest.setSubnetOid(subnetId); priceRequest.setOsType("Windows"); priceRequest.setSecurityGroupOid(securityGroupId); priceRequest.setSysDiskType("uhio"); priceRequest.setSysDiskSize(120); priceRequest.setAutoPay(true); priceRequest.setInstanceNum(1); EcpcDescriEcsPriceV3Api.DescriEcsPriceV3Response priceResponse apis.ecpcDescriEcsPriceV3Api.send(credential, priceRequest); System.out.println("询价完成,返回结果: " + priceResponse.getReturnObj().getFinalPrice()); // 6. 创建云电脑实例 EcpcCreateEcsV3Api.CreateEcsV3Request createRequest new EcpcCreateEcsV3Api.CreateEcsV3Request(); // 基础配置 createRequest.setRegionId(REGIONID); createRequest.setTemplateOid(templateId); // 规格模板 createRequest.setImageOid(imageId); // 镜像 createRequest.setBillMode("Cycle"); // 包周期 createRequest.setCycleType("Month"); // 按月计费 createRequest.setCycleCnt(1); // 1个月 // 操作系统和认证 createRequest.setOsType("Windows"); // Windows系统 createRequest.setPassword("CreateEcsV3@93081b6"); // 实例密码(需符合复杂度要求) // 网络配置 createRequest.setSubnetOid(subnetId); // 子网 createRequest.setSecurityGroupOid(securityGroupId); // 安全组 // 存储配置 createRequest.setSysDiskType("uhio"); // 系统盘类型(高性能云硬盘) createRequest.setSysDiskSize(120); // 系统盘大小120GB // 其他配置 createRequest.setInstanceNum(1); // 创建期望的云电脑数量,本示例设置为1 createRequest.setAutoPay(true); // 是否自动支付(仅创建单独付费云电脑有效),默认false。取值范围: true:是。(仅订购类型为包周期类型有效,需账号有足够金额) false:否。(仅订购类型为包周期类型有效) // 发送创建请求 EcpcCreateEcsV3Api.CreateEcsV3Response createResponse apis.ecpcCreateEcsV3Api.send(credential, createRequest); System.out.println("✓ 云电脑创建请求已提交! 订单号:" + createResponse.getReturnObj().getNewOrderNo()); System.out.println("n 创建流程完成 "); }