1、概述

数字经济已经成为中国经济创新发展的主流模式,云计算和大数据已成为用户在数字化转型过程中重点关注的技术。品高云平台作为一个开放的云平台,自 2010 年正式商用以来,已服务了包括了政府、公安、运营商、轨道交通、金融、教育、军工等多个行业的大中型客户,同时,部署在品高云上的第三方业务应用系统也越来越多。

在用户的整体 IT 架构中,云平台为上层业务应用提供所需要的基础资源设施(计算、存储、网络等),上层业务系统部署在云平台之上,是用户业务数据的入口,也需要底层云资源对数据进行处理,它们分工各不相同,但是联系紧密。在品高云中,应用系统对于云平台的操作不仅仅停留在网页,还可以通过 API 的方式直接调用云平台资源,快速与品高云进行对接,实现上层应用与底层基础设施的数据交互。

在上一篇文章中已介绍过基于 python 程序获取云平台实例信息的列子,说明第三方应用如何通过 API 的方式获取云平台数据,本篇文章将介绍基于 Java 程序在云平台中创建虚拟机,说明第三方应用如何通过 API 的方式创建云平台资源,操作步骤如下图:

2、前期环境准备

(1)品高云平台:

本次功能演示所使用的品高云平台登录地址为 http://10.201.81.1:8663

(2)Java 环境的搭建准备,本次演示中开发工具选择 IntelliJ IDEA,在实际应用中可选择不同的开发工具进行开发;

java 官方下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

IntelliJ IDEA 官方下载地址:https://www.jetbrains.com/idea/download

(3)客户端服务器:

搭建 Java 环境,编写创建实例程序并将其打包成 jar 包,可在客户端服务器上运行程序。在客户端服务器下载安装 java1.8.0_221,安装完成后,通过 CMD 查看 java 及 javac 的版本信息,如下图所示信息,即表示安装成功。

(4)云平台 SDK 包

用户可直接通过【品高云→平台管理→文档→下载→SDK】页面进行下载。新编写的程序必须放在 SDK 包内才能执行。

可通过以下链接获取本次 Demo 的程序及相关 SDK 包:http://pan.bingosoft.net:81/drive/share/open_sharepage/2189dc90-aee6-4d47-a361-672cd089f006:bingo  密码:eyfj

3、创建实例程序编写

创建实例程序的目标是,通过程序的执行可在云平台中创建实例资源,并且可定义实例的规模、镜像、VPC、Subnet、安全组等信息。用户可通过此程序获取对应的资源,当然也可基于业务的需要进一步调取 api 来实现更多功能,如挂载存储卷、绑定 IAM 角色,挂载多网卡等。

创建一个 Demo.java 的文本,并将其放置在下载的 Demo 包中 src 目录下

本文以创建实例为例,编写了创建实例的程序,程序编写如下:

import java.util.Date;

import com.bingocloud.auth.AWSCredentials;
import com.bingocloud.auth.BasicAWSCredentials;
import com.bingocloud.services.ec2.AmazonEC2Client;
import com.bingocloud.services.ec2.model.*;import com.bingocloud.services.cloudwatch.AmazonCloudWatchClient;public class Demo {

	public static void main(String[] args){
		try{
			runInstance();
		}catch(Exception e){
			System.out.println(e);
		}
	}
	private static void runInstance() throws Exception{

		AWSCredentials myCredentials = new BasicAWSCredentials("****************", "**********************************");
		AmazonEC2Client client = new AmazonEC2Client(myCredentials);
		client.setEndpoint("http://10.201.81.1");	//设置云接口调用地址

		RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
		runInstancesRequest.withImageId("ami-13060502")
				.withInstanceType("m1.large")
				.withSecurityGroups("default")
				.withVpcId("vpc-54F6B6F1")
				.withSubnetId("subnet-1102FCC2")
				.withOwnerId("bingo")
				.withTags(new Tag("所属公司", "品高软件"))
				.withInstanceName("我的 Demo 实例")
				.withMinCount(1)
				.withMaxCount(1);
		//调用
		RunInstancesResult runInstancesResult=client.runInstances(runInstancesRequest);
		System.out.println(runInstancesResult.getReservation().toString());		// 列出所有可查的资源
	}
}

即可在云平台内创建一台位于 VPC:”vpc-54F6B6F1″,Subnet:”subnet-1102FCC2″ 下的实例,实例的镜像为 ami-13060502,实例规模为 m1.large,安全组为”default”,并且为实例命名及打上相应的标签信息。

4、通过创建实例的程序在品高云中创建实例

程序编写完成后,可在开发工具中直接执行,也可以打包成 jar 包在不同的客户端中运行,通过调用 API 的方式在云平台中创建实例,执行过程示意如下:

(1)使用开发工具打开 Demo.java 文件,配置执行程序所需要的数据

检查编写完的 java 程序,切记将云平台地址和账户密钥变更为本次使用的云平台地址和操作账户密钥,并且确保填写的实例的相关信息在云平台中存在,如镜像 ID、实例规模、VPC、安全组等,如下:

client.setEndpoint("http://10.201.81.1"); 
AWSCredentials myCredentials = new BasicAWSCredentials("***************", "***************************");

账户的密钥可通过【品高云→平台管理→个人设置→账户密钥→查看密钥对】,进行查看

(2)在开发工具的中 Project Structure 对 Project 及 Modules 的相关信息进行配置

(3)配置完成后,可在开发工具中执行 run,即可在对应的云平台中创建一台实例,并且实例创建成功后会返回的实例信息。

(4)可在品高云平台上查看到实例创建成功,在实例的详情界面中可查看到实例信息与程序中所定义的值完全符合,并且也打上相应的标签

(5)可在开发工具中将程序打包成 jar 包后,在不同的客户端上运行,具体实现方式为:在 Project Structure 中配置好 Artifact,配置完成后,执行 Build Artifacts,生成 Demo 程序的 jar 包,如下图:

(6)可将 jar 包上传到另一有 java 环境的客户端进行执行,同样可在云平台中创建出相同的实例,如将 jar 包上传到 linux 虚拟机中,并通过 java -jar Demo.jar 执行。

(7)可在品高云平台上查看到实例照样创建成功

由于篇幅限制,本文仅演示如何通过调用 API 的方式进行实例的创建,在 Demo 包中的 Demo_1.java 文件还附带云平台实例信息获取、云监控设置、告警通知等 Demo 程序,可供进一步了解如何对接品高云进行相关研发工作。