
# 更新组件 - UpdateComponent
#### 功能介绍
更新组件。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/CAE/doc?api=UpdateComponent)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cae/cae_06_0016.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
#### URI
PUT /v1/{project_id}/cae/applications/{application_id}/components/{component_id}
表1路径参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                |
|:---|:---|:---|:---|
| project_id     | 是    | String | 项目ID，获取项目ID请参见[获取项目ID](https://support.huaweicloud.com/api-cae/cae_06_0021.html)。 |
| application_id | 是    | String | 应用ID。                                                                             |
| component_id   | 是    | String | 组件ID。                                                                             |
#### 请求参数
表2请求Header参数 
| 参数                      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| X-Auth-Token            | 是    | String | 用户Token。 - 获取Token，请参考《[统一身份认证服务API参考](https://support.huaweicloud.com/api-iam/iam_30_0001.html)》的"获取用户Token"章节。 - 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。                                                               |
| X-Enterprise-Project-ID | 否    | String | 企业项目ID。 - 创建环境时，环境会绑定企业项目ID。 - 最大长度36字节，带"-"连字符的UUID格式，或者是字符串"0"。 - 该字段不传（或传为字符串"0"）时，则查询默认企业项目下的资源。 说明： 关于企业项目ID的获取及企业项目特性的详细信息，请参见《[企业管理服务用户指南](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0126101490.html)》。 |
| X-Environment-ID        | 是    | String | 环境ID。 - 获取环境ID，通过[获取环境列表](https://support.huaweicloud.com/api-cae/ListEnvironments.html)来获取环境信息。 - 请求响应成功后在响应体的items数组中的一个元素即为一个环境的信息，其中id字段即是环境ID。                                                                            |
   
表3请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                                              | 描述                           |
|:---|:---|:---|:---|
| api_version | 是    | String                                                                                            | API版本，固定值"v1"，该值不可修改。        |
| kind        | 是    | String                                                                                            | API类型，固定值"Component"，该值不可修改。 |
| metadata    | 是    | [UpdateComponentRequestMetadata] object | 请求数据。                        |
| spec        | 是    | [UpdateComponentRequestSpec] object         | 组件规格。                        |
   
 表4UpdateComponentRequestMetadata 
| 参数          | 是否必选 | 参数类型                 | 描述                                |
|:---|:---|:---|:---|
| name        | 是    | String               | 组件名称。                             |
| annotations | 否    | Map\<String,String\> | 更新组件请求体附加参数，当前只支持version参数，此参数必填。 |
   
 表5UpdateComponentRequestSpec 
| 参数             | 是否必选 | 参数类型                                                            | 描述      |
|:---|:---|:---|:---|
| runtime        | 否    | String                                                          | 语言/运行时。 |
| source         | 否    | [Source] object               | 源信息。    |
| build          | 否    | [Build] object                 | 构建信息。   |
| resource_limit | 是    | [ResourceLimit] object | 实例规格。   |
| replica        | 否    | Integer                                                         | 实例个数。   |
   
 表6Source 
| 参数       | 是否必选 | 参数类型                                          | 描述                                                                                                                                                         |
|:---|:---|:---|:---|
| code     | 否    | [Repo] object | 源码仓库信息。                                                                                                                                                    |
| type     | 是    | String                                        | **参数解释：** 源类型。 **约束限制：** 更新组件时，源类型需要与创建组件时的源类型保持一致。 **取值范围：** - image：镜像 - code：源码 - softwarePackage：软件包 **默认取值：** 不涉及。                                    |
| sub_type | 否    | String                                        | 源子类型。 - 源类型为code时，子类型表示不同的代码仓库，如DevCloud（CodeArts）、GitLab、GitHub、Gitee、Bitbucket。 - 源类型为softwarePackage时，子类型表示不同的软件包仓库，如BinObs、BinDevCloud（CodeArts软件发布库）。 |
| url      | 是    | String                                        | url地址。 - 源类型为image时，url地址为镜像地址。 - 源类型为code时，url地址为git地址。 - 源类型为softwarePackage时，url地址为软件包地址。                                                               |
   
 表7Repo 
| 参数        | 是否必选 | 参数类型   | 描述                     |
|:---|:---|:---|:---|
| auth_name | 否    | String | 授权名称。                  |
| branch    | 否    | String | 分支。                    |
| namespace | 否    | String | 命名空间，需填写命名空间的Base64编码。 |
   
 表8Build 
| 参数         | 是否必选 | 参数类型                                                | 描述                                                                                                                                                                            |
|:---|:---|:---|:---|
| archive    | 是    | [Archive] object | 构建产物纳管。                                                                                                                                                                       |
| parameters | 是    | Map\<String,String\>                                | 构建附加参数。 - base_image：基础镜像地址。 - build_cmd：自定义构建命令。 - dockerfile_path：自定义dockerfile文件路径 - dockerfile_content：自定义dockerfile内容 - artifact_name: 针对java多模块构建，指定构建后运行的产物，以".jar"结尾。 |
   
 表9Archive 
| 参数                 | 是否必选 | 参数类型   | 描述         |
|:---|:---|:---|:---|
| artifact_namespace | 否    | String | 产物纳管SWR组织。 |
   
 表10ResourceLimit 
| 参数           | 是否必选 | 参数类型   | 描述     |
|:---|:---|:---|:---|
| cpu_limit    | 是    | String | cpu限额。 |
| memory_limit | 是    | String | 内存限额。  |
   
#### 响应参数
**状态码：200**
请求成功。
无
#### 请求示例
- 更新组件代码源为源码仓库，组件名称"demo"，版本"1.0.0"，选择GitLab源码仓库，运行时为Java8。
  ```
  PUT https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}
  {
    "api_version" : "v1",
    "kind" : "Component",
    "metadata" : {
      "name" : "demo",
      "annotations" : {
        "version" : "1.0.0"
      }
    },
    "spec" : {
      "runtime" : "Java8",
      "build" : {
        "archive" : {
          "artifact_namespace" : "xxx"
        },
        "parameters" : {
          "base_image" : "xxx",
          "dockerfile_path" : "xxx"
        }
      },
      "source" : {
        "type" : "code",
        "sub_type" : "GitLab",
        "url" : "https://xxx:8090/xxx/cae-frontend.git",
        "code" : {
          "branch" : "master",
          "auth_name" : "gitlab-xxx",
          "namespace" : "em1n"
        }
      },
      "resource_limit" : {
        "cpu_limit" : "500m",
        "memory_limit" : "1Gi"
      },
      "replica" : 1
    }
  }
  ```
- 更新组件代码源为镜像，组件名称"demo"，版本"1.0.0"，选择名称为"cae-demo"的镜像，运行时为Docker。
  ```
  PUT https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}
  {
    "api_version" : "v1",
    "kind" : "Component",
    "metadata" : {
      "name" : "demo",
      "annotations" : {
        "version" : "1.0.0"
      }
    },
    "spec" : {
      "runtime" : "Docker",
      "build" : {
        "archive" : {
          "artifact_namespace" : "xxx"
        },
        "parameters" : {
          "base_image" : "xxx"
        }
      },
      "source" : {
        "type" : "image",
        "url" : "xxx/cae-demo:v1"
      },
      "resource_limit" : {
        "cpu_limit" : "500m",
        "memory_limit" : "1Gi"
      },
      "replica" : 1
    }
  }
  ```
- 更新组件代码源为软件包，组件名称"demo"，版本"1.0.0"，在OBS对象存储中选择名称为"forecast-1.0.0.jar"的软件包，运行时为Java8。
  ```
  PUT https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}
  {
    "api_version" : "v1",
    "kind" : "Component",
    "metadata" : {
      "name" : "demo",
      "annotations" : {
        "version" : "1.0.0"
      }
    },
    "spec" : {
      "runtime" : "Java8",
      "build" : {
        "archive" : {
          "artifact_namespace" : "xxx"
        },
        "parameters" : {
          "base_image" : "openjdk:8u181-jdk-alpine",
          "dockerfile_content" : "xxx"
        }
      },
      "source" : {
        "type" : "softwarePackage",
        "sub_type" : "BinObs",
        "url" : "https://xxx.obs.region.xxx.huawei.com/xxx/forecast-1.0.0.jar"
      },
      "resource_limit" : {
        "cpu_limit" : "500m",
        "memory_limit" : "1Gi"
      },
      "replica" : 1
    }
  }
  ```
#### 响应示例
无
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cae/ErrorCode.html)。
