
# 启动作业 - ExecuteJob
#### 功能介绍
启动作业。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0100.html)。
#### URI
POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/jobs
表1路径参数 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                |
|:---|:---|:---|:---|
| eihealth_project_id | 是    | String | **参数解释**： 空间ID，您可以从[获取空间ID](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0099.html)中获取。 **约束限制**： 不涉及 **取值范围**： 仅支持字母、数字、中划线和下划线，长度为\[1-128\]个字符。 **默认取值**： 不涉及 |
| project_id          | 是    | String | **参数解释**： 项目ID，您可以从[获取项目ID](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0033.html)中获取。 **约束限制**： 不涉及 **取值范围**： 仅支持字母、数字、中划线和下划线，长度为\[1-128\]个字符。 **默认取值**： 不涉及 |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释**： 用户Token。 Token认证就是在调用API的时候将Token加到请求消息头，从而通过身份认证，获得操作API的权限，[获取Token](https://support.huaweicloud.com/api-ai4sservice/ai4sservice_03_0011.html)接口响应消息头中X-Subject-Token的值即为Token。 **约束限制**： 不涉及 **取值范围**： 长度为\[1-32768\]个字符。 **默认取值**： 不涉及 |
   
表3请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                           | 描述                                                                                                                                                                                          |
|:---|:---|:---|:---|
| name                  | 是    | String                                                         | **参数解释**： 作业的名称。 **约束限制**： 取值范围：\[1,63\]，允许大小写字母、数字、以及特殊字符中划线（-）。 **取值范围**： 长度\[1,63\]，以小写字母、大写字母或数字开头，允许出现中划线。 **默认取值**： 不涉及                                                               |
| description           | 否    | String                                                         | **参数解释**： 作业的描述。 **约束限制**： 不涉及 **取值范围**： 长度最大为255个字符。 **默认取值**： 不涉及                                                                                                                         |
| labels                | 否    | Array of strings                                               | **参数解释**： 作业标签。 **约束限制**： 单个标签最大长度32字符，支持中文、字母、数字、空格、下划线和中划线，且不能以空格开头或者结尾。最多设置5个标签。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                             |
| priority              | 否    | Integer                                                        | **参数解释**： 作业的优先级。 **约束限制**： 取值范围\[0,9\]，0最低，默认数值0。 **取值范围**： 长度\[0,9\]，0最低，默认数值0。 **默认取值**： 0                                                                                               |
| timeout               | 否    | Integer                                                        | **参数解释**： 作业执行超时时长。 **约束限制**： 取值范围: \[1,144000\]，单位：分钟，默认数值1440。 **取值范围**： 长度\[1,144000\]，单位：分钟，默认数值1440。 **默认取值**： 1440                                                                    |
| output_dir            | 否    | String                                                         | **参数解释**： 作业结果存储目录，默认为空，表示使用自身项目桶的根目录。 **约束限制**： 不涉及 **取值范围**： 长度\[0,128\]。 **默认取值**： 不涉及                                                                                                   |
| tool_id               | 是    | String                                                         | **参数解释**： 作业依赖的组件ID，组件当前仅支持流程，取值范围\[1,135\]，支持大小写字母和数字。目前支持两种格式，特殊ID：{流程名称}::{流程版本}::{源项目名称}；正常ID：流程ID。 **约束限制**： 取值范围\[1,135\]，支持大小写字母和数字。 **取值范围**： 长度\[1,135\]，支持大小写字母和数字。 **默认取值**： 不涉及 |
| tool_type             | 是    | String                                                         | **参数解释**： 作业依赖的组件类型，支持app和workflow。 **约束限制**： 不涉及 **取值范围**： - app：应用类型 - workflow：流程类型 **默认取值**： 不涉及                                                                                        |
| tasks                 | 否    | Array of [JobTaskDto] objects | **参数解释**： 作业子任务列表。 **约束限制**： 最多支持设置64个子任务。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                                                      |
| io_acc_id             | 否    | String                                                         | **参数解释**： 作业使用的IO加速实例ID，不填表示不使用。 **约束限制**： 不涉及 **取值范围**： 长度\[0,128\]，支持字母、数字、下划线和中划线。 **默认取值**： 不涉及                                                                                         |
| io_acc_expected_usage | 否    | Integer                                                        | **参数解释**： 作业使用的SFS-Turbo实例预期占用存储量，单位G，用于投递作业时评估当前加速实例余量是否充足。 **约束限制**： 不涉及 **取值范围**： 长度\[0,327680\]。 **默认取值**： 不涉及                                                                          |
| node_labels           | 否    | Array of strings                                               | **参数解释**： 节点标签。 **约束限制**： 取值范围\[0,1\]，单个标签最大长度63字符。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                                             |
   
 表4JobTaskDto 
| 参数          | 是否必选 | 参数类型                                                                       | 描述                                                                                                                    |
|:---|:---|:---|:---|
| task_name   | 是    | String                                                                     | **参数解释**： 子任务实际名称。 **约束限制**： 不涉及 **取值范围**： 长度\[1,32\]，只能以大小写字母开头，由大小写字母、数字、中划线（-）、下划线（_）组成，以大小写字符或数字结尾。 **默认取值**： 不涉及 |
| inputs      | 否    | Array of [TaskParameterDto] objects | **参数解释**： 任务的输入参数信息。 **约束限制**： 最多支持128个参数。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                |
| outputs     | 否    | Array of [TaskParameterDto] objects | **参数解释**： 任务的输出参数信息。 **约束限制**： 最多支持128个参数。 **取值范围**： 不涉及 **默认取值**： 不涉及                                                |
| resources   | 否    | [TaskResourceDto] object             | **参数解释**： 应用申请资源。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及                                                           |
| output_dir  | 否    | String                                                                     | **参数解释**： 子任务结果存储目录，默认为空。 **约束限制**： 不涉及 **取值范围**： 长度\[0,128\]。 **默认取值**： 不涉及                                          |
| io_acc_type | 否    | String                                                                     | **参数解释**： 子任务使用的IO加速实例类型，不填表示不使用。 **约束限制**： 不涉及 **取值范围**： - SFS：SFS-Turbo加速类型 - EVS：EVS加速类型 **默认取值**： 不涉及             |
   
 表5TaskParameterDto 
| 参数     | 是否必选 | 参数类型             | 描述                                                                                                                             |
|:---|:---|:---|:---|
| name   | 是    | String           | **参数解释**： 子任务的参数名称。 **约束限制**： 不涉及 **取值范围**： 长度为\[1,32\]，以小写字母开头，允许出现中划线（-）、小写字母和数字，且必须以小写字母或数字结尾。需要和已有应用的参数名称一致。 **默认取值**： 不涉及 |
| source | 否    | String           | **参数解释**： 子任务的参数类型。 **约束限制**： 不涉及 **取值范围**： - MANUAL：手动填写参数。 - DATABASE：数据库来源参数。 **默认取值**： MANUAL                              |
| values | 否    | Array of strings | **参数解释**： 子任务的参数数值。 **约束限制**： 每个参数取值范围\[0,2048\]，最多支持设置128个参数。 **取值范围**： 不涉及 **默认取值**： 不涉及                                     |
   
 表6TaskResourceDto 
| 参数       | 是否必选 | 参数类型   | 描述                                                                                                                                               |
|:---|:---|:---|:---|
| cpu      | 否    | String | **参数解释**： cpu申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0.1-128\]，单位C，支持一位小数。对于应用，不填默认1C；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及 |
| cpu_type | 否    | String | **参数解释**： cpu架构类型。 **约束限制**： 不涉及 **取值范围**： 取值范围，支持X86\|ARM。 **默认取值**： X86。                                                                       |
| memory   | 否    | String | **参数解释**： 内存申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0.1-3072\]，单位G，支持一位小数。对于应用，不填默认1G；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及 |
| gpu_type | 否    | String | **参数解释**： gpu架构类型。 **约束限制**： 不涉及 **取值范围**： gpu架构类型，支持GPU\|Snt9。对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及                     |
| gpu      | 否    | String | **参数解释**： gpu申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0-16\]，仅支持整数。对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及                     |
   
#### 响应参数
**状态码：201**
表7响应Body参数 
| 参数                  | 参数类型                                                                | 描述                                                                    |
|:---|:---|:---|
| id                  | String                                                              | **参数解释**： 作业ID。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及             |
| max_platform_flavor | [TaskResourceDto] object     | **参数解释**： 平台节点最大规格。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及         |
| app_infos           | Array of [AppFilterDto] objects | **参数解释**： 不满足节点规格约束的应用列表信息。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
| job_info            | [JobFilterDto] object           | **参数解释**： 不满足节点标签约束的作业信息。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
   
 表8AppFilterDto 
| 参数              | 参数类型                                                            | 描述                                                          |
|:---|:---|:---|
| app_id          | String                                                          | **参数解释**： 应用ID。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| app_name        | String                                                          | **参数解释**： 应用名称。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| app_version     | String                                                          | **参数解释**： 应用版本。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| app_resource    | [TaskResourceDto] object | **参数解释**： 应用资源。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| app_node_labels | Array of strings                                                | **参数解释**： 计算节点标签。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
   
 表9TaskResourceDto 
| 参数       | 参数类型   | 描述                                                                                                                                               |
|:---|:---|:---|
| cpu      | String | **参数解释**： cpu申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0.1-128\]，单位C，支持一位小数。对于应用，不填默认1C；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及 |
| cpu_type | String | **参数解释**： cpu架构类型。 **约束限制**： 不涉及 **取值范围**： 取值范围，支持X86\|ARM。 **默认取值**： X86。                                                                       |
| memory   | String | **参数解释**： 内存申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0.1-3072\]，单位G，支持一位小数。对于应用，不填默认1G；对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及 |
| gpu_type | String | **参数解释**： gpu架构类型。 **约束限制**： 不涉及 **取值范围**： gpu架构类型，支持GPU\|Snt9。对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及                     |
| gpu      | String | **参数解释**： gpu申请使用量。 **约束限制**： 不涉及 **取值范围**： 取值范围\[0-16\]，仅支持整数。对于流程和作业，不填默认使用前一级的配置，填值会覆盖更新。覆盖关系：作业-\>流程-\>应用。 **默认取值**： 不涉及                     |
   
 表10JobFilterDto 
| 参数              | 参数类型             | 描述                                                          |
|:---|:---|:---|
| job_name        | String           | **参数解释**： 作业名称。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及   |
| job_node_labels | Array of strings | **参数解释**： 计算节点标签。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
   
#### 请求示例
启动作业，其中作业的名称为demo-job，作业使用IO加速类型为SFS。
```
https://{endpoint}/v1/{project_id}/eihealth-projects/{eihealth_project_id}/jobs
{
  "name" : "demo-job",
  "description" : "description",
  "labels" : [ "labelA", "labelB" ],
  "priority" : 0,
  "timeout" : 1440,
  "output_dir" : "/job",
  "tool_id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
  "tool_type" : "workflow",
  "tasks" : [ {
    "task_name" : "app1-1",
    "inputs" : [ {
      "name" : "dir-parameter",
      "values" : [ "test-project:/300M_NA12878_clean_1.fastq" ]
    } ],
    "outputs" : [ {
      "name" : "dir-parameter",
      "values" : [ "test-project:/output-dir/" ]
    } ],
    "io_acc_type" : "SFS",
    "resources" : {
      "cpu_type" : "X86",
      "cpu" : "1C",
      "memory" : "1G",
      "gpu_type" : "GPU",
      "gpu" : 0
    }
  } ]
}
```
#### 响应示例
**状态码：201**
CREATED
```
{
  "id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
  "app_infos" : [ {
    "app_id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1",
    "app_name" : "demo-app",
    "app_version" : "1.0.0",
    "app_node_labels" : [ "health.node" ]
  } ],
  "job_info" : {
    "job_name" : "demo-job",
    "job_node_labels" : [ "health.node" ]
  }
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 201 | CREATED |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ai4sservice/ErrorCode.html)。
