diff --git a/cloud-modules/cloud-modules-car-gateway/pom.xml b/cloud-modules/cloud-modules-car-gateway/pom.xml index cae8849..8b1c0b7 100644 --- a/cloud-modules/cloud-modules-car-gateway/pom.xml +++ b/cloud-modules/cloud-modules-car-gateway/pom.xml @@ -7,6 +7,9 @@ 3.6.3 + + cloud-modules-car-gateway车辆网关模块 + cloud-modules-car-gateway jar diff --git a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/domain/ExampleInformation.java b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/domain/ExampleInformation.java new file mode 100644 index 0000000..cc31db5 --- /dev/null +++ b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/domain/ExampleInformation.java @@ -0,0 +1,35 @@ +package com.muyu.car.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实例基础信息 + * @Author:蓬叁 + * @Package:com.muyu.car.domain + * @Project:cloud-server-8 + * @name:ExampleInformation + * @Date:2024/9/29 下午10:01 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ExampleInformation { + + /** + * 实例ID + */ + private String InstanceId; + /** + * 实例IP + */ + private String IpAddress; + /** + * 实例状态 + */ + private String status; + +} diff --git a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/DelInstance.java b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/DelInstance.java index 6ac10c7..c46bcab 100644 --- a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/DelInstance.java +++ b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/DelInstance.java @@ -3,6 +3,7 @@ package com.muyu.car.instance; import com.aliyun.ecs20140526.models.DescribeInstancesRequest; import com.aliyun.ecs20140526.models.DescribeInstancesResponse; import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody; +import com.aliyun.ecs20140526.models.RunInstancesResponseBody; import com.aliyun.tea.*; import com.aliyun.teautil.models.RuntimeOptions; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/GenerateInstance.java b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/GenerateInstance.java index d476ac4..3311748 100644 --- a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/GenerateInstance.java +++ b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/GenerateInstance.java @@ -1,11 +1,17 @@ package com.muyu.car.instance; +import com.aliyun.ecs20140526.models.*; import com.aliyun.tea.TeaException; +import com.aliyun.teautil.models.RuntimeOptions; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.log4j.Log4j2; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + /** * @Author:蓬叁 * @Package:com.muyu.car.domain @@ -22,7 +28,7 @@ public class GenerateInstance implements ApplicationRunner { * 启动自动创建实例 * @throws Exception */ - public static void generateInstance() throws Exception { + public static List generateInstance() throws Exception { // 创建ECS客户端对象,用于后续调用ECS相关API com.aliyun.ecs20140526.Client client = CreateClient.createClient(); @@ -34,7 +40,7 @@ public class GenerateInstance implements ApplicationRunner { // 设置地域ID .setRegionId("cn-hangzhou") // 设置镜像ID - .setImageId("m-bp154fkbdlkjc1i3ku01") + .setImageId("m-bp10rcc4nsihqfoz0w7s") // 设置实例类型 .setInstanceType("ecs.t6-c1m1.large") // 设置安全组ID @@ -54,14 +60,21 @@ public class GenerateInstance implements ApplicationRunner { // 设置实例密码 .setPassword("EightGroup123.") // 设置创建实例的数量 - .setAmount(1); - - + .setAmount(2); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { // 复制代码运行请自行打印 API 的返回值 - client.runInstancesWithOptions(runInstancesRequest, runtime); + RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runtime); + // 获取body返回值对象 + RunInstancesResponseBody body = runInstancesResponse.getBody(); + ArrayList list = new ArrayList<>(); + // 得到实例ID数组 + for (String instance : body.getInstanceIdSets().getInstanceIdSet()) { + list.add(instance); + } + log.info("实例ID:{}",list); + return list; } catch (TeaException error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message @@ -78,6 +91,7 @@ public class GenerateInstance implements ApplicationRunner { log.info(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } + return null; } @Override diff --git a/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/QueryInstance.java b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/QueryInstance.java new file mode 100644 index 0000000..7e08165 --- /dev/null +++ b/cloud-modules/cloud-modules-car-gateway/src/main/java/com/muyu/car/instance/QueryInstance.java @@ -0,0 +1,69 @@ +package com.muyu.car.instance; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.ecs20140526.models.DescribeInstancesResponse; +import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody; +import com.aliyun.tea.TeaException; +import com.muyu.car.domain.ExampleInformation; +import lombok.extern.log4j.Log4j2; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:蓬叁 + * @Package:com.muyu.car.instance + * @Project:cloud-server-8 + * @name:QueryInstance + * @Date:2024/9/29 下午8:58 + */ +@Log4j2 +public class QueryInstance { + + public static void queryInstance(List instanceIds) throws Exception { + com.aliyun.ecs20140526.Client client = CreateClient.createClient(); + + com.aliyun.ecs20140526.models.DescribeInstancesRequest describeInstancesRequest = new com.aliyun.ecs20140526.models.DescribeInstancesRequest() +// .setInstanceName("server-mqtt") + .setInstanceIds(JSON.toJSONString(instanceIds)) + .setRegionId("cn-hangzhou"); + + + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + + try { + // 复制代码运行请自行打印 API 的返回值 + DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtime); + DescribeInstancesResponseBody body = describeInstancesResponse.getBody(); + ArrayList exampleInformations = new ArrayList<>(); + for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){ + ExampleInformation exampleInformation = new ExampleInformation(); + exampleInformation.setInstanceId(instance.getInstanceId()); + log.info("实例ID:{}",exampleInformation.getInstanceId()); + exampleInformation.setStatus(instance.getStatus()); + log.info("实例状态:{}",exampleInformation.getStatus()); + exampleInformation.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress())); + log.info("实例IP:{}",exampleInformation.getIpAddress()); + exampleInformations.add(exampleInformation); + } + log.info("实例信息:{}",exampleInformations); + } catch (TeaException error) { + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } catch (Exception _error) { + TeaException error = new TeaException(_error.getMessage(), _error); + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + com.aliyun.teautil.Common.assertAsString(error.message); + } + } + +}