# cloud-res **Repository Path**: li_yinxing/cloud-res ## Basic Information - **Project Name**: cloud-res - **Description**: cloud-res是一个开源的云资源API SDK集成整合的中间适配器,能够将目前主流云厂商的资源操作抽象成统一接口,无需花更多精力去学习不同云厂商的接口/调整/变动/适配/版本更新等问题,目前已经集成了(阿里云/腾讯云/华为云/AWS)等常见云服务商的SDK,后续再不断叠加适配厂商、叠加功能等。 主要功能包括实例操作、实例插叙、实例扫描、实例运行日志、安全组操作、规则修改等 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2023-11-06 - **Last Updated**: 2023-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 软件简介 cloud-res 是一个开源的云资源API SDK集成整合的中间适配器,能够将目前主流云厂商的 资源操作抽象成统一接口,无需花更多精力去学习不同云厂商的接口/调整/变动/适配/版本 更新等问题,目前已经集成了(阿里云/腾讯云/华为云/AWS)等常见云服务商的SDK,后续 再不断叠加适配厂商、叠加功能等。 主要功能包括实例操作、实例插叙、实例扫描、实例运行日志、安全组操作、规则修改等 ## 内置功能 * 实例操作启动/停止/更新/重启、实例扫描、实例详情 * 安全组创建/删除/更新 * 安全组规则更新/修改/删除 * 实例运行监控(未完善) * 可以根据以上功能去拓展,如:资源到期提醒,资源监控,远程连接等 ## 预加载Client 预加载Client可以解决初次加载慢的问题,因为Client需要初始化,并且会尝试testConnect ,所以建议预加载配置,可以同AbstractCloudClientContext.preload()批量预加载Client ``` AbstractCloudClientContext.preload(); ``` ## 代码-测试类 ``` package com.leizk; import cn.hutool.json.JSONUtil; import com.leizk.entity.Credential; import com.leizk.enums.CloudClientTypeEnum; import com.leizk.service.base.AbstractCloudClient; import com.leizk.service.base.impl.TenCentLightHouseClientImpl; import com.leizk.service.context.AbstractCloudClientContext; import com.leizk.service.factory.CloudClientFactory; public class MainClass { public static void main(String[] args) { try { //授权凭证,包含API接口授权KEY,region,endpoint等信息 Credential credential = Credential.builder() .serviceType(CloudClientTypeEnum.TEN_CENT_LIGHTHOUSE) .secretId("AKIDa9UbT4RL2Ur*****9GAuRlx30nMjr7HG8xgDc") .region("ap-guangzhou") .secretKey("KYbZYXUGpMoFiG*****n1DRWZaUIwX") .build(); //方式1,通过context去初始化client,client将会交由context管理 AbstractCloudClient cloudClient1 = AbstractCloudClientContext.getClient(credential); //方式2,通过工厂去创建client,client将会由自己管理 AbstractCloudClient cloudClient2 = CloudClientFactory.create(credential); //方式3,自定义初始化new方式,client将会由自己管理,这个方式需要通过init()去初始化 AbstractCloudClient cloudClient3 = new TenCentLightHouseClientImpl(); cloudClient3.init(credential); System.out.println(JSONUtil.toJsonStr(cloudClient1.describeInstances())); System.out.println(JSONUtil.toJsonStr(cloudClient2.describeInstances())); System.out.println(JSONUtil.toJsonStr(cloudClient3.describeInstances())); } catch (Exception e) { e.printStackTrace(); } } } ``` ## 代码-结果返回JSON ``` [ { "instanceId": "lhins-207puzfn", "name": "CentOS-lTsa", "chargeType": "PREPAID", "cpu": 2, "memory": 4, "state": "RUNNING", "latestOperation": "", "latestOperationState": "", "createdTime": "2023-04-13T11:05:01Z", "expiredTime": "2024-04-13T11:05:01Z", "platformType": "LINUX_UNIX", "platform": "CENTOS", "osName": "CentOS 7.6 64bit", "zone": "ap-guangzhou-4", "privateAddresses": [ "10.0.12.11" ], "publicAddresses": [ "106.52.209.129" ], "systemDisk": { "diskId": "lhdisk-bsiq3xsf", "diskType": "CLOUD_SSD", "diskSize": 60 } } ] ``` ## 代码-原生腾讯云的返回JSON ``` { "TotalCount": 1, "InstanceSet": [ { "InstanceId": "lhins-207puzfn", "BundleId": "bundle_starter_mc_med4_01", "BlueprintId": "lhbp-5e881mct", "CPU": 2, "Memory": 4, "InstanceName": "CentOS-lTsa", "InstanceChargeType": "PREPAID", "SystemDisk": { "DiskType": "CLOUD_SSD", "DiskSize": 60, "DiskId": "lhdisk-bsiq3xsf" }, "PrivateAddresses": [ "10.0.12.11" ], "PublicAddresses": [ "106.52.209.129" ], "InternetAccessible": { "InternetChargeType": "TRAFFIC_POSTPAID_BY_HOUR", "InternetMaxBandwidthOut": 5, "PublicIpAssigned": true }, "RenewFlag": "NOTIFY_AND_MANUAL_RENEW", "LoginSettings": { "KeyIds": [] }, "InstanceState": "RUNNING", "Uuid": "39084aa3-98bf-46f2-8a39-8975cd34de73", "LatestOperation": "", "LatestOperationState": "", "LatestOperationRequestId": "", "CreatedTime": "2023-04-13T11:05:01Z", "ExpiredTime": "2024-04-13T11:05:01Z", "PlatformType": "LINUX_UNIX", "Platform": "CENTOS", "OsName": "CentOS 7.6 64bit", "Zone": "ap-guangzhou-4", "Tags": [], "InstanceRestrictState": "NORMAL" } ], "RequestId": "79f4a10e-31e5-4c7a-9d4b-91fc386fb02a" } ``` ## 贴一些实际应用场景 可以用作服务器管理,资源监控,状态信息等 ![输入图片说明](images/1695813967898.jpg) ![输入图片说明](images/1695814020317.jpg) ![输入图片说明](images/1695814086902.jpg) ![输入图片说明](images/1695814110260.jpg)