接口
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"; //这里填写您的 AccessKeyId
static String ACCESS_KEY_SECRET = "xxx"; //这里填写您的 AccessKeySecret
static String REGION_ID = "cn-xxx"; //这里填写 region
public 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);//GB
minDiskConfig.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: JavaSdkApp
RequestId: null
StatusCode: 201
}
文档内容是否对您有帮助?