
# 注册自定义镜像 - RegisterV2Image
#### 功能介绍
注册自定义镜像。用户通过该接口将外部镜像仓库中的镜像注册到工作空间中，以便后续使用。与[添加自定义镜像版本](https://support.huaweicloud.com/api-aidatalake/AddV2ImageVersion.html)接口配合完成镜像版本的添加。此接口为同步接口。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0003.html)。
#### URI
POST /v2/workspaces/{workspace_id}/images
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                     |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释**：工作空间ID。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                             |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释**：用户Token。 **约束限制**：不涉及。 **取值范围**：长度不超过65534个字符。 **默认取值**：不涉及。 |
   
表3请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                                              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| image_url             | 是    | String                                                                            | **参数解释**：自定义镜像的URL地址。 **约束限制**：必填。 **取值范围**：由大小写英文字母、数字、.、/、:、-、_组成的容器镜像地址。长度为1\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| category              | 是    | String                                                                            | **参数解释**：自定义镜像的分类。 **约束限制**：必填。 **取值范围**： - RAY_BASIC：基于Ray构建的自定义镜像。   - SPARK_JOB：基于SparkJob构建的自定义镜像。   - SPARK_SQL：基于SparkSql构建的自定义镜像。   - AURA_JOB：基于AuraJobV2构建的自定义镜像。    **默认取值**：不涉及。 |
| architectures         | 是    | Array of strings                                                                  | **参数解释**：支持架构列表。 **约束限制**：不涉及。 **取值范围**： - x86_64：x86架构。   - aarch64：ARM架构。    **默认取值**：x86_64。                                                                                                                                                                                                                                                                                                                                                   |
| type                  | 是    | String                                                                            | **参数解释**：版本类型。 **约束限制**：不涉及。 **取值范围**： - STABLE：稳定版本。   - RECOMMEND：推荐版本。   - BETA：测试版本。    **默认取值**：不涉及。                                                                                                                                                                                                              |
| container_softwares   | 否    | Array of [ContainerSoftware] objects | **参数解释**：自定义镜像包含的软件。 **约束限制**：不涉及。 **取值范围**：最小个数为0，最大个数为100。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| description           | 否    | String                                                                            | **参数解释**：自定义镜像的描述。 **约束限制**：选填。 **取值范围**：不允许输入感叹号、小于号、大于号、等号、与号、双引号、单引号字符。长度为0\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| base_image_id         | 否    | String                                                                            | **参数解释**：镜像id。 **约束限制**：注册Spark类型自定义镜像时必填。 **取值范围**：字符串，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| base_image_version_id | 否    | String                                                                            | **参数解释**：镜像版本id。 **约束限制**：注册Spark类型自定义镜像时必填。 **取值范围**：字符串，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表4ContainerSoftware 
| 参数      | 是否必选 | 参数类型   | 描述                                                                       |
|:---|:---|:---|:---|
| name    | 是    | String | **参数解释**：软件名称。 **取值范围**：字符串，2\~32个字符。 |
| version | 是    | String | **参数解释**：软件版本。 **取值范围**：字符串，2\~32个字符。 |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数              | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| image_id        | String | **参数解释**：镜像ID。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。                                                                                                                                                                                                                                                                                                                                   |
| category        | String | **参数解释**：镜像分类。 **取值范围**：字符串，长度0\~32个字符。                                                                                                                                                                                                                                                                                                                                             |
| image_registry  | String | **参数解释**：镜像域名。 **取值范围**：字符串，长度0\~255个字符。                                                                                                                                                                                                                                                                                                                                            |
| image_namespace | String | **参数解释**：镜像命名空间。 **取值范围**：字符串，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                           |
| image_name      | String | **参数解释**：镜像名。 **取值范围**：字符串，长度0\~128个字符。                                                                                                                                                                                                                                                                                                                                             |
| visibility      | String | **参数解释**：可见性。 **取值范围**： - PRIVATE：私有。   - PUBLIC：公共。    |
   
**状态码：400**
表6响应Body参数 
| 参数           | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：401**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：403**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：404**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：408**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。      |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。    |
| solution_msg | String | **参数解释**：解决方案描述。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：500**
表11响应Body参数 
| 参数           | 参数类型   | 描述                                                                        |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
#### 请求示例
注册自定义镜像。描述为"Ray custom image"，类型为"RAY_BASIC"。
```
POST /v2/workspaces/{workspace_id}/images
{
  "image_url" : "swr.cn-north-4.myhuaweicloud.com/test-namespace/ray-image:v1",
  "category" : "RAY_BASIC",
  "type" : "BETA",
  "architectures" : [ "x86_64" ],
  "container_softwares" : [ {
    "name" : "jdk",
    "version" : "21"
  } ],
  "description" : "Ray custom image"
}
```
#### 响应示例
**状态码：200**
请求成功。
```
{
  "image_id" : "90a827a1-ca72-4be8-943b-774f94xxxxxx",
  "category" : "RAY_BASIC",
  "image_registry" : "swr.cn-north-4.myhuaweicloud.com",
  "image_namespace" : "test-namespace",
  "image_name" : "test-image",
  "visibility" : "PRIVATE"
}
```
**状态码：400**
请求参数错误。
```
{
  "error_code" : "AIDataLake.00010151",
  "error_msg" : "Parameter value is invalid.",
  "solution_msg" : "Please input valid parameter value."
}
```
**状态码：401**
未授权。
```
{
  "error_code" : "APIGW.0301",
  "error_msg" : "Incorrect IAM authentication information: decrypt token fail.",
  "solution_msg" : "Check whether the IAM authentication information is correct."
}
```
**状态码：403**
禁止访问。
```
{
  "error_code" : "AIDataLake.00010150",
  "error_msg" : "The operation is not allowed.",
  "solution_msg" : "Check whether the operation is allowed in the current status."
}
```
**状态码：404**
资源未找到。
```
{
  "error_code" : "AIDataLake.00010009",
  "error_msg" : "No resources found.",
  "solution_msg" : "Enter correct resource and project IDs."
}
```
**状态码：408**
请求超时。
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred"
}
```
**状态码：500**
内部服务器错误。
```
{
  "error_code" : "AIDataLake.00011001",
  "error_msg" : "Internal error.",
  "solution_msg" : "Contact technical support or try again later."
}
```
#### 状态码
| 状态码 | 描述       |
|:---|:---|
| 200 | 请求成功。    |
| 400 | 请求参数错误。  |
| 401 | 未授权。     |
| 403 | 禁止访问。    |
| 404 | 资源未找到。   |
| 408 | 请求超时。    |
| 500 | 内部服务器错误。 |
   
