使用API创建应用(ECS)

本文介绍如何使用EDAS提供的Java SDK调用API在EDAS ECS环境中创建应用。

前提条件

在EDAS ECS环境中创建应用前,您必须提前完成以下准备工作:

  • 安装EDAS的Java SDK。更多信息,请参见Java SDK接入指南
  • 确定创建应用的地域,假设为cn-hangzhou

  • 创建微服务空间。具体操作,请参见创建命名空间

    如果已经存在命名空间,您可以调用ListUserDefineRegion接口查询用户自定义命名空间列表,获取目标命名空间的RegionId

  • 创建ECS集群,具体操作,请参见使用API创建ECS集群

    如果您已经创建了ECS集群,则可以调用ListCluster接口查询集群列表,获取目标ECS集群的集群ID(ClusterId),假设为369d06d7-450b-4f3d-bf75-9536fcd9****

  • 在ECS集群中添加ECS实例,具体操作,请参见使用API扩容ECS集群

  • 调用ListScaleOutEcu接口从指定ECS集群中查询ECU列表,获取ECU的唯一标识ID(EcuId),假设为82a0ac57-433d-4ad1-ae89-0c6fcb70****e2674482-1214-4c93-b767-9b6405e2****

  • 如果需要创建HSF应用,则需要调用ListBuildPack接口查询容器版本列表,获取容器版本(ConfigId)参数,假设为57

创建应用

以下代码适用于在EDAS ECS集群中快速创建应用。代码中未设置挂载脚本信息和JVM参数信息,如需了解更多API参数信息,请参见InsertApplication

说明

以下代码适用于创建Spring Cloud和Dubbo应用,如需创建HSF应用,则需要在代码中增加EDAS-Container信息:

//EDAS-Container构建包号,当创建HSF应用时,该参数必须指定。可以调用ListBuildPack接口获取,对应ConfigId参数。
request.setBuildPackId(57);
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.edas.model.v20170801.InsertApplicationRequest;
import com.aliyuncs.edas.model.v20170801.InsertApplicationResponse;

public class InsertApplication {

    public static void main(String[] args)  {
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        // 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您可以根据业务需要,保存到配置文件里。
        // 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险。
        String aliyun_user_ak = System.getenv("ACCESS_KEY_ID");
        String aliyun_user_sk = System.getenv("ACCESS_KEY_SECRET");
        //要执行API调用的应用所在地域ID。
        String region_id = "cn-hangzhou";

        DefaultProfile defaultProfile = DefaultProfile.getProfile(region_id, aliyun_user_ak, aliyun_user_sk);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);

        //创建API请求,并设置参数。
        InsertApplicationRequest request = new InsertApplicationRequest();
        //目标ECS集群的集群ID。
        request.setClusterId("369d06d7-450b-4f3d-bf75-9536fcd993dc");
        //应用描述信息。
        request.setDescription("create by edas pop api");
        //自定义的应用名称。应用名称必须以字母开头,允许数字、字母、下划线(_)以及短划线(-)组合,最多支持36个字符。
        request.setApplicationName("ECSAPP_API");
        //微服务空间的RegionId。
        request.setLogicalRegionId("cn-hangzhou:doc");
        //ECS集群中的ECS实例的ecu_id(导入EDAS的ECS实例在EDAS中的唯一身份),多个ecu_id用半角逗号(,)分开。
        request.setEcuInfo("82a0ac57-433d-4ad1-ae89-0c6fcb70****,e2674482-1214-4c93-b767-9b6405e2****");
        //应用部署包格式,可设置为war或者jar。
        request.setPackageType("jar");
        //应用组件ID。您创建Spring Cloud、Spring Boot或Dubbo应用时需要指定组件ID,创建HSF应用时无需设置。
        //4代表Apache Tomcat 7.0.91,7代表Apache Tomcat 8.5.42,5代表OpenJDK 1.8.x,6代表OpenJDK 1.7.x。
        request.setComponentIds("5");
        //是否启用健康检查URL,true代表启用,false代表不启用。
        request.setEnableUrlCheck(true);
        //应用健康检查URL。
        request.setHealthCheckUrl("http://127.0.0.1:8080/_ehc.html");



        try {
            InsertApplicationResponse response = client.getAcsResponse(request);
            System.out.println("Message=" + response.getMessage() + "\nAppName=" + response.getApplicationInfo().getAppName() + "\nAppId=" + response.getApplicationInfo().getAppId());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

运行程序,返回的执行结果如下所示:

Message=success
AppName=ECSAPP_API
AppId=6275ffd0-d577-4b5a-894f-e92991b8****

结果验证

在EDAS ECS环境中创建应用后,您可以调用ListApplication接口获取应用列表。根据AppIdAppName等参数,判断应用是否已经创建成功。

调用ListApplication接口,返回的结果如下:

{
  "Message": "success",
  "RequestId": "9363A94A-96C5-4B41-93A9-001A4E9DDEE1",
  "ApplicationList": {
    "Application": [
      {
        "BuildPackageId": 0,
        "ApplicationType": "FatJar",
        "AppId": "6275ffd0-d577-4b5a-894f-e92991b8****",
        "ResourceGroupId": "rg-acfm3umruf2****",
        "ClusterId": "369d06d7-450b-4f3d-bf75-9536fcd9****",
        "RegionId": "cn-hangzhou:doc",
        "ClusterType": 2,
        "RunningInstanceCount": 0,
        "Name": "ECSAPP_API"
      }
    ]
  },
  "Code": 200
}