部署应用

调试

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

请求头

该接口使用公共请求头,无特殊请求头。请参见公共请求参数文档。

请求语法

POST /pop/v1/sam/app/deployApplication HTTPS|HTTP

请求参数

名称 类型 是否必选 示例值 描述
AppId String 017f39b8-dfa4-4e16-a84b-1dcee4b17106

需要部署的应用ID

Jdk String Open JDK 8

部署的包依赖的JDK版本。镜像不支持。

WebContainer String apache-tomcat-7.0.91

部署的包依赖的tomcat版本。镜像不支持。

PackageVersion String 1.0.1

部署的包的版本号,War FatJar类型必填。请自定义它的含义。

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

部署包地址。只有FatJar或War类型应用可以配置部署包地址。

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

镜像地址。只有Image类型应用可以配置镜像地址。

Command String sleep

镜像启动命令。该命令必须为容器内存在的可执行的对象。例如:sleep。设置该命令将导致镜像原本的启动命令失效。

CommandArgs String 1d

镜像启动命令参数。上述启动命令所需参数。例如: ["1d"]

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

容器环境变量参数。例如:[{"name":"envtmp","value":"0"}]

CustomHostAlias String [{"hostName":"samplehost","ip":"127.0.0.1"}]

容器内自定义host映射。例如: [{"hostName":"samplehost","ip":"127.0.0.1"}]

JarStartOptions String custom-option

Jar包启动应用选项。应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

JarStartArgs String custom-args

Jar包启动应用参数。应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

Liveness String {"exec":{"command":["sleep","5s"]},"initialDelaySeconds":10,"timeoutSeconds":11}

容器健康检查,健康检查失败的容器将被杀死并恢复。目前仅支持容器内下发命令的方式。{"exec":{"command":["sleep","5s"]},"initialDelaySeconds":10,"timeoutSeconds":11}

Readiness String {"exec":{"command":["sleep","6s"]},"initialDelaySeconds":15,"timeoutSeconds":12}

应用启动状态检查,多次健康检查失败的容器将被杀死并重启。不通过健康检查的容器将不会有SLB流量进入。例如:{"exec":{"command":["sleep","6s"]},"initialDelaySeconds":15,"timeoutSeconds":12}

MinReadyInstances Integer 1

最小可用实例数。任何变更都尽量不会违背这个设置,保证业务稳定性。

BatchWaitTime Integer 10

分批等待时间,单位秒。

EdasContainerVersion String 3.5.3

EDAS pandora应用使用的运行环境。

UpdateStrategy String {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}

部署策略

  • 例1(灰度1台+后续分2批+自动分批+分批间隔1分钟):{"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}
  • 例2(灰度1台+后续分2批+手动分批):{"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"manual"},"grayUpdate":{"gray":1}}
  • 例3(分2批+自动分批+分批间隔0分钟):{"type":"BatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":0}}
SlsConfigs String [{"logDir":"/root/logs/spas/spas_sdk.log"},{"logDir":"/root/logs/hsf/hsf.log"}]

日志收集目录配置。 需配置日志文件的绝对路径,日志文件名支持通配,多个日志以数组形式排列。例如:{"logDir":"/root/logs/spas/spas_sdk.log"},{"logDir":"/root/logs/hsf/hsf.log"}。 多次部署时如果日志采集配置没有修改,可以不传入这个参数。当没有传入这个参数时,SAE会保持上次设置的日志采集配置。

Timezone String Asia/Shanghai

时区

NasId String 10d3b4bc97

nas文件系统的id

MountHost String 10d3b4bc97xxx.com

nas在应用vpc内的挂载点

MountDesc String [{MountPath: "/tmp", NasPath: "/"}]

nas挂载描述

PostStart String ["/bin/sh","-c","echo hello"]

容器启动后钩子,在容器被创建后立刻触发执行,通知容器它已经被创建。

PreStop String ["/bin/sh","-c","echo hello"]

容器停止前钩子,在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。

ChangeOrderDesc String 启动应用

发布单描述信息

WarStartOptions String -Dxxx=xxx

war包部署应用时的jvm参数,非必填

返回数据

名称 类型 示例值 描述
Code String 200

接口状态或 POP 错误码

Data Struct

返回结果

AppId String 017f39b8-dfa4-4e16-a84b-1dcee4b17106

应用ID。

ChangeOrderId String 01db03d3-3ee9-48b3-b3d0-dfce2d88ab31

返回的发布单ID,用于查询任务执行状态。

ErrorCode String success

错误码

Message String success

附加信息

RequestId String 00000000-0000-0000-0000-000000000000

请求ID

Success Boolean true

是否成功

TraceId String 00000000-0000-0000-0000-000000000000

调用链ID

示例

请求示例

POST /pop/v1/sam/app/deployApplication HTTP/1.1
公共请求头

正常返回示例

XML 格式

<DeployApplication>
	  <Data>
		    <ChangeOrderId>01db03d3-3ee9-48b3-b3d0-dfce2d88ab31</ChangeOrderId>
            <AppId>017f39b8-dfa4-4e16-a84b-1dcee4b17106</AppId>
      </Data>
	  <Message>success</Message>
	  <RequestId>00000000-0000-0000-0000-000000000000</RequestId>
	  <TraceId>000000000000000000000000000000</TraceId>
	  <Success>true</Success>
	  <ErrorCode>success</ErrorCode>
	  <Code>200</Code>
</DeployApplication>

JSON 格式

{
    "Data": {
        "ChangeOrderId": "01db03d3-3ee9-48b3-b3d0-dfce2d88ab31",
        "AppId": "017f39b8-dfa4-4e16-a84b-1dcee4b17106"
    },
    "Message": "success",
    "RequestId": "00000000-0000-0000-0000-000000000000",
    "TraceId": "000000000000000000000000000000",
    "Success": true,
    "ErrorCode": "success",
    "Code": 200
}

错误码

HttpCode 错误码 错误信息 描述
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 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]。
404 InvalidNamespaceId.NotFound The specified NamespaceId does not exist. 指定的NamespaceId不存在。
400 InvalidPackageType.NotFound The package type must be War, FatJar, or Image. 包类型必须为War、Fatjar或Image
400 InvalidParameter.FileName The application deployment package name is invalid. This name can contain only alphanumeric characters, hyphens (-), and underscores (_). In addition, you can upload JAR files only if the selected deployment version supports JAR file. Otherwise, upload WAR files only. 应用部署程序包名称无效。名称只能包含字母、数字和特殊字符“-”“_”。另外,仅当选择的部署版本支持JAR部署时方可上传JAR包,否则只能上传WAR包。
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 NoComputeResourceQuota.Exceed Your compute resource is insufficient. Please submit a ticket to raise the quota. 计算资源不足,请提交工单增加计算资源额度。
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. 日志服务配置个数超过配额限制,请提工单解决。
400 LogService.InternalError An exception occurred while calling Log Service. Please submit a ticket to solve the problem. 调用日志服务异常,请提工单解决。
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. 日志服务项目个数超过配额限制,请提工单解决。
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个实例,请提交工单增加计算资源额度。
400 NoComputeResourceQuota.User.Exceed Your account is limited to create %s instances. Please submit a ticket to raise the quota. 您的账户限额%s个实例,请提交工单增加计算资源额度。
400 System.Upgrading The system is being upgraded. Please try again later. 系统正在升级,请稍后操作
400 VolumnPath.Conflict Conflict between log collection directory and persistent storage directory. 日志采集目录与持久化存储目录冲突。

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