調用CreateImage接口,創建一份自定義鏡像。后續您可以使用創建的自定義鏡像創建ECS實例(RunInstances),或者更換實例的系統盤(ReplaceSystemDisk)。
接口說明
調用該接口時,您需要注意:
- 等待鏡像狀態變為可用(Available)后才能使用鏡像資源。
- 查詢 ECS 實例信息時,如果返回數據中包含
{"OperationLocks": {"LockReason" : "security"}}
,則禁止一切操作。 - 強烈建議在創建鏡像時配置鏡像檢測參數,有助于系統幫助優化您的鏡像。更多信息,請參見鏡像檢測概述。
以下描述了三種通過該接口創建自定義鏡像的方法。請求參數的優先級為:InstanceId
> DiskDeviceMapping
> SnapshotId
,若您的請求中同時含有兩個及以上參數,默認以優先級更高的參數為準創建鏡像。
- 方法一:使用一臺實例做模板,只需要指定實例 ID(
InstanceId
)。該臺實例的狀態必須為運行中(Running
)或者已停止(Stopped
)。接口調用成功后,該臺實例的每塊云盤均會新增一份快照。由于運行中的實例存在緩存數據未落盤的情況,可能導致創建的自定義鏡像數據與實例數據不完全一致。因此阿里云推薦您停止實例( StopInstances )后創建鏡像。 - 方法二:針對某一臺實例的系統盤創建自定義鏡像,只需要指定實例系統盤的一份歷史快照 ID(
SnapshotId
)。其中,指定的快照不能是 2013 年 7 月 15 日(含)之前創建的快照。 - 方法三:將多份快照組合成一個鏡像模板,需要建立幾塊云盤的數據關聯(
DiskDeviceMapping
)。
使用方法三創建自定義鏡像時,請注意:
- 只能指定一個系統盤快照,系統盤的設備名必須為/dev/xvda。
- 可以指定多個數據盤快照,最多不能超過 16 塊,數據盤設備名默認由系統有序分配,從/dev/xvdb 依次排序到/dev/xvdz,不能重復。
- 可以不指定
SnapshotId
,不指定時會創建一個指定大小的沒有任何數據的空數據盤。 - 指定的快照不能是 2013 年 7 月 15 日(含)之前創建的快照。
調試
您可以在OpenAPI Explorer中直接運行該接口,免去您計算簽名的困擾。運行成功后,OpenAPI Explorer可以自動生成SDK代碼示例。
授權信息
下表是API對應的授權信息,可以在RAM權限策略語句的Action
元素中使用,用來給RAM用戶或RAM角色授予調用此API的權限。具體說明如下:
- 操作:是指具體的權限點。
- 訪問級別:是指每個操作的訪問級別,取值為寫入(Write)、讀取(Read)或列出(List)。
- 資源類型:是指操作中支持授權的資源類型。具體說明如下:
- 對于必選的資源類型,用背景高亮的方式表示。
- 對于不支持資源級授權的操作,用
全部資源
表示。
- 條件關鍵字:是指云產品自身定義的條件關鍵字。
- 關聯操作:是指成功執行操作所需要的其他權限。操作者必須同時具備關聯操作的權限,操作才能成功。
操作 | 訪問級別 | 資源類型 | 條件關鍵字 | 關聯操作 |
---|---|---|---|---|
ecs:CreateImage | create | *Image acs:ecs:{#regionId}:{#accountId}:image/* *Instance acs:ecs:{#regionId}:{#accountId}:instance/{#instanceId} *Snapshot acs:ecs:{#regionId}:{#accountId}:snapshot/{#snapshotId} |
| 無 |
請求參數
名稱 | 類型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
RegionId | string | 是 | 鏡像所在的地域 ID。您可以調用 DescribeRegions 查看最新的阿里云地域列表。 | cn-hangzhou |
SnapshotId | string | 否 | 用于創建自定義鏡像的快照 ID。 | s-bp17441ohwkdca0**** |
InstanceId | string | 否 | 實例 ID。 | i-bp1g6zv0ce8oghu7**** |
ImageName | string | 否 | 鏡像名稱。長度為 2~128 個英文或中文字符。必須以大小寫字母或中文開頭,不能以 http://和 https://開頭。可以包含數字、半角冒號(:)、下劃線(_)或者短劃線(-)。 | TestCentOS |
ImageFamily | string | 否 | 鏡像族系名稱。長度為 2~128 個英文或中文字符。必須以大小寫字母或中文開頭,不能以 aliyun 和 acs:開頭,不能包含 http://或者 https://。可以包含數字、半角冒號(:)、下劃線(_)或者短劃線(-)。 | hangzhou-daily-update |
ImageVersion | string | 否 | 鏡像版本。 說明
當您指定了實例 ID( InstanceId ),并且該實例的鏡像是云市場鏡像或者來自云市場鏡像創建的自定義鏡像時。該參數必須和當前實例的鏡像的 ImageVersion 相同或置為空。
| 2017011017 |
Description | string | 否 | 鏡像的描述信息。長度為 2~256 個英文或中文字符,不能以 http://或 https://開頭。 | ImageTestDescription |
Platform | string | 否 | 指定數據盤快照做鏡像的系統盤后,需要通過 Platform 確定系統盤的操作系統發行版。取值范圍:
默認值:Others Linux。 | CentOS |
BootMode | string | 否 | 修改鏡像的啟動模式。取值范圍:
注意
為了避免使用鏡像不支持的啟動模式導致實例無法正常啟動,請您務必在選擇該參數之前了解目標鏡像支持的啟動模式。鏡像啟動模式詳情,請參見鏡像啟動模式。
| BIOS |
Architecture | string | 否 | 指定數據盤快照做鏡像的系統盤后,需要通過 Architecture 確定系統盤的系統架構。取值范圍:
默認值為 x86_64。 | x86_64 |
ClientToken | string | 否 | 保證請求冪等性。從您的客戶端生成一個參數值,確保不同請求間該參數值唯一。ClientToken 只支持 ASCII 字符,且不能超過 64 個字符。更多信息,請參見如何保證冪等性。 | 123e4567-e89b-12d3-a456-426655440000 |
ResourceGroupId | string | 否 | 自定義鏡像所在的資源組 ID。如果不設置該參數值,創建的鏡像屬于默認資源組。 說明
如果您當前使用的是 RAM 用戶調用該接口,且 ResourceGroupId 取值為空,您需要注意,當 RAM 用戶沒有默認資源組權限時,調用接口會返回報錯信息Forbidden: User not authorized to operate on the specified resource 。請您設置 RAM 用戶支持的資源組 ID 或者通過相應阿里云賬號為該 RAM 用戶授予默認資源組權限后,再次調用該接口。
| rg-bp67acfmxazb4p**** |
DiskDeviceMapping | array<object> | 否 | 創建的自定義鏡像信息列表。 | |
object | 否 | 創建的自定義鏡像信息列表。 | ||
SnapshotId | string | 否 | 根據指定的快照創建自定義鏡像。 | s-bp17441ohwkdca0**** |
Size | integer | 否 | 云盤的大小,單位為 GiB。DiskDeviceMapping.N.Size 的取值和默認值和 DiskDeviceMapping.N.SnapshotId 有關:
| 2000 |
Device | string | 否 | 指定在自定義鏡像中的設備名稱。取值范圍:
| /dev/vdb |
DiskType | string | 否 | 指定在新鏡像中的云盤類型。您可以通過該參數使用數據盤快照做為鏡像的系統盤,如果不指定,默認為快照對應的云盤類型。取值范圍:
| system |
Tag | array<object> | 否 | 標簽列表。 | |
object | 否 | 標簽列表。 | ||
key | string | 否 | 鏡像的標簽鍵。 說明
為提高兼容性,建議您盡量使用 Tag.N.Key 參數。
| null |
Key | string | 否 | 鏡像的標簽鍵。N 的取值范圍為 1~20。一旦傳入該值,則不允許為空字符串。最多支持 128 個字符,不能以 | KeyTest |
Value | string | 否 | 鏡像的標簽值。N 的取值范圍為 1~20。一旦傳入該值,允許為空字符串。最多支持 128 個字符,不能以 | ValueTest |
value | string | 否 | 鏡像的標簽值。 說明
為提高兼容性,建議您盡量使用 Tag.N.Value 參數。
| null |
DetectionStrategy | string | 否 | 鏡像檢測策略,不配置此參數時不觸發檢測。僅支持標準(Standard)檢測模式。 說明
目前已支持大部分的 Linux/Windows 版本,關于鏡像檢測項與操作系統限制說明,請參見鏡像檢測概述和鏡像檢測操作系統限制。
| Standard |
返回參數
示例
正常返回示例
JSON
格式
{
"ImageId": "m-bp146shijn7hujku****",
"RequestId": "C8B26B44-0189-443E-9816-*******"
}
錯誤碼
HTTP status code | 錯誤碼 | 錯誤信息 | 描述 |
---|---|---|---|
400 | InvalidImageName.Malformed | The specified Image name is wrongly formed. | 鏡像名稱格式錯誤。長度為2~128個字符。必須以大小字母或中文開頭,不能以aliyun和acs:開頭,不能包含http://或者https://。可以包含數字、半角句號(.)、半角冒號(:)、下劃線(_)或者短劃線(-)。 |
400 | InvalidImageName.Duplicated | The specified Image name has already bean used. | 鏡像名稱已經重復。 |
400 | InvalidDescription.Malformed | The specified description is wrongly formed. | 指定的資源描述格式不合法。長度為 2-256 個字符,不能以 http:// 和 https:// 開頭。 |
400 | InvalidImageVersion.Malformed | The specified ImageVersion is wrongly formed. | 無效的鏡像版本號取值(或者您無權使用該快照)。 |
400 | IncorrectInstanceStatus | The current status of the instance does not support this operation. | 當前實例狀態不支持此操作。 |
400 | InstanceLockedForSecurity | The specified operation is denied as your instance is locked for security reasons. | 實例被安全鎖定。 |
400 | InvalidDevice.Malformed | The specified parameter DiskDeviceMapping.n.Device is not valid. | 指定的參數 DiskDeviceMapping.n.Device 不合法。 |
400 | MissingParameter | The input parameter SnapshotId or InstanceId or DiskDeviceMapping that is mandatory for processing this request is not supplied. | 參數 SnapshotId,InstanceId 和 DiskDeviceMapping 不得為空。 |
400 | InvalidSize.ValueNotSupported | The specified parameter DiskDeviceMapping.n.Size beyond the permitted range. | 指定的參數 DiskDeviceMapping.n.Size 超出取值范圍。 |
400 | InvalidDevice.InUse | The specified parameter DiskDeviceMapping.n.Device has been occupied. | 指定的參數 DiskDeviceMapping.n.Device 已被占用。 |
400 | OperationDenied | The specified parameter DiskDeviceMapping.n.SnapshotId does not contain system disk snapshot. | 系統盤快照中不存在指定的 DiskDeviceMapping 快照 ID。 |
400 | OperationDenied | The specified parameter DiskDeviceMapping.n.SnapshotId contains two or more system disk snapshots. | 指定的 DiskDeviceMapping 快照 ID 中已存在系統盤快照。 |
400 | InvalidDiskCategory.CreateImage | The specified diskCategory is not allowed to create image. | 指定的磁盤類型不允許創建鏡像。 |
400 | InvalidArchitecture.Malformed | The specified Architecture is wrongly formed. | 參數 Architecture 格式錯誤。 |
400 | InvalidPlatform.Malformed | The specified Platform is wrongly formed. | 指定的鏡像操作系統發行版不合法。 |
400 | OperationDenied | Not support creating system image from an encrypted snapshot/disk. | 被加密的磁盤和快照不允許創建系統鏡像。 |
400 | InvalidParameter.AllEmpty | %s | 您沒有輸入任何參數,請輸入必要的參數。 |
400 | InvalidParameter.DiskType | The specified disk type which has kms key can't convert to system disk. | - |
400 | Duplicate.TagKey | The Tag.N.Key contain duplicate key. | 標簽中存在重復的鍵,請保持鍵的唯一性。 |
400 | InvalidTagKey.Malformed | The specified Tag.n.Key is not valid. | 指定的標簽鍵參數有誤。 |
400 | InvalidTagValue.Malformed | The specified Tag.n.Value is not valid. | 指定的標簽值參數有誤。 |
400 | InvalidInstance.NotFoundSystemDisk | The specified instance does not have system disk. | - |
400 | InvalidImageFamily.Malformed | The format of the specified image family is invalid. | 指定的鏡像族系格式有誤。 |
400 | ImageQuotaExceed.ImageFamily | The specified image family exceeds the maximum number of images for one image family. | - |
400 | ImageFamilyQuotaExceed | The number of image families exceeds the limit in the region. | - |
400 | InvalidDiskType.ValueNotSupported | The specified disk type is not supported. | 指定的磁盤屬性不支持。 |
400 | IdempotenceParamNotMatch | Request uses a client token in a previous request but is not identical to that request. | 與相同 ClientToken 的請求參數不符合。 |
400 | OperationDenied | Shared snapshots do not support creating images. | 共享快照不支持創建自定義鏡像。 |
400 | InvalidBootMode.NotSupport | The specified parameter BootMode is not supported for current image architecture. | 當前的鏡像架構不支持設置該啟動模式。 |
400 | InvalidParameter.FeaturesImdsSupport | The specified parameter Features.ImdsSupport is not supported. | 指定的參數Features.ImdsSupport不支持。 |
403 | IncorrectDiskStatus.NeverAttached | The specified disk has never been attached to instance. | - |
403 | InvalidSnapshotId.NotReady | The current status of the DiskDeviceMapping.n.SnapshotId or SnapshotId does not support this operation. | 當前磁盤有創建中的快照,請稍后重試 |
403 | InvalidSnapshot.TooOld | This operation is denied because the specified snapshot by DiskDeviceMapping.n.SnapshotId or SnapshotId is created before 2013-07-15. | 該操作被拒絕。因為 DiskDeviceMapping.n.SnapshotId 或 SnapshotId 指定的快照創建于 2013-07-15 之前。 |
403 | OperationDenied | The specified snapshot is not allowed to create image. | 指定快照不允許創建鏡像。 |
403 | QuotaExceed.Image | The Image Quota exceeds. | 自定義鏡像額度已用完。 |
403 | OperationDenied | The specified snapshot is not from system disk. | 指定的快照不是系統盤快照。 |
403 | InvalidParamter.Conflict | The specified same token is trying to make requests with different parameters. | 同一個 Token 正在請求處理兩個不同的參數。 |
403 | InvalidAccountStatus.NotEnoughBalance | Your account does not have enough balance. | 賬號余額不足,請您先充值再進行該操作。 |
403 | InvalidAccountStatus.SnapshotServiceUnavailable | Snapshot service has not been opened yet. | 快照服務未開通,操作無法執行。 |
403 | UserNotInTheWhiteList | The user is not in the white list of create image by data disk snapshot. | 您不能通過數據磁盤快照創建鏡像,請先加入到該白名單中。 |
403 | IncorrectDiskStatus.Invalid | Device status is invalid, please restart instance and try again. | 設備狀態無效,請重啟實例后再試。 |
403 | OperationDenied.InvalidSnapshotCategory | %s | 該快照類型不支持此操作。 |
403 | QuotaExceed.Snapshot | The snapshot quota exceeds. | 快照額度超過限制,若要存儲新快照,在不影響業務的情況下,請您刪除已有的老快照。 |
403 | IncorrectDiskStatus.Transferring | The specified device is transferring, you can retry after the process is finished. | 指定磁盤正在遷移中,請在遷移完畢后重試。 |
403 | IncorrectDiskStatus | The current disk status does not support this operation. | 當前的磁盤不支持此操作,請您確認磁盤處于正常使用狀態,是否欠費。 |
403 | InvalidSystemSnapshot.Missing | %s | - |
403 | IncorrectDiskStatus.CreatingSnapshot | A previous snapshot creation is in process. | 當前磁盤有創建中的快照,請您等待創建完成再試。 |
403 | InvalidParameter.KMSKeyId.CMKUnauthorized | The CMK needs to be added ECS tag. | CMK 未授權 |
403 | InvalidParameter.KMSKeyId.CMKNotEnabled | The CMK needs to be enabled. | 加密云盤設置了 KMSKeyId 后,CMK必須處于啟用狀態。您可以調用密鑰管理服務的 DescribeKey 接口查詢指定CMK的相關信息。 |
403 | InvalidParameter.KMSKeyId.KMSUnauthorized | ECS service have no right to access your KMS. | ECS 服務無權訪問您的 KMS。 |
403 | QuotaExceed.Tags | %s | 標簽數超過可以配置的最大數量。%s為變量,將根據調用API的實際情況動態返回錯誤信息。 |
403 | InvalidSnapshotCategory.NotSupportImageCreation | The specified snapshot category does not support create image. | - |
403 | TooManySnapshot.Unfinished | There are too many snapshots being created, please wait for them to be created done. | - |
403 | HibernationConfigured.InstanceOperationForbidden | The operation is not permitted due to limit of the hibernation configured instance. | 不符合開啟休眠選項的實例的相關限制,操作不被允許。 |
403 | SnapshotNotReady | The specified snapshot is not ready. | 快照未完成創建,無法用來創建鏡像。 |
403 | IncorrectInstanceStatus.NeedRestart | The instance needs to be restarted after adding a disk in a shutdown status. | 在關機狀態下添加云盤后需要重啟實例后才能創建自定義鏡像。 |
403 | QuotaExceed.ConcurrentSnapshotQuota | The number of snapshots being created for the disk %s has exceeded the concurrent quota (%s). Please wait for the previous snapshots to complete before trying again. | 該磁盤正在創建的快照數量已超過并發配額,請等待之前的快照完成后再重試。 |
404 | InvalidSnapshotId.NotFound | The specified SnapshotId does not exist. | 指定的快照不存在,請您檢查快照是否正確。 |
404 | InvalidInstanceId.NotFound | The specified InstanceId does not exist. | 指定的InstanceId不存在。 |
404 | InvalidResourceGroup.NotFound | The ResourceGroup provided does not exist in our records. | 資源組并不在記錄中。 |
500 | InternalError | The process of creating snapshot has failed due to some unknown error. | 創建快照失敗。 |
500 | InternalError | The request processing has failed due to some unknown error, exception or failure. | 內部錯誤,請重試。 |
訪問錯誤中心查看更多錯誤碼。
變更歷史
變更時間 | 變更內容概要 | 操作 |
---|---|---|
2024-12-05 | OpenAPI 錯誤碼發生變更、OpenAPI 入參發生變更 | 查看變更詳情 |
2024-10-22 | OpenAPI 錯誤碼發生變更 | 查看變更詳情 |
2024-06-12 | OpenAPI 錯誤碼發生變更 | 查看變更詳情 |
2024-05-09 | OpenAPI 錯誤碼發生變更 | 查看變更詳情 |
2021-06-17 | OpenAPI 錯誤碼發生變更 | 查看變更詳情 |