创建App
更新时间:
接口
createApp
参数
| 参数 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
| appDescription | AppDescription | 是 | 创建App的描述。 |
appDescription 的详细描述信息参考创建 APP 文档
返回值
创建成功后返回一个 CreateAppResponse 实例,可以通过 getAppName() 获取创建的App名称。创建失败后,抛出异常: ClientException 。
例子
Java 源码:
import com.aliyuncs.batchcompute.main.v20151111.*;import com.aliyuncs.batchcompute.model.v20151111.*;import com.aliyuncs.batchcompute.pojo.v20151111.*;import com.aliyuncs.exceptions.ClientException;public class CreateApp {static String ACCESS_KEY_ID = "xxx"; //这里填写您的 AccessKeyIdstatic String ACCESS_KEY_SECRET = "xxx"; //这里填写您的 AccessKeySecretstatic String REGION_ID = "cn-xxx"; //这里填写 regionpublic static void main(String[] args) {BatchCompute client = new BatchComputeClient(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);try {AppDescription appDesc = GenAppDescription();CreateAppResponse response = client.createApp(appDesc);System.out.println("AppName: " + response.getAppName());System.out.println("RequestId: " + response.getRequestId());System.out.println("StatusCode: " + response.getStatusCode());//创建成功} catch (ClientException e) {e.printStackTrace();//创建失败}}private static AppDescription GenAppDescription(){AppDescription desc = new AppDescription();desc.setName("JavaSdkApp");desc.setDescription("JavaSdkApp");//设置APP输入参数AppDescription.InputParameterValue inputPara = new AppDescription.InputParameterValue();inputPara.setDescription("Input param 1");inputPara.setType("String");inputPara.setLocalPath("/home/input/infile1");desc.addInputParameters("inputFile", inputPara);//根据业务需要可以设置其他的输入参数,例如://AppDescription.InputParameterValue inputPara = new AppDescription.InputParameterValue();//inputPara.setDefaultValue("255");//inputPara.setDescription("the length of picture");//inputPara.setType("String");//inputPara.setLocalPath("");//desc.addInputParameters("length", inputPara);//设置APP输出参数AppDescription.OutputParameterValue outputParameterValue = new AppDescription.OutputParameterValue();outputParameterValue.setDescription("Output param");outputParameterValue.setType("String");outputParameterValue.setLocalPath("/home/test/outfile/");desc.addOutputParameters("outputFile", outputParameterValue);//环境变量设置desc.addEnvVars("env-k1", "env-v1");desc.addEnvVars("env-k2", "env-v2");//App支持拉取docker的方式有两种,oss registry和 容器镜像服务模式,选择其中一种即可;推荐选择容器镜像服务模式。//设置docker oss registry 模式AppDescription.Docker docker = new AppDescription.Docker();//docker.setImage("localhost:5000/yuorBucket/dockers:0.1");//镜像信息//docker.setRegistryOSSPath("oss://your-bucket/dockers");//OSS 地址//设置docker 容器镜像服务 模式docker.setImage("registry.cn-beijing.aliyuncs.com/demotest/test:0.1");//镜像信息//根据需要打开注释//desc.setDocker(docker);//VM和docker 是互斥的只能设置其中一项参数AppDescription.VM vm = new AppDescription.VM();vm.setECSImageId("img-ubuntu");desc.setVm(vm);//设置config 默认参数;也可以不设置则设置为系统的默认参数//setOverwritable 若设置为true则表示后续提交作业时可以根据作业特殊情况做修改;//setOverwritable 若设置为false则表示后续提交作业无法做修改,只能按此默认值运行AppDescription.Config config = new AppDescription.Config();//设置磁盘类型AppDescription.ConfigValue configValue = new AppDescription.ConfigValue();configValue.setDefaultValue("cloud_efficiency");configValue.setDescription("diskType");configValue.setOverwritable(true);config.setDiskType(configValue);//设置实例个数AppDescription.ConfigValueInteger configValueInt = new AppDescription.ConfigValueInteger();configValueInt.setDefaultValue(1);configValueInt.setDescription("Instance count");configValueInt.setOverwritable(true);config.setInstanceCount(configValueInt);//设置资源类型AppDescription.ConfigValue resourceConfig = new AppDescription.ConfigValue();resourceConfig.setDefaultValue("OnDemand");resourceConfig.setDescription("Resource type");resourceConfig.setOverwritable(true);config.setResourceType(resourceConfig);//设置实例类型AppDescription.ConfigValue InstanceConfig = new AppDescription.ConfigValue();InstanceConfig.setDefaultValue("ecs.sn2ne.large");InstanceConfig.setDescription("Instance type");InstanceConfig.setOverwritable(true);config.setInstanceType(InstanceConfig);//设置最小盘大小AppDescription.ConfigValueInteger minDiskConfig = new AppDescription.ConfigValueInteger();minDiskConfig.setDefaultValue(40);//GBminDiskConfig.setDescription("Min Disk size");minDiskConfig.setOverwritable(true);config.setMinDiskSize(minDiskConfig);//设置最大重试次数AppDescription.ConfigValueInteger retryConfig = new AppDescription.ConfigValueInteger();retryConfig.setDefaultValue(3);retryConfig.setDescription("Max retry count");retryConfig.setOverwritable(true);config.setMaxRetryCount(retryConfig);//设置超时时间AppDescription.ConfigValueLong configValueLong = new AppDescription.ConfigValueLong();configValueLong.setDefaultValue(6000);//单位:秒configValueLong.setOverwritable(true);configValueLong.setDescription("Time out");config.setTimeout(configValueLong);//设置数据盘大小AppDescription.ConfigValueInteger dataDiskSizeConfigInt = new AppDescription.ConfigValueInteger();dataDiskSizeConfigInt.setOverwritable(true);dataDiskSizeConfigInt.setDefaultValue(40);dataDiskSizeConfigInt.setDescription("minDataDiskSize");config.setMinDataDiskSize(dataDiskSizeConfigInt);//设置数据盘挂载点AppDescription.ConfigValue dataDiskMountPoint = new AppDescription.ConfigValue();dataDiskMountPoint.setOverwritable(true);dataDiskMountPoint.setDefaultValue("/home/mount/");dataDiskMountPoint.setDescription("minDataMountPoint");config.setDataDiskMountPoint(dataDiskMountPoint);//设置数据盘类型,此类型必须和setDiskType设置的磁盘类型保持一致。//后续提交作业时即使修改也必须和系统盘的类型修改成一致AppDescription.ConfigValue dataDiskType = new AppDescription.ConfigValue();dataDiskType.setDescription("dataDiskType");dataDiskType.setDefaultValue("cloud_efficiency");dataDiskType.setOverwritable(true);config.setDataDiskType(dataDiskType);desc.setConfig(config);desc.setCommandLine("cp ${inputFile} ${outputFile}");desc.setDaemonize(false);return desc;}}
执行结果:
{AppName: JavaSdkAppRequestId: nullStatusCode: 201}
该文章对您有帮助吗?