CreateJob
调用CreateJob接口创建任务模板。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求头
该接口使用公共请求头,无特殊请求头。更多信息,请参见公共请求和返回头。
请求语法
POST /pop/v1/sam/job/createJob HTTP/1.1
请求参数
名称 |
类型 |
位置 |
是否必选 |
示例值 |
描述 |
AppName | String | Query | 是 | test | 任务模板名称。允许数字、字母以及短划线(-)组合。必须以字母开始,不超过36个字符。 |
NamespaceId | String | Query | 否 | cn-beijing:test | SAE命名空间ID。仅支持名称为小写字母加短划线(-)的命名空间,必须以字母开始。 |
AppDescription | String | Query | 否 | This is a test description. | 任务模板描述信息。不超过1024个字符。 |
VpcId | String | Query | 否 | vpc-bp1aevy8sofi8mh1q**** | SAE命名空间对应的VPC。在SAE中,一个命名空间只能对应一个VPC,且不能修改。第一次在命名空间内创建SAE任务模板将形成绑定关系。多个命名空间可以对应一个VPC。不填则默认为命名空间绑定的VPC ID。 |
VSwitchId | String | Query | 否 | vsw-bp12mw1f8k3jgygk9**** | 任务实例弹性网卡所在的虚拟交换机。该交换机必须位于上述VPC内。该交换机与SAE命名空间同样存在绑定关系。不填则默认为命名空间绑定的vSwitch ID。 |
PackageType | String | Query | 是 | FatJar | 任务包类型。取值说明如下:
|
PackageVersion | String | Query | 否 | 1.0.1 | 部署包的版本号。当Package Type为FatJar、War或PythonZip时必填。 |
PackageUrl | String | Query | 否 | http://myoss.oss-cn-hangzhou.aliyuncs.com/my-buc/2019-06-30/****.jar | 部署包地址。当Package Type为FatJar、War或PythonZip时必填。 |
ImageUrl | String | Query | 否 | registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1 | 镜像地址。当Package Type为Image时必填。 |
Jdk | String | Query | 否 | Open JDK 8 | 部署包依赖的JDK版本。支持版本如下:
当Package Type为Image时不支持。 |
WebContainer | String | Query | 否 | apache-tomcat-7.0.91 | 部署包依赖的Tomcat版本。支持版本如下:
当Package Type为Image时不支持。 |
Cpu | Integer | Query | 否 | 1000 | 每个实例所需的CPU,单位为毫核,不能为0。目前仅支持以下固定规格:
|
Memory | Integer | Query | 否 | 1024 | 每个实例所需的内存,单位为MB,不能为0。与CPU为一一对应关系,目前仅支持以下固定规格:
|
Replicas | Integer | Query | 是 | 3 | 任务并发实例数。 |
Command | String | Query | 否 | echo | 镜像启动命令。该命令必须为容器内存在的可执行的对象。示例如下:
根据上述示例,则 |
CommandArgs | String | Query | 否 | ["a","b"] | 镜像启动命令参数。上述启动命令Command所需参数。格式如下: ["a","b"]
在上述示例中, |
Envs | String | Query | 否 | [{"name":"envtmp","value":"0"}] | 容器环境变量参数。支持自定义或引用配置项。如需引用配置项,请先创建ConfigMap实例。更多信息,请参见CreateConfigMap。取值说明如下:
|
CustomHostAlias | String | Query | 否 | [{"hostName":"samplehost","ip":"127.0.0.1"}] | 容器内自定义Host映射。取值说明如下:
|
JarStartOptions | String | Query | 否 | custom-option | JAR包启动任务选项。任务默认启动命令: |
JarStartArgs | String | Query | 否 | -Xms4G -Xmx4G | JAR包启动任务参数。任务默认启动命令: |
EdasContainerVersion | String | Query | 否 | 3.5.3 | HSF框架中任务运行环境版本,例如Ali-Tomcat容器。 |
Timezone | String | Query | 否 | Asia/Shanghai | 时区,默认为Asia/Shanghai。 |
SlsConfigs | String | Query | 否 | [{"logDir":"","logType":"stdout"},{"logDir":"/tmp/a.log"}] | 日志采集到SLS的配置。
参数说明如下:
多次部署时如果SLS采集配置没有变更,则不需要设置该参数(即请求中无需包含SlsConfigs字段);如果不再需要使用SLS采集功能,您需要在请求中将该字段的值设置为空字符串(即请求中SlsConfigs字段的值为"")。 说明 随任务模板自动创建的Project会随着任务模板删除而删除,因此在选择已有Project时,不能选择SAE自动创建的Project。 |
NasId | String | Query | 否 | 10d3b4**** | NAS文件系统的ID。部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含NasId字段);如果需要清除NAS配置,您需要在请求中将该字段的值设置为空字符串(即请求中NasId字段的值为"")。 |
MountHost | String | Query | 否 | 10d3b4bc9****.com | NAS在任务模板VPC内的挂载点。部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含MountHost字段);如果需要清除NAS配置,您需要在请求中将该字段的值设置为空字符串(即请求中MountHost字段的值为"")。 |
MountDesc | String | Query | 否 | [{mountPath: "/tmp", nasPath: "/"}] | NAS挂载描述。部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含MountDesc字段);如果需要清除NAS配置,您需要在请求中将该字段的值设置为空字符串(即请求中MountDesc字段的值为"")。 |
PreStop | String | Query | 否 | {"exec":{"command":["sh","-c","echo hello"]}} | 容器停止前执行脚本。在容器被删除前触发执行一段脚本,格式如: |
PostStart | String | Query | 否 | {"exec":{"command":["sh","-c","echo hello"]}} | 容器启动后执行脚本。在容器被创建后立刻触发执行一段脚本,格式如: |
WarStartOptions | String | Query | 否 | CATALINA_OPTS=\"$CATALINA_OPTS $Options\" catalina.sh run | 设置WAR包部署任务的启动命令,操作步骤与镜像部署的启动命令配置操作相同。更多信息,请参见设置启动命令。 |
ConfigMapMountDesc | String | FormData | 否 | [{"configMapId":16,"key":"test","mountPath":"/tmp"}] | ConfigMap挂载描述。使用在命名空间配置项页面创建的配置项来向容器中注入配置信息。参数说明如下:
说明 可通过传递 sae-sys-configmap-all 参数挂载所有键。
|
SecurityGroupId | String | Query | 否 | sg-wz969ngg2e49q5i4**** | 安全组ID。 |
AutoConfig | Boolean | Query | 否 | false | 是否自动配置网络环境。取值说明如下:
|
TerminationGracePeriodSeconds | Integer | Query | 否 | 10 | 优雅下线超时时间,默认为30,单位为秒。取值范围为1~300。 |
PhpConfigLocation | String | Query | 否 | /usr/local/etc/php/php.ini | PHP任务启动配置挂载路径,需要您保证PHP服务器会使用这个配置文件启动。 |
PhpConfig | String | FormData | 否 | k1=v1 | PHP配置文件内容。 |
TomcatConfig | String | Query | 否 | {"port":8080,"contextPath":"/","maxThreads":400,"uriEncoding":"ISO-8859-1","useBodyEncodingForUri":true} | Tomcat文件配置,设置为""或"{}"表示删除配置。取值说明如下:
|
OssMountDescs | String | FormData | 否 | [{"bucketName": "oss-bucket", "bucketPath": "data/user.data", "mountPath": "/usr/data/user.data", "readOnly": true}] | OSS挂载描述信息。参数说明如下:
|
OssAkId | String | FormData | 否 | xxxxxx | OSS读写的AccessKey ID。 |
OssAkSecret | String | FormData | 否 | xxxxxx | OSS读写的AccessKey Secret。 |
AcrInstanceId | String | FormData | 否 | cri-xxxxxx | ACR企业版实例ID。当ImageUrl为容器镜像服务企业版时必填。 |
AcrAssumeRoleArn | String | Query | 否 | acs:ram::123456789012****:role/adminrole | 跨账号拉取镜像时所需的RAM角色的ARN。更多信息,请参见通过RAM角色实现跨云账号授权。 |
ImagePullSecrets | String | Query | 否 | 10 | 对应保密字典ID。 |
EnableImageAccl | Boolean | FormData | 否 | false | 是否开启镜像加速。取值说明如下:
|
Workload | String | Query | 是 | job | Workload需指定为 |
TriggerConfig | String | Query | 否 | {"type":"time","config":"0 1 */1 * ?","timezone":"GMT+8:00"} | 任务触发配置,根据任务类型进行配置。
|
ConcurrencyPolicy | String | Query | 否 | Allow | 任务并发策略。取值说明如下:
|
Timeout | Long | Query | 否 | 3600 | 任务超时时间,单位为秒。 |
BackoffLimit | Long | Query | 否 | 3 | 任务重试次数。 |
Slice | Boolean | Query | 否 | true | 启用任务分片。 |
SliceEnvs | String | Query | 否 | [0,1,2] | 任务分片参数。 |
RefAppId | String | Query | 否 | 7171a6ca-d1cd-4928-8642-7d5cfe69**** | 引用的任务目标ID。 |
ProgrammingLanguage | String | Query | 否 | java | 程序编程语言。支持java、php、python和shell。 |
Python | String | Query | 否 | PYTHON 3.9.15 | Python环境。支持PYTHON 3.9.15。 |
PythonModules | String | Query | 否 | Flask==2.0 | 自定义安装模块依赖。默认安装根目录下requirements.txt定义的依赖项。如果未配置或自定义软件包,可以指定安装的依赖。 |
返回数据
名称 |
类型 |
示例值 |
描述 |
RequestId | String | 01CF26C7-00A3-4AA6-BA76-7E95F2A3*** | 请求ID。 |
Message | String | success | 附加信息。取值说明如下:
|
TraceId | String | ac1a0b2215622246421415014e**** | 调用链ID,用于精确查询调用信息。 |
Data | Object | 返回结果。 |
|
ChangeOrderId | String | 01db03d3-3ee9-48b3-b3d0-dfce2d88**** | 返回的发布单ID,用于查询任务执行状态。 |
AppId | String | 7171a6ca-d1cd-4928-8642-7d5cfe69**** | 任务模板ID。 |
ErrorCode | String | 空 | 错误码。取值说明如下:
|
Code | String | 200 | 接口状态或POP错误码。取值说明如下:
|
Success | Boolean | true | 创建任务模板是否成功。取值说明如下:
|
示例
请求示例
POST /pop/v1/sam/job/createJob?AppName=test&NamespaceId=cn-beijing:test&AppDescription=This is a test description.&VpcId=vpc-bp1aevy8sofi8mh1q****&VSwitchId=vsw-bp12mw1f8k3jgygk9****&PackageType=FatJar&PackageVersion=1.0.1&PackageUrl=http://myoss.oss-cn-hangzhou.aliyuncs.com/my-buc/2019-06-30/****.jar&ImageUrl=registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1&Jdk=Open JDK 8&WebContainer=apache-tomcat-7.0.91&Cpu=1000&Memory=1024&Replicas=3&Command=echo&CommandArgs=["a","b"]&Envs=[{"name":"envtmp","value":"0"}]&CustomHostAlias=[{"hostName":"samplehost","ip":"127.0.0.1"}]&JarStartOptions=custom-option&JarStartArgs=-Xms4G -Xmx4G&EdasContainerVersion=3.5.3&Timezone=Asia/Shanghai&SlsConfigs=[{"logDir":"","logType":"stdout"},{"logDir":"/tmp/a.log"}]&NasId=10d3b4****&MountHost=10d3b4bc9****.com&MountDesc=[{mountPath: "/tmp", nasPath: "/"}]&PreStop={"exec":{"command":["sh","-c","echo hello"]}}&PostStart={"exec":{"command":["sh","-c","echo hello"]}}&WarStartOptions=CATALINA_OPTS=\"$CATALINA_OPTS $Options\" catalina.sh run&SecurityGroupId=sg-wz969ngg2e49q5i4****&AutoConfig=false&TerminationGracePeriodSeconds=10&PhpConfigLocation=/usr/local/etc/php/php.ini&TomcatConfig={"port":8080,"contextPath":"/","maxThreads":400,"uriEncoding":"ISO-8859-1","useBodyEncodingForUri":true}&AcrAssumeRoleArn=acs:ram::123456789012****:role/adminrole&ImagePullSecrets=10&Workload=job&TriggerConfig={"type":"time","config":"0 1 */1 * ?","timezone":"GMT+8:00"}&ConcurrencyPolicy=Allow&Timeout=3600&BackoffLimit=3&Slice=true&SliceEnvs=[0,1,2]&RefAppId=7171a6ca-d1cd-4928-8642-7d5cfe69****&ProgrammingLanguage=java&Python=PYTHON 3.9.15&PythonModules=Flask==2.0 HTTP/1.1
Host:sae.aliyuncs.com
Content-Type:application/json
ConfigMapMountDesc=[{"configMapId":16,"key":"test","mountPath":"/tmp"}]&PhpConfig=k1=v1&OssMountDescs=[{"bucketName": "oss-bucket", "bucketPath": "data/user.data", "mountPath": "/usr/data/user.data", "readOnly": true}]&OssAkId=xxxxxx&OssAkSecret=xxxxxx&AcrInstanceId=cri-xxxxxx&EnableImageAccl=false
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<UpdateJobResponse>
<RequestId>01CF26C7-00A3-4AA6-BA76-7E95F2A3***</RequestId>
<Message>success</Message>
<TraceId>ac1a0b2215622246421415014e****</TraceId>
<Data>
<ChangeOrderId>01db03d3-3ee9-48b3-b3d0-dfce2d88****</ChangeOrderId>
<AppId>7171a6ca-d1cd-4928-8642-7d5cfe69****</AppId>
</Data>
<Code>200</Code>
<Success>true</Success>
</UpdateJobResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "01CF26C7-00A3-4AA6-BA76-7E95F2A3***",
"Message" : "success",
"TraceId" : "ac1a0b2215622246421415014e****",
"Data" : {
"ChangeOrderId" : "01db03d3-3ee9-48b3-b3d0-dfce2d88****",
"AppId" : "7171a6ca-d1cd-4928-8642-7d5cfe69****"
},
"Code" : "200",
"Success" : true
}
错误码
HttpCode |
错误码 |
错误信息 |
描述 |
400 | Application.MissingJdk | Your application must at least contain a JDK component. | 应用必须至少包含JDK组件。 |
400 | InvalidPackageType.NotFound | The package type must be War, FatJar, or Image. | 包类型必须为WAR、FatJAR或Image。 |
400 | InvalidParameter.NotEmpty | You must specify the parameter %s. | 不合法的参数:%s不能为空。 |
400 | InvalidParameter.Obviously | The specified parameter is invalid {%s}. | 不合法的参数{%s}。 |
400 | JarApplication.MissingJdk | A FatJar application must contain JDK. | FatJar类型应用必须包含JDK。 |
400 | NoAvailableCluster.NotFound | No clusters are available for the current region. | 当前地域没有可用集群。 |
400 | PandoraApplication.MissingJdk | The Pandora application is missing a JDK component. | Pandora应用缺少JDK组件。 |
400 | PandoraApplication.OnlyJdk | A Pandora application only requires JDK component. | Pandora应用只需要JDK组件。 |
400 | InvalidParameter.WithMessage | The parameter is invalid {%s}: %s | 不合法的参数{%s}:%s。 |
400 | InvalidComponent.NotFound | The current component (such as JDK, Tomcat, or EDASWebContainer) does not exist. | 找不到当前组件(JDK、Tomcat、EDASWebContainer等)。 |
400 | InvalidHostnameIp.Invalid | The hostname and/or IP is invalid: Hostname [%s], IP [%s]. | 主机名或IP不合法:主机名[%s],IP[%s]。 |
400 | InvalidInstanceSpecification.Unsupported | The instance specification is not supported: CPU [%s], memory [%s]. | 不支持的实例规格。CPU[%s],Memory[%s]。 |
400 | InvalidServerlessRegion.Unsupported | The current region is not supported: %s | 不支持当前地域:%s。 |
400 | WarApplication.MissingJdkWebcontainer | A War application must contain JDK and Tomcat. | WAR类型应用必须包含JDK和Tomcat。 |
400 | InvalidNamespace.WithUppercase | This namespace does not support creating SAE apps because it contains uppercase letters. | 命名空间不支持创建SAE应用,因为它带有大写字母。 |
400 | LogService.ConfigQuotaExceed | The maximum number of Log Service configs is exceeded. | 日志服务配置个数超过配额限制,请加入钉群32874633联系技术产品专家进行咨询。 |
400 | LogService.InternalError | An exception occurred while calling Log Service. Please submit a ticket to solve the problem. | 调用日志服务异常,请加入钉群32874633联系技术产品专家进行咨询。 |
400 | LogService.LogDirInvalid | The log collection path is invalid. | 日志采集路径不合法。 |
400 | LogService.NotAvailable | Log Service is unavailable. Please activate Log Service first. | 日志服务不可用,请先开通日志服务。 |
400 | LogService.ProjectNumQuotaExceed | The maximum number of Log Service projects is exceeded. | 日志服务项目个数超过配额限制,请加入钉群32874633联系技术产品专家进行咨询。 |
400 | user.indebt | The user has an outstanding payment. | 当前用户处于欠费状态。 |
400 | NoComputeResourceQuota.App.Exceed | You can create %s instances for each application. Please submit a ticket to raise the quota. | 每个应用只允许创建%s个实例,请加入钉群32874633联系技术产品专家进行咨询。 |
400 | NoComputeResourceQuota.User.Exceed | Your account is limited to create %s instances. Please submit a ticket to raise the quota. | 您的账户限额%s个实例,请加入钉群32874633联系技术产品专家进行咨询。 |
400 | System.Upgrading | The system is being upgraded. Please try again later. | 系统正在升级,请稍后操作。 |
400 | VolumnPath.Conflict | Conflict between log collection directory and persistent storage directory. | 日志采集目录与持久化存储目录冲突。 |
400 | MountConflict.ConfigMap | Conflict detected for ConfigMap path %s. | ConfigMap挂载路径%s存在冲突。 |
400 | NotFound.ConfigMap | The ConfigMap object (ID: %s) does not exist. | 找不到ConfigMap对象(ID=%s)。 |
400 | NotFound.ConfigMapKey | The key %s of ConfigMap object (ID: %s) does not exist. | 找不到ConfigMap对象(ID=%s)的Key %s。 |
400 | Sls.Config.Mixed.Multi.Project | The specified Config contains multiple projects. | 您输入的SLS Config中指定了多个Project。 |
400 | Sls.Config.User.Defined.Missing.Logstore.Info | The specified Config is invalid. Both Project and Logstore must be specified. | 您输入的SLS Config为自定义SLS配置,但是只有Project配置,缺失Logstore配置。 |
400 | Sls.Config.User.Defined.Missing.Project.Info | The specified Config is invalid. Both Project and Logstore must be specified. | 您输入的SLS Config为自定义SLS配置,但是只有Logstore配置,缺失Project配置。 |
400 | Sls.Logstore.Name.Invalid | The specified name of Logstore is invalid. The Logstore name must not contain the prefix "sae-". | 您输入的SLS Logstore名称不合法,前缀包含了"sae-",会与SAE自动创建的Logstore混淆。 |
400 | Sls.Logstore.User.Defined.Not.Exist | The user defined Logstore does not exist. | 您输入的自建Logstore不存在。 |
400 | Sls.Project.Name.Invalid | The specified project name is invalid. The project name must not contain the prefix "sae-". | 您输入的SLS Project名称不合法,前缀包含了"sae-",会与SAE自动创建的Project混淆。 |
400 | Sls.Project.User.Defined.Not.Exist | The user defined project does not exist. | 您输入的自建Project不存在。 |
400 | InvalidImageUrl.AcrInstanceId.Domain.NotMatch | The specified domain of ImageUrl does not match AcrInstanceId domains. | 指定的镜像地址 ImageUrl 域名与 AcrInstanceId 域名不匹配。 |
400 | PhpApplication.MissingPhpRuntime | A PHP application must contain PHP Runtime. | PHP类型应用必须包含PHP运行时。 |
404 | Associate.Eip.Not.Enough | No sufficient EIPs are available. | 绑定EIP时,EIP不足,需要您购买。 |
404 | InvalidNamespaceId.NotFound | The specified NamespaceId does not exist. | 指定的NamespaceId不存在。 |
404 | InvalidVpcId.NotFound | The specified VpcId does not exist. | 指定的VpcId不存在。 |
404 | InvalidAcrInstanceId.NotFound | The specified AcrInstanceId does not exist. | 指定的 AcrInstanceId 不存在。 |
访问错误中心查看更多错误码。