
# 创建组件实例
#### 功能介绍
此API用来创建组件实例。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=ServiceStage&api=CreateInstance)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v2/{project_id}/cas/applications/{application_id}/components/{component_id}/instances
表1路径参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                   |
|:---|:---|:---|:---|
| project_id     | 是    | String | 租户项目ID。获取方法，请参考[获取项目ID](https://support.huaweicloud.com/api-servicestage/servicestage_06_0164.html)。 |
| application_id | 是    | String | 应用ID。获取方法，请参考[获取所有应用](https://support.huaweicloud.com/api-servicestage/servicestage_06_0031.html)。   |
| component_id   | 是    | String | 组件ID。获取方法，请参考[获取应用所有组件](https://support.huaweicloud.com/api-servicestage/servicestage_06_0040.html)。 |
   
#### 请求消息
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                           |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 消息体的类型（格式），默认取值为"application/json;charset=utf8"。                                                                                             |
| X-Auth-Token | 是    | String | 调用接口的认证方式分为Token和AK/SK两种，如果您使用的Token方式，此参数为必填，请填写Token的值。Token获取方式，请参考[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)。 |
   
表3请求Body参数 
| 参数                | 是否必选 | 参数类型                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| name              | 是    | String                | 应用组件实例名称。 由小写英文字母、数字、中划线（-）组成，并以小写英文字母开头，小写英文字母或者数字结尾，长度为2\~63个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| environment_id    | 是    | String                | 环境ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| replica           | 是    | Integer               | 实例副本数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| flavor_id         | 是    | String                | 资源规格，可查询[获取所有支持的应用资源规格](https://support.huaweicloud.com/api-servicestage/servicestage_06_0021.html)接口获取系统预定义好的资源规格。 如需自定义资源规格，格式为：CUSTOM-xxG:xxm-xxm:xxGi-xxGi。其中： - xxG表示给组件实例分配的存储的大小，为保留字段，当前未生效，可以指定为一个固定的数字。  - xxm-xxm用于指定给组件实例分配的cpu最大核数和最小核数。  - xxGi-xxGi用于指定给组件实例分配的最大内存和最小内存。   例如，CUSTOM-10G:0.5m-0.25m:1.6Gi-0.8Gi，表示给组件实例分配的CPU核数最大为0.5核，最小为0.25核，分配的最大内存为1.6Gi，最小为0.8Gi。 |
| artifacts         | 是    | Map\<String, Object\> | 组件部署件。key为组件名，对于Docker多容器场景，key为容器名称。请参考[表21]。 当组件的[source参数](https://support.huaweicloud.com/api-servicestage/servicestage_06_0039.html#servicestage_06_0039__zh-cn_topic_0220056058_ref28944532)指定软件包来源时，该参数可以不选，默认继承组件的软件包来源。否则，该参数是必选项。                                                                                                                                                                                                                                                                                                                                                                                                        |
| version           | 是    | String                | 应用组件版本号，满足版本语义，如1.0.0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| configuration     | 否    | Object                | 配置参数，如设置环境变量，部署配置，运维监控等， 默认为空。请参考[表4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| description       | 否    | String                | 描述。 最大长度为128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| external_accesses | 否    | Array of objects      | 外网访问，请参考[表22]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| refer_resources   | 是    | Array of objects      | 部署资源，请参考[表23]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
 表4configuration 
| 参数             | 是否必选 | 参数类型             | 描述                                                          |
|:---|:---|:---|:---|
| env            | 否    | Array of objects | 环境变量，请参考[表5]。  |
| storage        | 否    | Array of objects | 数据存储配置，请参考[表6]。 |
| strategy       | 否    | Object           | 升级策略，请参考[表7]。     |
| lifecycle      | 否    | Object           | 生命周期，请参考[表8]。     |
| scheduler      | 否    | Object           | 调度策略，请参考[表9]。     |
| probes         | 否    | Object           | 健康检查，请参考[表10]。  |
| container_spec | 否    | Object           | 容器信息，请参考[表24]。  |
   
 表5environment 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                        |
|:---|:---|:---|:---|
| name  | 是    | String | 环境变量名。 由字母、数字、下划线、中划线或者点号组成，不能以数字开头，且长度为1\~64个字符。 |
| value | 是    | String | 环境变量值。                                                                                    |
   
 表6storage 
| 参数         | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| type       | 是    | String           | 存储类型，取值为： - HostPath：主机路径挂载  - EmptyDir：临时路径挂载  - ConfigMap：配置项挂载  - Secret：密钥挂载  - PersistentVolumeClaim：云存储挂载   |
| parameters | 是    | Object           | 存储的参数，请参考[表19]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| mounts     | 是    | Array of objects | 挂载到容器的目录，请参考[表20]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表7strategy 
| 参数      | 是否必选 | 参数类型   | 描述                                                            |
|:---|:---|:---|:---|
| upgrade | 否    | String | 升级策略，默认为RollingUpdate。取值为Recreate和RollingUpdate，分别为替换升级和滚动升级。 |
   
 表8lifecycle 
| 参数         | 是否必选 | 参数类型   | 描述                                                         |
|:---|:---|:---|:---|
| entrypoint | 否    | Object | 启动命令，请参考[表16]。 |
| post-start | 否    | Object | 启动后处理，请参考[表17]。  |
| pre-stop   | 否    | Object | 停止前处理，请参考[表17]。  |
   
 表9scheduler 
| 参数            | 是否必选 | 参数类型   | 描述                                                        |
|:---|:---|:---|:---|
| affinity      | 否    | Object | 亲和性，请参考[表15]。  |
| anti-affinity | 否    | Object | 反亲和性，请参考[表15]。 |
   
 表10probes 
| 参数             | 是否必选 | 参数类型   | 描述                                                           |
|:---|:---|:---|:---|
| livenessProbe  | 否    | Object | 组件存活探针，请参考[表11]。 |
| readinessProbe | 否    | Object | 组件业务探针，请参考[表11]。 |
   
 表11probes_object 
| 参数         | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| type       | 是    | String  | 取值可以为http、tcp或command。对应的检查方式分别为HTTP请求检查，TCP端口检查和执行命令检查。                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| parameters | 是    | Object  | 检查参数。 - type为http，请参考[表12]。  - type为tcp，请参考[表14]。  - type为command，请参考[表13]。   |
| delay      | 否    | integer | 表示启动后多久开始探测。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| timeout    | 否    | integer | 表示探测超时时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表12probes_param_http 
| 参数     | 是否必选 | 参数类型    | 描述                    |
|:---|:---|:---|:---|
| scheme | 否    | String  | HTTP或者HTTPS。          |
| host   | 否    | String  | 默认为POD的IP。可以指定自定义的IP。 |
| port   | 否    | integer | 端口。                   |
| path   | 否    | String  | 请求路径。                 |
   
 表13probes_param_command 
| 参数      | 是否必选 | 参数类型             | 描述   |
|:---|:---|:---|:---|
| command | 否    | Array of strings | 命令列表 |
   
 表14probes_param_tcp 
| 参数   | 是否必选 | 参数类型    | 描述 |
|:---|:---|:---|:---|
| port | 否    | integer | 端口 |
   
 表15scheduler_affinity 
| 参数          | 是否必选 | 参数类型             | 描述       |
|:---|:---|:---|:---|
| az          | 否    | Array of strings | az名称列表   |
| node        | 否    | Array of strings | 节点私有IP列表 |
| application | 否    | Array of strings | 组件实例名列表  |
   
 表16lifecycle_entrypoint 
| 参数      | 是否必选 | 参数类型             | 描述      |
|:---|:---|:---|:---|
| command | 否    | Array of strings | 可执行的命令。 |
| args    | 否    | Array of strings | 运行参数。   |
   
 表17lifecycle_process 
| 参数         | 是否必选 | 参数类型   | 描述                                                                  |
|:---|:---|:---|:---|
| type       | 否    | String | 取值为command或者http。command为执行命令行，http为发送http请求。                       |
| parameters | 否    | Object | 启动后处理或者停止前处理参数。请参考[表18]。 |
   
 表18lifecycle_process_parameters 
| 参数      | 是否必选 | 参数类型             | 描述                                    |
|:---|:---|:---|:---|
| command | 否    | Array of strings | 命令参数，比如\["sleep", "1"\]。适用于command类型。 |
| host    | 否    | String           | 默认为POD实例的IP地址。也可以自己指定。适用于http类型。      |
| port    | 否    | integer          | 端口号。适用于http类型。                        |
| path    | 否    | String           | 请求url。适用于http类型。                      |
   
 表19storage_parameters 
| 参数          | 是否必选 | 参数类型    | 描述                                              |
|:---|:---|:---|:---|
| path        | 否    | String  | 主机路径， 适用于HostPath的存储类型。                         |
| name        | 否    | String  | 配置项或者密钥的名字， 适用于ConfigMap和Secret的存储类型。           |
| defaultMode | 否    | Integer | 挂载的权限，十进制格式，如384。                               |
| medium      | 否    | String  | 适用于EmptyDir类型的存储。不传参数为默认的磁盘介质，传参为memory则开启内存存储。 |
   
 表20storage_mounts 
| 参数       | 是否必选 | 参数类型    | 描述              |
|:---|:---|:---|:---|
| path     | 是    | String  | 挂载路径，记录挂载的磁盘路径。 |
| subPath  | 否    | String  | 记录挂载磁盘的子路径。     |
| readOnly | 是    | boolean | 挂载的磁盘权限为只读或者读写。 |
   
 表21artifact 
| 参数         | 是否必选 | 参数类型                  | 描述                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| storage    | 是    | String                | 存储方式，支持软件仓库swr、镜像仓库swr、对象存储obs、软件发布库codearts。                                                                                                                                                                                                                                                                              |
| type       | 是    | String                | 类别。 - 虚拟机部署支持软件包package。  - 容器部署支持软件包package、镜像包image。   |
| url        | 是    | String                | 软件包/镜像地址。对于基于虚机部署的组件，值为软件包的地址。对于基于容器部署的组件，值为镜像的地址或者"组件名:v${index}"，后者表示使用组件来源中的源码或者软件包自动构建生成的镜像。                                                                                                                                                                                                                           |
| auth       | 是    | String                | 认证方式，支持iam和none，默认为iam。                                                                                                                                                                                                                                                                                                    |
| version    | 否    | String                | 版本号。                                                                                                                                                                                                                                                                                                                       |
| properties | 否    | Map\<String, Object\> | 属性。                                                                                                                                                                                                                                                                                                                        |
   
 表22external_accesses 
| 参数           | 是否必选 | 参数类型    | 描述               |
|:---|:---|:---|:---|
| protocol     | 是    | String  | 协议，支持http、https。 |
| address      | 是    | String  | 访问地址。            |
| forward_port | 是    | integer | 端口号。             |
   
 表23refer_resources 
| 参数          | 是否必选 | 参数类型                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| id          | 是    | String                | 资源ID。 如果type为ecs的时候，该字段的值固定为"Default"。                                                                                                                                                                                                                                                                                                                                                                           |
| type        | 是    | String                | 基础资源：cce、ecs、as。 可选资源：rds、dcs、elb、cse等其他类型。                                                                                                                                                                                                                                                                                                                                                                     |
| refer_alias | 否    | String                | 应用别名，dcs时才提供，支持"distributed_session"、"distributed_cache"、"distributed_session, distributed_cache"。默认值是"distributed_session, distributed_cache"。                                                                                                                                                                                                                                                                                                                          |
| parameters  | 否    | Map\<String, Object\> | 引用资源参数。 须知： - 当type是cce的时候，该参数必填，需要指定部署组件所在的集群的命名空间，比如{"namespace": "default"}  - 当type为ecs的时候，该参数必填，需要指定组件部署在哪些主机上，比如{"hosts":\["04d9f887-9860-4029-91d1-7d3102903a69", "04d9f887-9860-4029-91d1-7d3102903a70"\]}}。   |
   
 表24container_spec 
| 参数         | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| containers | 否    | Array of objects | 容器信息，参考[表25]。                                                                                                                                                                                                                                                |
| type       | 否    | String           | 工作负载类型： - deployment，无状态工作负载。  - statefulset，有状态工作负载。   |
   
 表25container 
| 参数        | 是否必选 | 参数类型             | 描述                                                          |
|:---|:---|:---|:---|
| name      | 否    | String           | 容器名称。                                                       |
| size      | 否    | Object           | 资源规格，请参考[表26]。   |
| env       | 否    | Array of objects | 环境变量，请参考[表5]。  |
| storage   | 否    | Array of objects | 数据存储配置，请参考[表6]。 |
| lifecycle | 否    | Object           | 生命周期，请参考[表8]。     |
| probes    | 否    | Object           | 健康检查，请参考[表10]。  |
   
 表26size 
| 参数 | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| id | 否    | String | 资源规格，可查询[获取所有支持的应用资源规格](https://support.huaweicloud.com/api-servicestage/servicestage_06_0021.html)接口获取系统预定义好的资源规格。 如需自定义资源规格，格式为：CUSTOM-xxG:xxm-xxm:xxGi-xxGi。其中： - xxG表示给组件实例分配的存储的大小，为保留字段，当前未生效，可以指定为一个固定的数字。  - xxm-xxm用于指定给组件实例分配的cpu最大核数和最小核数。  - xxGi-xxGi用于指定给组件实例分配的最大内存和最小内存。   例如，CUSTOM-10G:0.5m-0.25m:1.6Gi-0.8Gi，表示给组件实例分配的CPU核数最大为0.5核，最小为0.25核，分配的最大内存为1.6Gi，最小为0.8Gi。 |
   
#### 响应消息
表27响应参数 
| 参数          | 参数类型   | 描述                 |
|:---|:---|:---|
| job_id      | String | Job ID，用于查询创建任务信息。 |
| instance_id | String | 应用组件实例ID。          |
   
#### 请求示例
创建名称为component-instance-name的组件实例，组件实例运行环境选择ID为6e763000-9128-4a9d-adea-34c42cc5344d的环境，组件部署件选择存储在obs下myapp桶中的demo.jar包，部署资源选择id为b6862a62-d916-11e9-bdf1-0255ac101fd9的CCE和id为8c0a45cc-626f-4d65-8257-507ee059aa9a的ELB。
```
{
    "name": "component-instance-name", 
    "environment_id": "6e763000-9128-4a9d-adea-34c42cc5344d", 
    "flavor_id": "MICRO-5G:0.5m:1G", 
    "replica": 1, 
    "artifacts": {
        "container-name": {
            "storage": "obs", 
            "type": "package",            
            "url": "obs://myapp/demo.jar",
    "properties": {
"bucket": "myapp",
"key": "demo.jar",
"endpoint": "https://obs.region_id.external_domain_name.com"
},
            "auth": "iam"
        }
    }, 
    "version": 1, 
    "description": "instance desc", 
    "configuration": {
        "env": [
            {
                "name": "log-level", 
                "value": "warn"
            }
        ]
    }, 
    "refer_resources": [
        {
            "id": "b6862a62-d916-11e9-bdf1-0255ac101fd9", 
            "type": "cce", 
            "parameters": {
                "namespace": "default"
            }
        }, 
        {
            "id": "8c0a45cc-626f-4d65-8257-507ee059aa9a", 
            "type": "elb"
        }
    ]
}
```
#### 响应示例
```
{
    "instance_id": "89f5baf5-efe4-4f12-9c0d-734d2af5a184", 
    "job_id": "JOB66761060-f209-407c-a093-4df6f531b9dc"
}
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 操作成功    |
| 400 | 错误的请求   |
| 404 | 请求对象不存在 |
| 500 | 内部错误    |
   
#### 错误码
请参考[ServiceStage错误码](https://support.huaweicloud.com/api-servicestage/servicestage_06_0162.html)。
