创建一个应用。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
sae:CreateApplication | create | *全部资源 * |
| 无 |
请求语法
POST /pop/v1/sam/app/createApplication HTTP/1.1
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
AppName | string | 是 | 应用名称。允许数字、字母以及短划线(-)组合。必须以字母开始,不允许以短划线(-)结尾,不超过 36 个字符。 | test |
NamespaceId | string | 否 | SAE 命名空间 ID。仅支持名称为小写字母加短划线(-)的命名空间,必须以字母开始。 命名空间可通过调用 DescribeNamespaceList 接口获取。 | cn-beijing:test |
AppDescription | string | 否 | 应用描述信息。不超过 1024 个字符。 | This is a test description. |
VpcId | string | 否 | SAE 命名空间对应的 VPC。在 SAE 中,一个命名空间只能对应一个 VPC,且不能修改。第一次在命名空间内创建 SAE 应用将形成绑定关系。多个命名空间可以对应一个 VPC。不填则默认为命名空间绑定的 VPC ID。 | vpc-bp1aevy8sofi8mh1q**** |
VSwitchId | string | 否 | 应用实例弹性网卡所在的虚拟交换机。该交换机必须位于上述 VPC 内。该交换机与 SAE 命名空间同样存在绑定关系。不填则默认为命名空间绑定的 vSwitch ID。 | vsw-bp12mw1f8k3jgygk9**** |
PackageType | string | 是 | 应用包类型。取值说明如下:
| FatJar |
PackageVersion | string | 否 | 部署包的版本号。当Package Type为 FatJar、War 或 PythonZip 时必填。 | 1.0.0 |
PackageUrl | string | 否 | 部署包地址。当Package Type为 FatJar、War 或 PythonZip 时必填。 | http://myoss.oss-cn-****.aliyuncs.com/my-buc/2019-06-30/****.jar |
ImageUrl | string | 否 | 镜像地址。当Package Type为 Image 时必填。 | registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1 |
Jdk | string | 否 | 部署包依赖的 JDK 版本。支持版本如下:
当Package Type为 Image 时不支持。 | Open JDK 8 |
WebContainer | string | 否 | WebContainer 部署包依赖的 Tomcat 版本。支持版本如下:
当Package Type为 Image 时不支持。 | apache-tomcat-7.0.91 |
Cpu | integer | 否 | 每个实例所需的 CPU,单位为毫核,不能为 0。目前仅支持以下固定规格:
| 1000 |
Memory | integer | 否 | 每个实例所需的内存,单位为 MB,不能为 0。与 CPU 为一一对应关系,目前仅支持以下固定规格:
| 1024 |
Replicas | integer | 是 | 初始实例数。 | 1 |
Command | string | 否 | 镜像启动命令。该命令必须为容器内存在的可执行的对象。示例如下:
根据上述示例,则 | echo |
CommandArgs | string | 否 | 镜像启动命令参数。上述启动命令 Command 所需参数。格式如下:
在上述示例中, | ["a","b"] |
Envs | string | 否 | 容器环境变量参数。支持自定义或引用配置项。如需引用配置项,请先创建 ConfigMap 实例。更多信息,请参见 CreateConfigMap 。取值说明如下:
| [ { "name": "sae-sys-configmap-all-hello", "valueFrom": { "configMapRef": { "configMapId": 100, "key": "" } } }, { "name": "hello", "valueFrom": { "configMapRef": { "configMapId": 101, "key": "php-fpm" } } }, { "name": "envtmp", "value": "newenv" } ] |
CustomHostAlias | string | 否 | 容器内自定义 Host 映射。取值说明如下:
| [{"hostName":"samplehost","ip":"127.0.0.1"}] |
JarStartOptions | string | 否 | JAR 包启动应用选项。应用默认启动命令: | -Xms4G -Xmx4G |
JarStartArgs | string | 否 | JAR 包启动应用参数。应用默认启动命令: | custom-args |
Liveness | string | 否 | 容器健康检查,健康检查失败的容器将被关闭并恢复。支持方式如下:
说明
只能选择一种方式进行健康检查。
参数说明如下:
| {"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2} |
Readiness | string | 否 | 应用启动状态检查,多次健康检查失败的容器将被关闭并重启。不通过健康检查的容器将不会有 SLB 流量进入。支持 exec、httpGet 和 tcpSocket 方式。具体示例,请参见 Liveness 参数。 说明
只能选择一种方式进行健康检查。
| {"exec":{"command":["sh","-c","cat /home/admin/start.sh"]},"initialDelaySeconds":30,"periodSeconds":30,"timeoutSeconds":2} |
Deploy | boolean | 否 | 是否立即部署。取值说明如下:
| true |
EdasContainerVersion | string | 否 | HSF 框架中应用运行环境版本,例如 Ali-Tomcat 容器。 | 3.5.3 |
Timezone | string | 否 | 时区,默认为Asia/Shanghai。 | Asia/Shanghai |
SlsConfigs | string | 否 | 日志采集到 SLS 的配置。
参数说明如下:
多次部署时如果 SLS 采集配置没有变更,则不需要设置该参数(即请求中无需包含 SlsConfigs 字段);如果不再需要使用 SLS 采集功能,您需要在请求中将该字段的值设置为空字符串(即请求中 SlsConfigs 字段的值为"")。 说明
随应用自动创建的 Project 会随着应用删除而删除,因此在选择已有 Project 时,不能选择 SAE 自动创建的 Project。
| [{"logDir":"","logType":"stdout"},{"logDir":"/tmp/a.log"}] |
NasId | string | 否 | 不推荐配置该字段,推荐配置 NasConfigs。挂载的 NAS 的 ID,必须与集群处在同一个地域。它必须有可用的挂载点创建额度,或者其挂载点已经在 VPC 内的交换机上。如果不填,且存在 mountDescs 字段,则默认将自动购买一个 NAS 并挂载至 VPC 内的交换机上。 部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含 NASId 字段);如果需要清除 NAS 配置,您需要在请求中将该字段的值设置为空字符串(即请求中 NASId 字段的值为"")。 | KSAK**** |
MountHost | string | 否 | 不推荐配置该字段,推荐配置 NasConfigs。NAS 在应用 VPC 内的挂载点。部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含 MountHost 字段);如果需要清除 NAS 配置,您需要在请求中将该字段的值设置为空字符串(即请求中 MountHost 字段的值为"")。 | example.com |
MountDesc | string | 否 | 不推荐配置该字段,推荐配置 NasConfigs。NAS 挂载描述。部署时如果配置没有变更,则不需要设置该参数(即请求中无需包含 MountDesc 字段);如果需要清除 NAS 配置,您需要在请求中将该字段的值设置为空字符串(即请求中 MountDesc 字段的值为"")。 | [{mountPath: "/tmp", nasPath: "/"}] |
PreStop | string | 否 | 容器停止前执行脚本。在容器被删除前触发执行一段脚本,格式如: | {"exec":{"command":["cat","/etc/group"]}} |
PostStart | string | 否 | 容器启动后执行脚本。在容器被创建后立刻触发执行一段脚本,格式如: | {"exec":{"command":["cat","/etc/group"]}} |
WarStartOptions | string | 否 | 设置 WAR 包部署应用的启动命令,操作步骤与镜像部署的启动命令配置操作相同。更多信息,请参见设置启动命令。 | CATALINA_OPTS=\"$CATALINA_OPTS $Options\" catalina.sh run |
ConfigMapMountDesc | string | 否 | ConfigMap 挂载描述。使用在命名空间配置项页面创建的配置项来向容器中注入配置信息。参数说明如下:
说明
可通过传递 sae-sys-configmap-all 参数挂载所有键。
| [{"configMapId":16,"key":"test","mountPath":"/tmp"}] |
SecurityGroupId | string | 否 | 安全组 ID。 | sg-wz969ngg2e49q5i4**** |
AutoConfig | boolean | 否 | 是否自动配置网络环境。取值说明如下:
说明
如果选择为 true,则传其他的 NamespaceId 会被忽略。
| true |
TerminationGracePeriodSeconds | integer | 否 | 优雅下线超时时间,默认为 30,单位为秒。取值范围为 1~300。 | 30 |
PhpArmsConfigLocation | string | 否 | PHP 应用监控挂载路径,需要您保证 PHP 服务器一定会加载这个路径的配置文件。 您无需关注配置内容,SAE 会自动渲染正确的配置文件。 | /usr/local/etc/php/conf.d/arms.ini |
PhpConfigLocation | string | 否 | PHP 应用启动配置挂载路径,需要您保证 PHP 服务器会使用这个配置文件启动。 | /usr/local/etc/php/php.ini |
PhpConfig | string | 否 | PHP 配置文件内容。 | k1=v1 |
TomcatConfig | string | 否 | Tomcat 文件配置,设置为""或"{}"表示删除配置:
| {"port":8080,"contextPath":"/","maxThreads":400,"uriEncoding":"ISO-8859-1","useBodyEncodingForUri":true} |
OssMountDescs | string | 否 | OSS 挂载描述信息。参数说明如下:
| [{"bucketName": "oss-bucket", "bucketPath": "data/user.data", "mountPath": "/usr/data/user.data", "readOnly": true}] |
OssAkId | string | 否 | OSS 读写的 AccessKey ID。 | xxxxxx |
OssAkSecret | string | 否 | OSS 读写的 AccessKey Secret。 | xxxxxx |
Php | string | 否 | PHP 部署包依赖的 PHP 版本。镜像不支持。 | PHP-FPM 7.0 |
AcrInstanceId | string | 否 | 容器镜像服务 ACR 企业版实例 ID。当 ImageUrl 为容器镜像服务企业版时必填。 | cri-xxxxxx |
AcrAssumeRoleArn | string | 否 | 跨账号拉取镜像时所需的 RAM 角色的 ARN。更多信息,请参见通过 RAM 角色实现跨云账号授权。 | acs:ram::123456789012****:role/adminrole |
ImagePullSecrets | string | 否 | 对应保密字典 ID。 | 10 |
AssociateEip | boolean | 否 | 是否绑定 EIP。取值说明如下:
| true |
ProgrammingLanguage | string | 否 | 创建应用的技术栈语言。取值说明如下:
| java |
KafkaConfigs | string | 否 | 日志采集到 Kafka 的配置汇总信息。取值说明如下:
| {"kafkaEndpoint":"10.0.X.XXX:XXXX,10.0.X.XXX:XXXX,10.0.X.XXX:XXXX","kafkaInstanceId":"alikafka_pre-cn-7pp2l8kr****","kafkaConfigs":[{"logType":"file_log","logDir":"/tmp/a.log","kafkaTopic":"test2"},{"logType":"stdout","logDir":"","kafkaTopic":"test"}]} |
PvtzDiscoverySvc | string | 否 | 开启 K8s Service 服务注册发现。取值说明如下:
| {"serviceName":"bwm-poc-sc-gateway-cn-beijing-front","namespaceId":"cn-beijing:front","portAndProtocol":{"18012":"TCP"},"enable":true,"portProtocols":[{"port":18012,"protocol":"TCP"}]} |
MicroRegistration | string | 否 | 选择 Nacos 注册中心,取值说明如下:
| "0" |
MicroRegistrationConfig | string | 否 | 注册中心配置信息。 | {\"instanceId\":\"mse-cn-zvp2bh6h70r\",\"namespace\":\"4c0aa74f-57cb-423c-b6af-5d9f2d0e3dbd\"} |
NasConfigs | string | 否 | 挂载 NAS 的配置。取值说明如下:
| [{"mountPath":"/test1","readOnly":false,"nasId":"nasId1","mountDomain":"nasId1.cn-shenzhen.nas.aliyuncs.com","nasPath":"/test1"},{"nasId":"nasId2","mountDomain":"nasId2.cn-shenzhen.nas.aliyuncs.com","readOnly":false,"nasPath":"/test2","mountPath":"/test2"}] |
Python | string | 否 | Python 环境。支持PYTHON 3.9.15。 | PYTHON 3.9.15 |
PythonModules | string | 否 | 自定义安装模块依赖。默认安装根目录下 requirements.txt 定义的依赖项。如果未配置或自定义软件包,可以指定安装的依赖。 | Flask==2.0 |
Dotnet | string | 否 | .NET 框架的版本号:
| .NET 3.1 |
EnableEbpf | string | 否 | 基于 eBPF 技术,对非 Java 应用开启应用监控能力。取值说明如下:
| false |
SaeVersion | string | 否 | SAE 版本。支持版本如下:
| v1 |
AppSource | string | 否 | 选择 micro_service,即为微服务应用。 | micro_service |
BaseAppId | string | 否 | 基础应用 ID。 | ee99cce6-1c8e-4bfa-96c3-3e2fa9de8a41 |
ServiceTags | string | 否 | 应用配置的灰度标签 | {\"alicloud.service.tag\":\"g1\"} |
EnableNewArms | boolean | 否 | 是否启用新的 ARMS 功能:
| false |
返回参数
示例
正常返回示例
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": "空",
"Code": "200",
"Success": true
}
错误码
HTTP status code | 错误码 | 错误信息 | 描述 |
---|---|---|---|
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 | NoComputeResourceQuota.Exceed | Your compute resource is insufficient. Please contact us 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. | 日志服务配置个数超过配额限制,请加入钉群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运行时。 |
400 | InvalidParameter.FileName | The application deployment package name is invalid. This name can contain only alphanumeric characters, hyphens (-), and underscores (_). For deploying java package, you can upload JAR files only if the selected deployment version supports JAR file. Otherwise, upload WAR files only. For deploying php package, you can upload ZIP files only if the selected deployment version supports ZIP file. | 应用部署程序包名称无效。名称只能包含字母、数字和特殊字符“-”“_”。Java 软件包部署,仅当选择的部署版本支持JAR部署时方可上传JAR包,否则只能上传WAR包;PHP 软件包部署,仅当选择的部署版本支持ZIP部署时方可上传ZIP包 |
400 | Sls.Logtail.Name.Invalid | The specified name of Logtail is invalid. The Logtail name must not contain the prefix sae-. | 您输入的SLS Logtail名称不合法,前缀包含了"sae-",会与SAE自动创建的Logtail混淆。 |
400 | vswitch.not.exist | The specified vSwitch does not exist. | vSwitch不存在,请更换vSwitch。 |
400 | InvalidImageUrl.MissingAcrInstanceId | The specified domain of ImageUrl is from ACREE, but you are not specified AcrInstanceId. | 指定的镜像地址 ImageUrl 域名为容器镜像服务企业版 ACREE,但未指定实例 AcrInstanceId。 |
400 | EnvFromSecretIdConflict.AlreadyExist | The specified SecretId [%s] already exist in the specified Envs. | 指定的保密字典[%s]已经存在于环境变量中。 |
400 | MountConflict.Secret | Conflict detected for Secret path %s. | Secret挂载路径%s存在冲突。 |
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 不存在。 |
访问错误中心查看更多错误码。
变更历史
变更时间 | 变更内容概要 | 操作 |
---|---|---|
2024-12-17 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-12-10 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-11-08 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-10-11 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-09-12 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-08-28 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-05-21 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-01-22 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2023-10-24 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2023-06-07 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2023-03-30 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2022-08-02 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2021-11-17 | OpenAPI 错误码发生变更 | 查看变更详情 |