package com.muyu.vehicleGateway; import com.aliyun.tea.TeaException; import lombok.extern.log4j.Log4j2; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; /** * 创建阿里云ECS实例 * @className Sample * @author LiHD * @date 2024/9/28 19:02 */ @Component @Log4j2 public class CreateInstance implements ApplicationRunner{ /** * description : *

使用AK&SK初始化账号Client

* @return Client * * @throws Exception */ public static com.aliyun.ecs20140526.Client createClient() throws Exception { // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 .setAccessKeyId("LTAI5tM4LSerzWQ9wUPXgybq") // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 .setAccessKeySecret("hkiPr0QwkKMZauhXucgg1SDriXUW0Q"); // Endpoint 请参考 https://api.aliyun.com/product/Ecs config.endpoint = "ecs.cn-beijing.aliyuncs.com"; return new com.aliyun.ecs20140526.Client(config); } /** * 本程序的入口点 * 主要功能是创建阿里云ECS实例 * * @throws Exception 如果执行过程中发生错误则抛出异常 */ public static void sample() throws Exception { // 创建阿里云ECS客户端 com.aliyun.ecs20140526.Client client = CreateInstance.createClient(); // 配置系统盘参数 com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk = new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk() .setSize("40") // 设置系统盘大小为40GB .setCategory("cloud_essd"); // 设置系统盘类型为cloud_essd // 创建创建实例请求对象并设置参数 com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest() .setRegionId("cn-beijing") // 设置地域ID .setImageId("m-2ze801i45fclmf1qwes5") // 设置镜像ID .setInstanceType("ecs.e-c1m1.large") // 设置实例类型 .setSecurityGroupId("sg-2ze63acc0bas9vjm5gtv") // 设置安全组ID .setVSwitchId("vsw-2ze028qk4xpwk3i0ggket") // 设置虚拟交换机ID .setInstanceName("server-mqtt") // 设置实例名称 .setInstanceChargeType("PostPaid") // 设置实例付费类型为后付费按量付费 .setSystemDisk(systemDisk) // 设置系统盘配置 .setHostName("root") // 设置主机名 .setPassword("Lhd.123456") // 设置实例密码 .setAmount(1) // 设置创建实例的数量 .setInternetChargeType("PayByTraffic") // 设置互联网计费类型为按流量计费 .setInternetMaxBandwidthOut(5); // 设置最大出带宽为5Mbps // 创建运行时选项对象 com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); // 尝试执行创建实例请求 try { // 复制代码运行请自行打印 API 的返回值 client.runInstancesWithOptions(runInstancesRequest, runtime); } 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); } } @Override public void run(ApplicationArguments args) throws Exception { log.info("开始执行创建实例方法"); sample(); log.info("创建实例方法执行完毕"); } }