cloud-plus-server/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/CreateInstance.java

102 lines
4.7 KiB
Java

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{
/**
* <b>description</b> :
* <p>使用AK&amp;SK初始化账号Client</p>
* @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("创建实例方法执行完毕");
}
}