创建(提交)一个DAG类型的作业。

描述

请求语法样例

POST /jobs

{
  "Name": "testJob",
  "Description": "BatchCompute demo job",
  "JobFailOnInstanceFail": true,
  "Priority": 1,
  "Type": "DAG",
  "AutoRelease": false,
  "Notification": {
        "Topic": {
            "Name": "test-topic",
            "Endpoint": "http://[UserId].mns.[Region].aliyuncs.com/",
            "Events": [
                    "OnJobWaiting",
                    "OnJobRunning",
                    "OnJobStopped",
                    "OnJobFinished",
                    "OnJobFailed",
                    "OnTaskWaiting",
                    "OnTaskRunning",
                    "OnTaskStopped",
                    "OnTaskFinished",
                    "OnTaskFailed",
                    "OnInstanceWaiting",
                    "OnInstanceRunning",
                    "OnInstanceStopped",
                    "OnInstanceFinished",
                    "OnInstanceFailed",
                    "OnPriorityChange"
                ]
        }
   },
  "DAG": {
    "Dependencies": {},
    "Tasks": {
      "taskA": {
        "AutoCluster": {
          "Configs": {
            "Disks": {
              "DataDisk": {
                "MountPoint": "/home/mydisk/",
                "Size": 0,
                "Type": "ephemeral"
              },
              "SystemDisk": {
                "Size": 40,
                "Type": "ephemeral"
              }
            },
            "Mounts": {
               "Entries": [
                   {
                       "Destination": "/home/admin/mount-dest",
                       "Source": "oss://your-bucket/mount-source",
                       "WriteSupport": false
                    }
                ],
                "Locale": "GBK",
                "Lock": false,
                "CacheSupport": true,
                "NAS": {
                    "AccessGroup": [
                        "group1",
                        "group2"
                    ],
                    "FileSystem": [
                        "filesystem1",
                        "filesystem2"
                    ]
                },
                "OSS": {
                    "AccessKeyId": "",
                    "AccessKeySecret": "",
                    "AccessSecurityToken": ""
                }
             },
             "Networks": {
                 "Classic": {
                     "AllowIpAddress": [],
                     "AllowIpAddressEgress": [],
                     "AllowSecurityGroup": [],
                     "AllowSecurityGroupEgress": []
                 },
                 "VPC": {
                     "CidrBlock": "192.168.0.0/16"
                 }
             }
          },
          "ECSImageId": "",
          "ImageId": "img-ubuntu",
          "InstanceType": "bcs.a2.large",
          "ResourceType": "OnDemand",
          "SpotStrategy": "SpotAsPriceGo",
          "SpotPriceLimit": 0.0,
          "UserData": {},
          "ReserveOnFail": false
        },
        "ClusterId": "cls-6kir9pdp3lg6220g418002",
        "InputMapping": {
          "oss://bucket/tmp/": "/home/mount1/"
        },
        "InstanceCount": 1,
        "LogMapping": {},
        "MaxRetryCount": 0,
        "OutputMapping": {
          "/home/mount1": "oss://bucket/tmp/"
        },
        "Mounts": {
            "Entries": [
                {
                    "Destination": "/home/admin/mount-dest",
                    "Source": "oss://your-bucket/mount-source",
                    "WriteSupport": false
                }
            ],
            "Locale": "GBK",
            "Lock": false,
            "NAS": {
            "AccessGroup": [
                "group1",
                "group2"
            ],
            "FileSystem": [
                "filesystem1",
                "filesystem2"
            ]
            },
            "OSS": {
                "AccessKeyId": "",
                "AccessKeySecret": "",
                "AccessSecurityToken": ""
            }
        },
        "Parameters": {
          "Command": {
            "CommandLine": "python worker.py",
            "EnvVars": {},
            "PackagePath": "oss://bucket/tests/worker.tar.gz"
          },
          "InputMappingConfig": {
            "Locale": "GBK",
            "Lock": false
          },
          "StderrRedirectPath": "oss://bucket/tests/logs/",
          "StdoutRedirectPath": "oss://bucket/tests/logs/"
        },
        "Timeout": 172800,
      }
    }
  }
}

属性说明

属性名称类型是否必须描述
Namestring作业名称。
Descriptionstring作业的描述信息。
Priorityint作业优先级,范围0-1000,数值越高,优先级越高。
Typestring目前仅支持有向无环图(directed acycline graph,DAG)形式描述任务。
JobFailOnInstanceFailbool取值为true表示Instance失败会导致Job失败。
AutoReleasebool取值为true表示Job运行成功后系统会自动删除改Job。默认false。
Notificationobject消息通知配置,用户指定消息事件Notification
DAGobjectDAG描述。
Tasksobject任务描述。
Parametersobject任务参数详情。
Commandobject用户程序相关命令行参数。
CommandLinestring执行用户程序的命令。CommandLine不等同于SHELL,仅支持“解释器 + 脚本”方式,比如“python test.py”或“sh test.sh”
PackagePathstring用户程序所在OSS路径。
EnvVarsstring设置用户程序执行时的环境变量。
InputMappingConfigobjectNFS挂载服务配置项。
LocalestringOSS object挂载到本地时使用的字符集。可选范围包括GBK、GB2312-80、BIG5、ANSI、EUC-JP、EUC-TW、EUC-KR、SHIFT-JIS、KSC5601等。
LockboolNFS挂载服务是否支持网络文件锁。
StdoutRedirectPathstring标准输出的OSS路径。
StderrRedirectPathstring标准错误的OSS路径。
InputMappingobjectOSS对本地路径映射。
OutputMappingobject本地路径对OSS映射。
LogMappingobject本地日志路径对OSS映射。OSS是目录,以斜杠结尾。OSS日志名称格式:{本地日志名}.{作业ID}.{任务ID}.{实例ID},比如output_log.job-0000000056A6E991000001780000000D.Echo.0
Timeoutint实例最长执行时间。
InstanceCountint实例数量。
MaxRetryCountint最大重试次数,默认为0。
ClusterIdstring集群标识符。该参数与AutoCluster(匿名集群)必须选择一个
AutoClusterobject匿名集群。Auto集群描述,AutoCluster和ClusterId必须一个是有效的,而且只能有一个是有效的。
Dependenciesobject描述任务之间依赖关系的object结构,其中key为源任务名称,value为目标任务名称列表,可以描述一对多的顺序关系。

AutoCluster

属性名称类型是否必须描述
ImageIdstringBatchCompute镜像的ID
ECSImageIdstringECS镜像的ID,必须取值为合法的ECS镜像ID。ECSImageId和ImageId必须只能一个取合法的值,另外一个必须为空。
InstanceTypestring构建集群的实例类型。目前支持的ECS实例类型
ResourceTypestring资源类型。支持“OnDemand(按需资源)”,“Spot(竞价型资源)”。
SpotStrategyString实例的竞价策略,只有在ResourceType为Spot的情况下有效。取值范围:SpotWithPriceLimit:设置上限价格的竞价实例;SpotAsPriceGo:系统自动出价,最高按量付费价格。
SpotPriceLimitFloat实例的每小时最高价格(每个实例规格的价格而非每核小时的价格)。支持最大 3 位小数,SpotStrategy 为 SpotWithPriceLimit 生效。
UserDataobject一个KeyValue映射,用户自定义的信息,使用ECS的metaserver获取。
Configsobject集群的一些配置信息,比如实例的磁盘配置,由Configs描述。
ReserveOnFailBool任务失败时不释放相关的虚拟机,会继续收取这些资源的费用直到用户删除作业,默认为False,仅用于调查问题。
DependencyIsvServicestring执行程序依赖的阿里云提供的ISV服务,目前提供的ISV服务有:“GTX”,默认为””,不依赖任何ISV服务。

返回信息

返回成功

返回201状态码以及Job的id,如下。

{
    "Id":"job-xxx"
}

属性说明

属性名称类型是否必须描述
Idstring作业标识符。

错误信息

状态码错误码错误信息语义
400IdempotentTokenMismatchSpecified idempotent token mismatch.说明该token已经被使用过,并且该请求参数与之前的请求不一样。
400InvalidJsonFormatThe request body has an invalid json format.请求body是一个非法的JSON格式。
400InvalidHttpBodySpecified parameter HttpBody is not valid. Its type must be object.http body必须是一个object。
400MissingNameName is mandatory for this action.缺少Name参数。
400InvalidNameSpecified parameter Name is not valid. Its type must be string.Name必须是一个string。
400InvalidNameSpecified parameter Name is not valid. Its length must be in [1, 64].Name的长度必须在1与64之间。
400InvalidNameSpecified parameter Name is not valid. It must only contain characters within [a-zA-Z0-9_-], and must not start with [0-9].Name中只能包括字母数字和_-,但不能以数字开头。
400InvalidDescriptionSpecified parameter Description is not valid. Its type must be string.Description必须是一个string。
400InvalidDescriptionSpecified parameter Description is not valid. Its length must be in [0, 1024].Description的长度必须在0与1024之间。
400InvalidPrioritySpecified parameter Priority is not valid. Its type must be integer.Priority必须是一个integer。
400InvalidPrioritySpecified parameter Priority is not valid. It must be in [0, 1000].Priority的大小必须在0与1000之间。
400InvalidJobFailOnInstanceFailSpecified parameter JobFailOnInstanceFail is not valid. Its type must be boolean.JobFailOnInstanceFail必须是一个布尔类型。
400MissingTypeType is mandatory for this action.缺少Type参数。
400InvalidTypeSpecified parameter Type is not valid.Type参数取值不合法。
400MissingDAGDAG is mandatory for this action.缺少DAG参数。
400InvalidDAGSpecified parameter DAG is not valid. Its type must be object.DAG必须是一个object。
400MissingTasksTasks is mandatory for this action.缺少Tasks参数。
400InvalidTasksSpecified parameter Tasks is not valid. Its type must be object.Tasks必须是一个object。
400InvalidTasksSpecified parameter Tasks is not valid. Its size must be in [1, 16].UserData的大小必须在1与16之间。
400InvalidTasks.{key}Specified parameter Tasks.{key} is not valid. Its length must be in [1, 64].Tasks.{key}的大小必须在1与64之间。
400InvalidTasks.{key}Specified parameter Tasks.{key} is not valid. It must only contain characters within [a-zA-Z0-9_-], and must not start with [0-9]..Tasks.{key}中只能包括字母数字和_-,但不能以数字开头。
403QuotaExhausted.MaxJobCountThe MaxJobCount ({value}) quota is exhausted.Job数量不能超过{value}。
403QuotaExhausted.MaxJobTaskCountThe MaxJobTaskCount ({value}) quota is exhausted.一个Job中的Task的数量不能超过{value}。
403QuotaExhausted.MaxTaskInstanceCountThe MaxTaskInstanceCount ({value}) quota is exhausted.一个Task的InstanceCount不能超过{value}。
403QuotaExhausted.MaxInstanceTimeoutThe MaxInstanceTimeout ({value}) quota is exhausted.一个Instance的Timeout不能超过{value}。
400MissingParametersParameters is mandatory for this action.缺少Parameters参数。
400InvalidParametersSpecified parameter Parameters is not valid. Its type must be object.Parameters必须是一个object。
400MissingCommandCommand is mandatory for this action.缺少Command参数。
400InvalidCommandSpecified parameter Command is not valid. Its type must be object.Command必须是一个object。
400MissingCommandLineCommandLine is mandatory for this action.缺少CommandLine参数。
400InvalidCommandLineSpecified parameter CommandLine is not valid. Its type must be string.CommandLine必须是一个string。
400InvalidCommandLineSpecified parameter CommandLine is not valid. Its length must be in [0, 1024].CommandLine的长度必须在0与1024之间。
400InvalidPackagePathSpecified parameter PackagePath is not valid. Its type must be string.PackagePath必须是一个string。
400InvalidPackagePathSpecified parameter PackagePath is not valid. Its length must be in [0, 1024].PackagePath的长度必须在0与1024之间。
400InvalidPackagePathSpecified parameter PackagePath is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.PackagePath必须是一个合法的OSS路径。
400InvalidEnvVarsSpecified parameter EnvVars is not valid. Its type must be object.EnvVars必须是一个object。
400InvalidEnvVarsSpecified parameter EnvVars is not valid. Its size must be in [0, 64].EnvVars的大小必须在0与64之间。
400InvalidEnvVars.{key}Specified parameter EnvVars.{key} is not valid. Its length must be in [1, 128].EnvVars.{key}的大小必须在1与128之间。
400InvalidEnvVars.{key}.valueSpecified parameter EnvVars.{key}.value is not valid. Its type must be string.EnvVars.{key}对应的Value必须是一个string。
400InvalidEnvVars.{key}.valueSpecified parameter EnvVars.{key}.value is not valid. Its length must be in [0, 1024].EnvVars.{key}对应的value的长度必须在0与1024之间。
400InvalidInputMappingConfigSpecified parameter InputMappingConfig is not valid. Its type must be object.InputMappingConfig必须是一个object。
400InvalidLocaleSpecified parameter Locale is not valid.Locale参数取值不合法。
400InvalidLockSpecified parameter Lock is not valid. Its type must be boolean.Lock必须是一个布尔类型。
400InvalidStdoutRedirectPathSpecified parameter StdoutRedirectPath is not valid. Its type must be string.StdoutRedirectPath必须是一个string。
400InvalidStdoutRedirectPathSpecified parameter StdoutRedirectPath is not valid. Its length must be in [0, 1024].StdoutRedirectPath的长度必须在0与1024之间。
400InvalidStdoutRedirectPathSpecified parameter StdoutRedirectPath is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.StdoutRedirectPath必须是一个合法的OSS路径。
400InvalidStderrRedirectPathSpecified parameter StderrRedirectPath is not valid. Its type must be string.StderrRedirectPath必须是一个string。
400InvalidStderrRedirectPathSpecified parameter StderrRedirectPath is not valid. Its length must be in [0, 1024].StderrRedirectPath的长度必须在0与1024之间。
400InvalidStderrRedirectPathSpecified parameter StderrRedirectPath is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.StderrRedirectPath必须是一个合法的OSS路径。
400InvalidInputMappingSpecified parameter InputMapping is not valid. Its type must be object.InputMapping必须是一个object。
400InvalidInputMappingSpecified parameter InputMapping is not valid. Its size must be in [0, 16].InputMapping的Key的个数必须在0与16之间。
400InvalidInputMapping.{key}Specified parameter InputMapping.{key} is not valid. Its length must be in [1, 1024].InputMapping.{key}的大小必须在1与1024之间。
400InvalidInputMapping.{key}Specified parameter InputMapping.{key} is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.InputMapping.{key}必须是一个合法的OSS路径。
400InvalidInputMapping.{key}.valueSpecified parameter InputMapping.{key}.value is not valid. Its type must be string.InputMapping.{key}对应的Value必须是一个string。
400InvalidInputMapping.{key}.valueSpecified parameter InputMapping.{key}.value is not valid. Its length must be in [0, 1024].InputMapping.{key}对应的value的长度必须在0与1024之间。
400InvalidInputMapping.{key}.valueSpecified parameter InputMapping.{key}.value is not valid. Local path must be an absolute path on linux, and an drive letter on windows.InputMapping.{key}对应的value必须是一个合法的本地路径。
400InvalidOutputMappingSpecified parameter OutputMapping is not valid. Its type must be object.OutputMapping必须是一个object。
400InvalidOutputMappingSpecified parameter OutputMapping is not valid. Its size must be in [0, 16].OutputMapping的Key的个数必须在0与16之间。
400InvalidOutputMapping.{key}Specified parameter OutputMapping.{key} is not valid. Its length must be in [1, 1024].OutputMapping.{key}的大小必须在1与1024之间。
400InvalidOutputMapping.{key}Specified parameter OutputMapping.{key} is not valid. Local path must be an absolute path.OutputMapping.{key}必须是一个合法的本地路径。
400InvalidOutputMapping.{key}.valueSpecified parameter OutputMapping.{key}.value is not valid. Its type must be string.OutputMapping.{key}对应的Value必须是一个string
400InvalidOutputMapping.{key}.valueSpecified parameter OutputMapping.{key}.value is not valid. Its length must be in [0, 1024].OutputMapping.{key}对应的value的长度必须在0与1024之间。
400InvalidOutputMapping.{key}.valueSpecified parameter OutputMapping.{key}.value is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.OutputMapping.{key}对应的value的大小必须在1与1024之间。
400InvalidLogMappingSpecified parameter LogMapping is not valid. Its type must be object.LogMapping必须是一个object。
400InvalidLogMappingSpecified parameter LogMapping is not valid. Its size must be in [0, 16].LogMapping的Key的个数必须在0与16之间。
400InvalidLogMapping.{key}Specified parameter LogMapping.{key} is not valid. Its length must be in [1, 1024].LogMapping.{key}的大小必须在1与1024之间。
400InvalidLogMapping.{key}Specified parameter LogMapping.{key} is not valid. Local path must be an absolute path.LogMapping.{key}必须是一个合法的本地路径。
400InvalidLogMapping.{key}.valueSpecified parameter LogMapping.{key}.value is not valid. Its type must be string.LogMapping.{key}对应的Value必须是一个string。
400InvalidLogMapping.{key}.valueSpecified parameter LogMapping.{key}.value is not valid. Its length must be in [0, 1024].LogMapping.{key}对应的value的长度必须在0与1024之间。
400InvalidLogMapping.{key}.valueSpecified parameter LogMapping.{key}.value is not valid. OSS path must start with ‘oss://‘, must end with ‘/‘ if it is a folder, and must not end with ‘/‘ if it is a file.LogMapping.{key}对应的value的大小必须在1与1024之间。
400InvalidTimeoutSpecified parameter Timeout is not valid. Its type must be integer.Timeout必须是一个integer。
400MissingInstanceCountInstanceCount is mandatory for this action.缺少InstanceCount参数。
400InvalidInstanceCountSpecified parameter InstanceCount is not valid. Its type must be integer.InstanceCount必须是一个integer。
400InvalidMaxRetryCountSpecified parameter MaxRetryCount is not valid. Its type must be integer.MaxRetryCount必须是一个integer。
400MissingClusterIdClusterId is mandatory for this action.缺少ClusterId参数。
400InvalidClusterIdSpecified parameter ClusterId is not valid. Its type must be string.ClusterId必须是一个string。
400InvalidClusterIdSpecified parameter ClusterId is not valid. Its length must be in [1, 64].ClusterId的长度必须在1与64之间。
400InvalidClusterIdSpecified parameter ClusterId is not valid. It must only contain characters within [a-zA-Z0-9_-], and must not start with [0-9].ClusterId中只能包括字母数字和_-,但不能以数字开头。
400InvalidDependenciesSpecified parameter Dependencies is not valid. Its type must be object.Dependencies必须是一个object。
400InvalidDependencies.{key}.valueSpecified parameter Dependencies.{key}.value is not valid. Its type must be array.Dependencies.{key}对应的Value必须是一个array。
400Invalid{Parameter}Specified parameter {Parameter} is not valid.{Parameter}参数不合法。