调用CreateApplication接口创建一个应用。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求头
该接口使用公共请求头,无特殊请求头。更多信息,请参见公共请求和返回头。
请求语法
POST /pop/v1/sam/app/createApplication HTTP/1.1
请求参数
名称 | 类型 | 位置 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|---|
AppName | String | Query | 是 | test |
应用名称。允许数字、字母以及短划线(-)组合。必须以字母开始,最大长度36个字符。 |
NamespaceId | String | Query | 否 | cn-beijing:test |
SAE命名空间ID。仅支持名称为小写字母加短划线(-)的命名空间,必须以字母开始。 命名空间可通过调用DescribeNamespaceList接口获取。 |
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 |
应用包类型。支持FatJar、War和Image。 |
PackageVersion | String | Query | 否 | 1.0.0 |
部署包的版本号。当Package Type为War和FatJar时必填。 |
PackageUrl | String | Query | 否 | http://myoss.oss-cn-hangzhou.aliyuncs.com/my-buc/2019-06-30/sae-test.jar |
部署包地址。只有FatJar或War类型的应用可以配置部署包地址。 |
ImageUrl | String | Query | 否 | registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1 |
镜像地址。只有Image类型的应用可以配置镜像地址。 |
Jdk | String | Query | 否 | Open JDK 8 |
部署包依赖的JDK版本。Image类型的应用不支持。 |
WebContainer | String | Query | 否 | apache-tomcat-7.0.91 |
部署包依赖的tomcat版本。Image类型的应用不支持。 |
Cpu | Integer | Query | 否 | 1000 |
每个实例所需的CPU,单位为毫核,不能为0。目前仅支持以下固定规格:
|
Memory | Integer | Query | 否 | 1024 |
每个实例所需的内存,单位为MB,不能为0。与CPU为一一对应关系,目前仅支持以下固定规格:
|
Replicas | Integer | Query | 是 | 1 |
初始实例数。 |
Command | String | Query | 否 | sleep |
镜像启动命令。该命令必须为容器内存在的可执行的对象。例如:sleep。设置该命令将导致镜像原本的启动命令失效。 |
CommandArgs | String | Query | 否 | 1d |
镜像启动命令参数。上述启动命令所需参数。例如:1d |
Envs | String | Query | 否 | [{"name":"envtmp","value":"0"}] |
容器环境变量参数。例如: [{"name":"envtmp","value":"0"}] |
CustomHostAlias | String | Query | 否 | [{"hostName":"samplehost","ip":"127.0.0.1"}] |
容器内自定义host映射。例如: [{"hostName":"samplehost","ip":"127.0.0.1"}] |
JarStartOptions | String | Query | 否 | -Xms4G -Xmx4G |
JAR包启动应用选项。应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs |
JarStartArgs | String | Query | 否 | custom-args |
JAR包启动应用参数。应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs |
Liveness | String | Query | 否 | {"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2} |
容器健康检查,健康检查失败的容器将被关闭并恢复。目前仅支持容器内下发命令的方式。例如:{"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2}
|
Readiness | String | Query | 否 | {"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2} |
应用启动状态检查,多次健康检查失败的容器将被关闭并重启。不通过健康检查的容器将不会有SLB流量进入。例如:{"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2}
|
Deploy | Boolean | Query | 否 | true |
是否立即部署。取值说明如下:
|
EdasContainerVersion | String | Query | 否 | 3.5.3 |
Pandora应用使用的运行环境。 |
Timezone | String | Query | 否 | Asia/Shanghai |
时区默认为Asia/Shanghai。 |
SlsConfigs | String | Query | 否 | [{\"logDir\":\"/root/logs/hsf.log\"}] |
文件日志采集配置。
|
NasId | String | Query | 否 | KSAK**** |
挂载的NAS的ID,必须与集群处在同一个地域。它必须有可用的挂载点创建额度,或者其挂载点已经在VPC内的交换机上。如果不填,且存在mountDescs字段,则默认将自动购买一个NAS并挂载至VPC内的交换机上。 |
MountHost | String | Query | 否 | example.com |
NAS在应用VPC内的挂载点。 |
MountDesc | String | Query | 否 | [{MountPath: "/tmp", NasPath: "/"}] |
挂载描述。 |
PreStop | String | Query | 否 | {"exec":{"command":["cat","/etc/group"]}} |
停止前执行脚本,格式如:{"exec":{"command":["cat","/etc/group"]}} |
PostStart | String | Query | 否 | {"exec":{"command":["cat","/etc/group"]}} |
启动后执行脚本,格式如:{"exec":{"command":["cat","/etc/group"]}} |
WarStartOptions | String | Query | 否 | custom-option |
WAR包启动应用选项。应用默认启动命令:java $JAVA_OPTS $CATALINA_OPTS [-Options] org.apache.catalina.startup.Bootstrap "$@" start |
ConfigMapMountDesc | String | FormData | 否 | [{"configMapId":16,"key":"test","mountPath":"/tmp"}] |
ConfigMap挂载描述。 |
SecurityGroupId | String | Query | 否 | sg-wz969ngg2e49q5i4**** |
安全组ID。 |
AutoConfig | Boolean | Query | 否 | true |
是否自动配置网络环境。取值说明如下:
|
TerminationGracePeriodSeconds | Integer | Query | 否 | 30 |
优雅下线超时时间,默认为30,单位为秒。取值范围为1~60。 |
PhpArmsConfigLocation | String | Query | 否 | /usr/local/etc/php/conf.d/arms.ini |
PHP应用监控挂载路径,需要您保证PHP服务器一定会加载这个路径的配置文件。 您无需关注配置内容,SAE会自动渲染正确的配置文件。 |
PhpConfigLocation | String | Query | 否 | /usr/local/etc/php/php.ini |
PHP应用启动配置挂载路径,需要您保证PHP服务器会使用这个配置文件启动。 |
PhpConfig | String | FormData | 否 | k1=v1 |
PHP配置文件内容。 |
TomcatConfig | String | Query | 否 | {"useDefaultConfig":false,"contextInputType":"custom","contextPath":"hello","httpPort":8088,"maxThreads":400,"uriEncoding":"UTF-8","useBodyEncoding":true,"useAdvancedServerXml":false} |
Tomcat文件配置,设置为""或"{}"表示删除配置:
|
AcrAssumeRoleArn | String | Query | 否 | acs:ram::123456789012****:role/adminrole |
跨账号拉取镜像时所需的RAM角色的ARN。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 91F93257-7A4A-4BD3-9A7E-2F6EAE6D**** |
请求ID。 |
Message | String | success |
调用结果的附加信息。 |
TraceId | String | 0a98a02315955564772843261e**** |
调用链ID,用于精确查询调用信息。 |
Data | object |
返回结果。 |
|
ChangeOrderId | String | 01db03d3-3ee9-48b3-b3d0-dfce2d88**** |
返回的发布单ID,用于查询任务执行状态。 |
AppId | String | 017f39b8-dfa4-4e16-a84b-1dcee4b1**** |
创建成功的应用ID。 |
ErrorCode | String | success |
错误码。 |
Code | String | 200 |
接口状态或POP错误码。
|
Success | Boolean | true |
创建应用是否成功。取值说明如下:
|
示例
请求示例
POST /pop/v1/sam/app/createApplication?AppName=test&NamespaceId=cn-beijing:test&AppDescription=This is a test description.&VpcId=vpc-bp1aevy8sofi8mh1q****&VSwitchId=vsw-bp12mw1f8k3jgygk9****&PackageType=FatJar&PackageVersion=1.0.0&PackageUrl=http://myoss.oss-cn-hangzhou.aliyuncs.com/my-buc/2019-06-30/sae-test.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=1&Command=sleep&CommandArgs=1d&Envs=[{"name":"envtmp","value":"0"}]&CustomHostAlias=[{"hostName":"samplehost","ip":"127.0.0.1"}]&JarStartOptions=-Xms4G -Xmx4G&JarStartArgs=custom-args&Liveness={"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2}&Readiness={"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2}&Deploy=true&EdasContainerVersion=3.5.3&Timezone=Asia/Shanghai&SlsConfigs=[{\"logDir\":\"/root/logs/hsf.log\"}]&NasId=KSAK****&MountHost=example.com&MountDesc=[{MountPath: "/tmp", NasPath: "/"}]&PreStop={"exec":{"command":["cat","/etc/group"]}}&PostStart={"exec":{"command":["cat","/etc/group"]}}&WarStartOptions=custom-option&SecurityGroupId=sg-wz969ngg2e49q5i4****&AutoConfig=true&TerminationGracePeriodSeconds=30&PhpArmsConfigLocation=/usr/local/etc/php/conf.d/arms.ini&PhpConfigLocation=/usr/local/etc/php/php.ini&TomcatConfig={"useDefaultConfig":false,"contextInputType":"custom","contextPath":"hello","httpPort":8088,"maxThreads":400,"uriEncoding":"UTF-8","useBodyEncoding":true,"useAdvancedServerXml":false}&AcrAssumeRoleArn=acs:ram::123456789012****:role/adminrole HTTP/1.1
Host:sae.aliyuncs.com
Content-Type:application/json
ConfigMapMountDesc=[{"configMapId":16,"key":"test","mountPath":"/tmp"}]&PhpConfig=k1=v1
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<CreateApplicationResponse>
<RequestId>91F93257-7A4A-4BD3-9A7E-2F6EAE6D****</RequestId>
<Message>success</Message>
<TraceId>0a98a02315955564772843261e****</TraceId>
<Data>
<ChangeOrderId>01db03d3-3ee9-48b3-b3d0-dfce2d88****</ChangeOrderId>
<AppId>017f39b8-dfa4-4e16-a84b-1dcee4b1****</AppId>
</Data>
<ErrorCode>success</ErrorCode>
<Code>200</Code>
<Success>true</Success>
</CreateApplicationResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "91F93257-7A4A-4BD3-9A7E-2F6EAE6D****",
"Message" : "success",
"TraceId" : "0a98a02315955564772843261e****",
"Data" : {
"ChangeOrderId" : "01db03d3-3ee9-48b3-b3d0-dfce2d88****",
"AppId" : "017f39b8-dfa4-4e16-a84b-1dcee4b1****"
},
"ErrorCode" : "success",
"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.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 | JarApplication.MissingJdk | A FatJar application must contain JDK. | FatJAR类型应用必须包含JDK。 |
400 | NoAvailableCluster.NotFound | No clusters are available for the current region. | 当前地域没有可用集群。 |
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 | 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. | 日志服务配置个数超过配额限制,请提工单解决。 |
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 | vswitch.not.exist | The specified VSwitch does not exist. | VSwitch不存在,请更换VSwitch。 |
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. | 日志采集目录与持久化存储目录冲突。 |
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,不存在 |
404 | InvalidNamespaceId.NotFound | The specified NamespaceId does not exist. | 指定的NamespaceId不存在。 |
404 | InvalidVpcId.NotFound | The specified VpcId does not exist. | 指定的VpcId不存在。 |
访问错误中心查看更多错误码。