调用UpdateJob接口更新任务模板。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求头

该接口使用公共请求头,无特殊请求头。更多信息,请参见公共请求和返回头

请求语法

POST /pop/v1/sam/job/updateJob HTTP/1.1

请求参数

名称 类型 位置 是否必选 示例值 描述
AppId String Query 7171a6ca-d1cd-4928-8642-7d5cfe69****

需要更新的任务模板ID。

Jdk String Query Open JDK 8

部署包依赖的JDK版本。支持版本如下:

  • Open JDK 8
  • Open JDK 7
  • Dragonwell 11
  • Dragonwell 8
  • openjdk-8u191-jdk-alpine3.9
  • openjdk-7u201-jdk-alpine3.9

Package TypeImage时不支持。

WebContainer String Query apache-tomcat-7.0.91

部署包依赖的Tomcat版本。支持版本如下:

  • apache-tomcat-7.0.91
  • apache-tomcat-8.5.42

Package TypeImage时不支持。

PackageVersion String Query 1.0.1

部署包的版本号。当Package TypeFatJarWarPythonZip时必填。

PackageUrl String Query http://myoss.oss-cn-hangzhou.aliyuncs.com/my-buc/2019-06-30/****.jar

部署包地址。当Package TypeFatJarWarPythonZip时必填。

ImageUrl String Query registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1

镜像地址。当Package TypeImage时必填。

Command String Query echo

镜像启动命令。该命令必须为容器内存在的可执行的对象。示例如下:


command:
      - echo
      - abc
      - >
      - file0

根据上述示例,则Command="echo", CommandArgs=["abc", ">", "file0"]

CommandArgs String Query ["a","b"]

镜像启动命令参数。上述启动命令Command所需参数。格式如下:

["a","b"]

在上述示例中,CommandArgs=["abc", ">", "file0"],其中["abc", ">", "file0"]需要转成String类型,里面的格式为JSON数组。如果无此参数,则无需填写。

Envs String Query [{"name":"envtmp","value":"0"}]

容器环境变量参数。支持自定义或引用配置项。如需引用配置项,请先创建ConfigMap实例。更多信息,请参见CreateConfigMap。取值说明如下:

  • 自定义配置
    • name:环境变量名称。
    • value:环境变量值。
  • 引用配置项
    • name:环境变量名称。支持引用单个或全部键,如果引用全部键,需输入sae-sys-configmap-all-<配置项名称>,例如sae-sys-configmap-all-test1
    • valueFrom:环境变量引用。取值为configMapRef
    • configMapId:配置项ID。
    • key:键。如果引用全部健值,则不设置该字段。
CustomHostAlias String Query [{"hostName":"samplehost","ip":"127.0.0.1"}]

容器内自定义Host映射。取值说明如下:

  • hostName:域名或主机名。
  • ip:IP地址。
JarStartOptions String Query custom-option

JAR包启动任务选项。任务默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

JarStartArgs String Query -Xms4G -Xmx4G

JAR包启动任务参数。任务默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

EdasContainerVersion String Query 3.5.3

HSF框架中任务运行环境版本,例如Ali-Tomcat容器。

SlsConfigs String Query [{"logDir":"","logType":"stdout"},{"logDir":"/tmp/a.log"}]

日志采集到SLS的配置。

  • 使用SAE自动创建的SLS资源:[{"logDir":"","logType":"stdout"},{"logDir":"/tmp/a.log"}]
  • 使用自定义的SLS资源:[{"projectName":"test-sls","logType":"stdout","logDir":"","logstoreName":"sae","logtailName":""},{"projectName":"test","logDir":"/tmp/a.log","logstoreName":"sae","logtailName":""}]

参数说明如下:

  • projectName:配置SLS上的Project名称。
  • logDir:日志路径。
  • logType:日志类型。stdout表示容器标准输出日志,仅可设置1条;如果不设置,则表示收集文件日志。
  • logstoreName:配置SLS上的Logstore名称。
  • logtailName:配置SLS上的Logtail名称,如果不指定,则表示新建Logtail。

多次部署时如果SLS采集配置没有变更,则不需要设置该参数(即请求中无需包含SlsConfigs字段);如果不再需要使用SLS采集功能,您需要在请求中将该字段的值设置为空字符串(即请求中SlsConfigs字段的值为"")。

说明 随任务模板自动创建的Project会随着任务模板删除而删除,因此在选择已有Project时,不能选择SAE自动创建的Project。
Timezone String Query Asia/Shanghai

时区,默认为Asia/Shanghai

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字段的值为"")。

PostStart String Query {"exec":{"command":["sh","-c","echo hello"]}}

容器启动后执行脚本。在容器被创建后立刻触发执行一段脚本,格式如:{"exec":{"command":["sh","-c","echo hello"]}}

PreStop String Query {"exec":{"command":["sh","-c","echo hello"]}}

容器停止前执行脚本。在容器被删除前触发执行一段脚本,格式如:{"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参数挂载所有键。
  • mountPath:挂载路径。
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文件配置,设置为""或"{}"表示删除配置。取值说明如下:

  • port:端口范围为1024~65535,小于1024的端口需要Root权限才能操作。因为容器配置的是Admin权限,所以请填写大于1024的端口。如果不配置,则默认为8080。
  • contextPath:访问路径,默认为根目录"/"。
  • maxThreads:配置连接池的连接数大小,默认大小为400。
  • uriEncoding:Tomcat的编码格式,包括UTF-8ISO-8859-1GBK和GB2312。如果不设置,则默认为ISO-8859-1
  • useBodyEncoding:是否使用BodyEncoding for URL,默认为true
OssMountDescs String FormData [{"bucketName": "oss-bucket", "bucketPath": "data/user.data", "mountPath": "/usr/data/user.data", "readOnly": true}]

OSS挂载描述信息。参数说明如下:

  • bucketName:Bucket名称。
  • bucketPath:您在OSS创建的目录或OSS对象,如果OSS挂载目录不存在,会触发异常。
  • mountPath:您在SAE的容器路径。如果路径已存在,为覆盖关系;如果路径不存在,会新建。
  • readOnly:容器路径是否对挂载目录资源有可读权限,取值说明如下:
    • true:只读权限。
    • false:读写权限。
OssAkId String FormData xxxxxx

OSS读写的AccessKey ID。

OssAkSecret String FormData xxxxxx

OSS读写的AccessKey Secret。

Php String FormData cri-xxxxxx

ACR企业版实例ID。

AcrInstanceId String FormData cri-xxxxxx

ACR企业版实例ID。当ImageUrl为容器镜像服务企业版时必填。

AcrAssumeRoleArn String Query acs:ram::123456789012****:role/adminrole

跨账号拉取镜像时所需的RAM角色的ARN。更多信息,请参见通过RAM角色实现跨云账号授权

ImagePullSecrets String Query 10

对应保密字典ID。

TriggerConfig String Query {"type":"time","config":"0 1 */1 * ?","timezone":"GMT+8:00"}

任务触发配置,根据任务类型进行配置。

  • 定时任务type字段设为time,config字段为具体Cron表达式,timezone字段为指定时区。

    配置示例:{"type":"time","config":"0 1 */1 * ?","timezone":"GMT+8:00"}

  • 一次性任务type字段设为http,config配置具体的HTTP触发规则。更多信息,请参见请求参数SourceHttpEventParameters

    配置示例:{"type":"http","config":{"type":"HTTPS","method"、["GET"],"ip":[],"referer":[],"securityConfig":"none"}}

ConcurrencyPolicy String Query Allow

任务并发策略。取值说明如下:

  • Forbid:禁止并发运行,在前一个任务未完成时,不创建新任务。
  • Allow:允许并发运行任务。
  • Replace:当到达新任务创建时间点,而前一个任务未完成时,新的任务会取代前一个任务。
Timeout Long Query 3600

任务超时时间,单位为秒。

BackoffLimit Long Query 3

任务重试次数。

Slice Boolean Query true

启用任务分片。

SliceEnvs String Query [0,1,2]

任务分片参数。

Replicas String Query 3

任务并发实例数。

RefAppId String Query 7171a6ca-d1cd-4928-8642-7d5cfe69****

引用的任务目标ID。

ProgrammingLanguage String Query java

程序编程语言。支持javaphppythonshell

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

附加信息。取值说明如下:

  • 请求正常,返回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

错误码。取值说明如下:

  • 请求成功:不返回ErrorCode字段。
  • 请求失败:返回ErrorCode字段。具体信息,请参见本文的错误码列表。
Code String 200

接口状态或POP错误码。取值说明如下:

  • 2xx:成功。
  • 3xx:重定向。
  • 4xx:请求错误。
  • 5xx:服务器错误。
Success Boolean true

更新任务模板是否成功。取值说明如下:

  • true:更新成功。
  • false:更新失败。

示例

请求示例

POST /pop/v1/sam/job/updateJob?AppId=7171a6ca-d1cd-4928-8642-7d5cfe69****&ImageUrl=registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1

正常返回示例

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 InvalidApplication.NotFound The current application does not exist. 找不到当前应用。
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 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 InvalidParameter.WithMessage The parameter is invalid {%s}: %s 不合法的参数{%s}:%s。
400 JarApplication.MissingJdk A FatJar application must contain JDK. FatJar类型应用必须包含JDK。
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 WarApplication.MissingJdkWebcontainer A War application must contain JDK and Tomcat. WAR类型应用必须包含JDK和Tomcat。
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 Application.ChangerOrderRunning An application change process is in progress. Please try again later. 应用有变更流程正在执行,请稍后重试。
400 Application.InvalidStatus The application status is abnormal. Please try again later. 应用状态异常,请稍后重试。
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 Package.Version.Too.Long The maximum length of package version is exceeded. 应用部署包版本号长度超过限制。
400 App.Package.Version.Exists The package version of application already exists. 应用部署包版本号已经存在。
400 Slb.Occupied The SLB instance is occupied. SLB实例被占用。
400 Slb.Tag.Not.Qualified The current SLB instance cannot be reused because it may have been occupied by %s. SLB实例正在被%s使用,不建议复用。
400 MinReadyInstances.Not.Smaller.Replicas The minimum number of available instances must be less than the number of application instances. 最小可用实例数必须小于应用实例数。
400 BatchWaitTime.Not.Smaller.Zero BatchWaitTime must not be smaller than zero. 分批间隔时间必须大于零。
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 Sae.Errorcode.Ahas.Create.Error.Message Failed to create AHAS. 创建AHAS失败。
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 InvalidNamespaceId.NotFound The specified NamespaceId does not exist. 指定的NamespaceId不存在。
404 InvalidAcrInstanceId.NotFound The specified AcrInstanceId does not exist. 指定的 AcrInstanceId 不存在。
404 Associate.Eip.Not.Enough No sufficient EIPs are available. 绑定EIP时,EIP不足,需要您购买。

访问错误中心查看更多错误码。