# CreateImage

## 1. 接口描述

本接口(CreateImage)用于用实例创建自定义镜像。

{% hint style="info" %}
**注意事项**

* 会在实例所在zone下创建出对应的自定义镜像。
* 所选实例必须处于`STOPPED`状态。
* GPU机型暂时不支持创建自定义镜像。
* 如果配额超过了限制，可以联系Support来提高配额。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称            | 必选 | 类型                                                                                            | 描述                                                                               |
| --------------- | -- | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| instanceId      | 是  | String                                                                                        | 需要制作镜像的实例ID。                                                                     |
| imageName       | 是  | String                                                                                        | <p>名称。</p><p>范围2到63个字符。</p><p>仅支持输入字母、数字、-/\_和英文句点(.)。</p><p>且必须以数字或字母开头和结尾。</p> |
| resourceGroupId | 否  | String                                                                                        | 镜像所放的资源组ID，如不指定则放入默认资源组。                                                         |
| tags            | 否  | [TagAssociation](https://docs.console.zenlayer.com/test/compute/datastructure#tagassociation) | <p>创建镜像时关联的标签。</p><p>注意：·关联<code>标签键</code>不能重复。</p>                             |

## 3. 响应结果

| 参数名称      | 类型     | 描述                                                       |
| --------- | ------ | -------------------------------------------------------- |
| requestId | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| imageId   | String | 镜像ID。                                                    |
| imageName | String | 镜像名称。                                                    |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 用实例创建一个自定义镜像。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: CreateImage
<Common Request Params>

Request：
{
  "instanceId": "<instance id>",
  "imageName": "imageXXX"
}

Response：
{
  "requestId": "TBFC01FCF-6439-4530-ADBC-16809F0C3E8F",
  "response": {
    "requestId": "TBFC01FCF-6439-4530-ADBC-16809F0C3E8F",
    "imageId": "imageIdX",
    "imageName": "imageNameX"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](https://docs.console.zenlayer.com/test/api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](https://docs.console.zenlayer.com/test/api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                               | 说明              |
| ------- | ------------------------------------------------- | --------------- |
| 400     | INVALID\_IMAGE\_QUOTA\_EXCEED                     | 自定义镜像超过数量限制。    |
| 404     | INVALID\_INSTANCE\_NOT\_FOUND                     | 服务器实例不存在。       |
| 400     | OPERATION\_DENIED\_GPU\_INSTANCE\_NOT\_SUPPORT    | 实例类型为GPU不允许该操作。 |
| 400     | OPERATION\_DENIED\_INSTANCE\_IN\_OPERATION        | 实例正在其它操作中。      |
| 400     | OPERATION\_DENIED\_INSTANCE\_STATUS\_NOT\_SUPPORT | 实例状态不允许操作。      |
