# 注册自定义镜像 - RegisterV2TenantImage
#### 功能介绍
注册自定义镜像。用户通过该接口将外部镜像仓库中的镜像注册到租户中，以便后续使用。与[添加自定义镜像版本](https://support.huaweicloud.com/api-aidatalake/AddV2TenantImageVersion.html)接口配合完成镜像版本的添加。此接口为同步接口。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0003.html)。
#### URI
POST /v2/images
#### 请求参数
表1请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释** ：用户Token，通过调用[获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取。 **约束限制**：不涉及。 **取值范围**：只能由英文字母、数字及特殊字符组成，长度不超过65534个字符。Token格式由IAM服务定义，具体字符集参见IAM服务相关文档。 **默认取值**：不涉及。 |
   
表2请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                                                    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| image_url             | 是    | String                                                                                  | **参数解释**：自定义镜像的URL地址，由镜像仓库地址、镜像命名空间、镜像名称和镜像版本组成。 **约束限制**：不涉及。 **取值范围**：由大小写英文字母、数字、小数点(.)、斜杠(/)、冒号(:)、下划线(_)和连字符(-)组成的容器镜像地址。长度为1\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| category              | 是    | String                                                                                  | **参数解释**：自定义镜像的分类。 **约束限制**：不涉及。 **取值范围**： - RAY_BASIC：基于Ray构建的自定义镜像。   - SPARK_JOB：基于SparkJob构建的自定义镜像。   - SPARK_SQL：基于SparkSql构建的自定义镜像。   - FLINK_JOB：基于FlinkJob构建的自定义镜像。   - 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 | **参数解释**：自定义镜像包含的软件列表，每个元素为一个ContainerSoftware对象，包含软件名称和版本信息。 **约束限制**：软件列表最小个数为0，最大个数为100。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| description           | 否    | String                                                                                  | **参数解释**：自定义镜像的描述。 **约束限制**：不涉及。 **取值范围**：不允许输入感叹号、小于号、大于号、等号、与号、双引号、单引号、艾特符、井号、百分号、分号、左括号、右括号、竖线、星号、反斜杠。长度为0\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| base_image_id         | 否    | String                                                                                  | **参数解释** ：基础镜像ID，可通过[查询自定义镜像列表](https://support.huaweicloud.com/api-aidatalake/ListV2TenantImages.html)获取镜像ID。 **约束限制**：Spark类型镜像必填。 **取值范围**：支持英文字母、数字及中划线，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| base_image_version_id | 否    | String                                                                                  | **参数解释** ：基础镜像版本ID，可通过[查询自定义镜像版本列表](https://support.huaweicloud.com/api-aidatalake/ListV2TenantImageVersions.html)获取镜像版本ID。 **约束限制**：当镜像分类为Spark类型时此字段必填，其余情况可选。 **取值范围**：支持英文字母、数字及中划线，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表3ContainerSoftware 
| 参数      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| name    | 是    | String | **参数解释**：软件名称。 **约束限制**：不涉及。 **取值范围**：支持英文字母、数字、小数点、下划线和连字符，2\~32个字符。 **默认取值**：不涉及。 |
| version | 是    | String | **参数解释**：软件版本。 **约束限制**：不涉及。 **取值范围**：支持英文字母、数字、小数点、下划线和连字符，2\~32个字符。 **默认取值**：不涉及。 |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数              | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| image_id        | String | **参数解释**：镜像ID。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| category        | String | **参数解释**：镜像分类。 **取值范围**： - RAY_BASIC：基于Ray构建的自定义镜像。   - SPARK_JOB：基于SparkJob构建的自定义镜像。   - SPARK_SQL：基于SparkSql构建的自定义镜像。   - FLINK_JOB：基于FlinkJob构建的自定义镜像。   - AURA_JOB：基于AuraJobV2构建的自定义镜像。    |
| image_registry  | String | **参数解释**：镜像域名。 **取值范围**：支持英文字母、数字、小数点及连字符，长度0\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| image_namespace | String | **参数解释**：镜像命名空间。 **取值范围**：由英文字母、数字、中划线和下划线组成，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| image_name      | String | **参数解释**：镜像名。 **取值范围**：由中文字符、英文字母、数字、中划线和下划线组成，长度0\~128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| visibility      | String | **参数解释**：可见性。 **取值范围**： - PRIVATE：私有。用户自己创建的。   - PUBLIC：公共。查询所有公共的，包括其他用户创建的。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
**状态码：400**
表5响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：401**
表6响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：403**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：404**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：408**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：500**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                              |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
#### 请求示例
注册自定义镜像。描述为"Ray custom image"，镜像分类为"RAY_BASIC"。
```
POST /v2/images
{
  "image_url" : "xxx.cn-north-4.example.com/test-namespace/test-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-4f3a-9e2d-774f945f22ac",
  "category" : "RAY_BASIC",
  "image_registry" : "xxx.cn-north-4.example.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" : "Ensure the requested resource exists and the parameters are correct."
}
```
**状态码：408**
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred",
  "solution_msg" : "Try again later. If the problem persists, contact technical support."
}
```
**状态码：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 | 内部服务器错误。 |
   
