接口

createApp

参数

参数 类型 是否必需 说明
appDescription AppDescription 创建App的描述。

appDescription 的详细描述信息参考创建 APP 文档

返回值

创建成功后返回一个 CreateAppResponse 实例,可以通过 getAppName() 获取创建的App名称。创建失败后,抛出异常: ClientException

例子

Java 源码:

  1. import com.aliyuncs.batchcompute.main.v20151111.*;
  2. import com.aliyuncs.batchcompute.model.v20151111.*;
  3. import com.aliyuncs.batchcompute.pojo.v20151111.*;
  4. import com.aliyuncs.exceptions.ClientException;
  5. public class CreateApp {
  6. static String ACCESS_KEY_ID = "xxx"; //这里填写您的 AccessKeyId
  7. static String ACCESS_KEY_SECRET = "xxx"; //这里填写您的 AccessKeySecret
  8. static String REGION_ID = "cn-xxx"; //这里填写 region
  9. public static void main(String[] args) {
  10. BatchCompute client = new BatchComputeClient(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
  11. try {
  12. AppDescription appDesc = GenAppDescription();
  13. CreateAppResponse response = client.createApp(appDesc);
  14. System.out.println("AppName: " + response.getAppName());
  15. System.out.println("RequestId: " + response.getRequestId());
  16. System.out.println("StatusCode: " + response.getStatusCode());
  17. //创建成功
  18. } catch (ClientException e) {
  19. e.printStackTrace();
  20. //创建失败
  21. }
  22. }
  23. private static AppDescription GenAppDescription(){
  24. AppDescription desc = new AppDescription();
  25. desc.setName("JavaSdkApp");
  26. desc.setDescription("JavaSdkApp");
  27. //设置APP输入参数
  28. AppDescription.InputParameterValue inputPara = new AppDescription.InputParameterValue();
  29. inputPara.setDescription("Input param 1");
  30. inputPara.setType("String");
  31. inputPara.setLocalPath("/home/input/infile1");
  32. desc.addInputParameters("inputFile", inputPara);
  33. //根据业务需要可以设置其他的输入参数,例如:
  34. //AppDescription.InputParameterValue inputPara = new AppDescription.InputParameterValue();
  35. //inputPara.setDefaultValue("255");
  36. //inputPara.setDescription("the length of picture");
  37. //inputPara.setType("String");
  38. //inputPara.setLocalPath("");
  39. //desc.addInputParameters("length", inputPara);
  40. //设置APP输出参数
  41. AppDescription.OutputParameterValue outputParameterValue = new AppDescription.OutputParameterValue();
  42. outputParameterValue.setDescription("Output param");
  43. outputParameterValue.setType("String");
  44. outputParameterValue.setLocalPath("/home/test/outfile/");
  45. desc.addOutputParameters("outputFile", outputParameterValue);
  46. //环境变量设置
  47. desc.addEnvVars("env-k1", "env-v1");
  48. desc.addEnvVars("env-k2", "env-v2");
  49. //App支持拉取docker的方式有两种,oss registry和 容器镜像服务模式,选择其中一种即可;推荐选择容器镜像服务模式。
  50. //设置docker oss registry 模式
  51. AppDescription.Docker docker = new AppDescription.Docker();
  52. //docker.setImage("localhost:5000/yuorBucket/dockers:0.1");//镜像信息
  53. //docker.setRegistryOSSPath("oss://your-bucket/dockers");//OSS 地址
  54. //设置docker 容器镜像服务 模式
  55. docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");//镜像信息
  56. //根据需要打开注释
  57. //desc.setDocker(docker);
  58. //VM和docker 是互斥的只能设置其中一项参数
  59. AppDescription.VM vm = new AppDescription.VM();
  60. vm.setECSImageId("img-ubuntu");
  61. desc.setVm(vm);
  62. //设置config 默认参数;也可以不设置则设置为系统的默认参数
  63. //setOverwritable 若设置为true则表示后续提交作业时可以根据作业特殊情况做修改;
  64. //setOverwritable 若设置为false则表示后续提交作业无法做修改,只能按此默认值运行
  65. AppDescription.Config config = new AppDescription.Config();
  66. //设置磁盘类型
  67. AppDescription.ConfigValue configValue = new AppDescription.ConfigValue();
  68. configValue.setDefaultValue("cloud_efficiency");
  69. configValue.setDescription("diskType");
  70. configValue.setOverwritable(true);
  71. config.setDiskType(configValue);
  72. //设置实例个数
  73. AppDescription.ConfigValueInteger configValueInt = new AppDescription.ConfigValueInteger();
  74. configValueInt.setDefaultValue(1);
  75. configValueInt.setDescription("Instance count");
  76. configValueInt.setOverwritable(true);
  77. config.setInstanceCount(configValueInt);
  78. //设置资源类型
  79. AppDescription.ConfigValue resourceConfig = new AppDescription.ConfigValue();
  80. resourceConfig.setDefaultValue("OnDemand");
  81. resourceConfig.setDescription("Resource type");
  82. resourceConfig.setOverwritable(true);
  83. config.setResourceType(resourceConfig);
  84. //设置实例类型
  85. AppDescription.ConfigValue InstanceConfig = new AppDescription.ConfigValue();
  86. InstanceConfig.setDefaultValue("ecs.sn2ne.large");
  87. InstanceConfig.setDescription("Instance type");
  88. InstanceConfig.setOverwritable(true);
  89. config.setInstanceType(InstanceConfig);
  90. //设置最小盘大小
  91. AppDescription.ConfigValueInteger minDiskConfig = new AppDescription.ConfigValueInteger();
  92. minDiskConfig.setDefaultValue(40);//GB
  93. minDiskConfig.setDescription("Min Disk size");
  94. minDiskConfig.setOverwritable(true);
  95. config.setMinDiskSize(minDiskConfig);
  96. //设置最大重试次数
  97. AppDescription.ConfigValueInteger retryConfig = new AppDescription.ConfigValueInteger();
  98. retryConfig.setDefaultValue(3);
  99. retryConfig.setDescription("Max retry count");
  100. retryConfig.setOverwritable(true);
  101. config.setMaxRetryCount(retryConfig);
  102. //设置超时时间
  103. AppDescription.ConfigValueLong configValueLong = new AppDescription.ConfigValueLong();
  104. configValueLong.setDefaultValue(6000);//单位:秒
  105. configValueLong.setOverwritable(true);
  106. configValueLong.setDescription("Time out");
  107. config.setTimeout(configValueLong);
  108. //设置数据盘大小
  109. AppDescription.ConfigValueInteger dataDiskSizeConfigInt = new AppDescription.ConfigValueInteger();
  110. dataDiskSizeConfigInt.setOverwritable(true);
  111. dataDiskSizeConfigInt.setDefaultValue(40);
  112. dataDiskSizeConfigInt.setDescription("minDataDiskSize");
  113. config.setMinDataDiskSize(dataDiskSizeConfigInt);
  114. //设置数据盘挂载点
  115. AppDescription.ConfigValue dataDiskMountPoint = new AppDescription.ConfigValue();
  116. dataDiskMountPoint.setOverwritable(true);
  117. dataDiskMountPoint.setDefaultValue("/home/mount/");
  118. dataDiskMountPoint.setDescription("minDataMountPoint");
  119. config.setDataDiskMountPoint(dataDiskMountPoint);
  120. //设置数据盘类型,此类型必须和setDiskType设置的磁盘类型保持一致。
  121. //后续提交作业时即使修改也必须和系统盘的类型修改成一致
  122. AppDescription.ConfigValue dataDiskType = new AppDescription.ConfigValue();
  123. dataDiskType.setDescription("dataDiskType");
  124. dataDiskType.setDefaultValue("cloud_efficiency");
  125. dataDiskType.setOverwritable(true);
  126. config.setDataDiskType(dataDiskType);
  127. desc.setConfig(config);
  128. desc.setCommandLine("cp ${inputFile} ${outputFile}");
  129. desc.setDaemonize(false);
  130. return desc;
  131. }
  132. }

执行结果:

  1. {
  2. AppName: JavaSdkApp
  3. RequestId: null
  4. StatusCode: 201
  5. }