调用ImportImage导入一份您的本地镜像文件到云服务器ECS,作为自定义镜像出现在相应地域中。后续您可以使用导入的镜像创建ECS实例(RunInstances),或者更换实例的系统盘(ReplaceSystemDisk)。
接口说明
调用该接口时,您需要注意:
-
您必须提前上传镜像文件到对象存储 OSS。具体操作,请参见上传文件。
-
为避免部分服务器、虚拟机或者云主机的操作系统在导入自定义镜像后,创建的 ECS 实例无法启动,您需要在导入镜像前检查是否需要在源服务器中安装 virtio 驱动。具体操作,请参见安装 virtio 驱动。
-
首次导入镜像时,您必须提前通过访问控制 RAM 授权 ECS 访问您的 OSS Bucket,否则会报错
NoSetRoletoECSServiceAccount
或InvalidOperation.CloudBoxImageImportRoleRequired
。分为以下两种场景情况:-
不通过云盒导入镜像文件:您可以通过 RAM 管理控制台一键完成授权操作,具体的授权页面,请参见云资源访问授权。您也可以手动完成授权操作,部分操作中策略与权限如下所示。具体操作,请参见账号访问控制。
-
创建角色
AliyunECSImageImportDefaultRole
(必须是这个名称,否则导入镜像会失败),角色的策略为:{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }
-
在该角色下,添加系统策略
AliyunECSImageImportRolePolicy
。您也可以创建自定义策略,权限必须包含:{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:GetBucketLocation", "oss:GetBucketInfo" ], "Resource": "*", "Effect": "Allow" } ] }
-
-
通过云盒导入镜像文件:您可以通过 RAM 管理控制台一键完成授权操作,具体的授权页面,请参见云资源访问授权。您也可以手动完成授权操作,部分操作中策略与权限如下所示。具体操作,请参见账号访问控制。
-
创建角色
AliyunECSCloudBoxImageImportDefaultRole
(必须是这个名称,否则导入镜像会失败),角色的策略为:{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }
-
在该角色下,添加系统策略
AliyunECSCloudBoxImageImportRolePolicy
。您也可以创建自定义策略,权限必须包含:{ "Version": "1", "Statement": [ { "Action": [ "oss-cloudbox:GetObject", "oss-cloudbox:GetBucketLocation", "oss-cloudbox:GetBucketInfo" ], "Resource": "*", "Effect": "Allow" } ] }
-
-
-
不能删除正在导入的镜像,只能调用 CancelTask 取消导入镜像任务。
-
导入镜像的地域必须跟镜像文件上传的 OSS Bucket 的地域相同。
-
参数
DiskDeviceMapping.N
中 N 的取值范围为 1~17。N 为 1 时表示系统盘,N 为 2~17 时表示数据盘,当 N 大于 17 时系统会自动忽略。 -
当参数
Architecture
取值为arm64
,或者参数Platform
取值为CentOS Stream
、Anolis
、AlmaLinux
、UOS
、Kylin
或Rocky Linux
时,您需要注意:-
为了使导入后的镜像支持配置密码或者支持修改密钥对,镜像必须满足以下条件:
-
操作系统的内核需要支持
CONFIG_FW_CFG_SYSFS
特性。Linux 社区内核 4.6 版本之后默认支持该特性,CentOS 的内核在 3.10.0-826.el7 版本之后默认支持该特性。您可以在该镜像对应的服务器内运行grep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)
命令,如果回显结果中包含CONFIG_FW_CFG_SYSFS=y
信息,则说明该镜像中的内核已支持CONFIG_FW_CFG_SYSFS
特性。 -
操作系统中已安装阿里云最新版本 cloud-init。其中,19.1 版本 cloud-init 必须在 19.1.3 版本及以上,部分低版本操作系统中的 0.7.6a 版本 cloud-init 必须在 0.7.6a15 版本及以上。具体操作,请参见安装 cloud-init。
-
操作系统需要支持 SHA-512 加密算法。
-
-
为了使导入后的镜像支持扩容云盘与扩容文件系统,镜像必须满足以下条件:
-
操作系统的内核版本需要高于 3.6 版本。
-
支持 growpart 命令。支持该命令需要安装
cloud-utils-growpart
包,不同操作系统安装方式有所不同。具体操作,请参见扩展分区和文件系统(Linux)。 -
支持 resize2fs 命令。支持该命令需要安装
e2fsprogs
包,该包在操作系统中默认已安装,如果没有安装您需要自行安装。 -
操作系统中已安装阿里云最新版本 cloud-init。其中,19.1 版本 cloud-init 必须在 19.1.3 版本及以上,部分低版本操作系统中的 0.7.6a 版本 cloud-init 必须在 0.7.6a15 版本及以上。具体操作,请参见安装 cloud-init。
-
-
-
如果您待导入的自定义镜像对应的系统架构为 arm64 时,您需要设置其 RTC 时钟使用 UTC 时间标准。具体操作,请参见 Linux 时间和时区说明。
-
强烈建议在导入镜像时配置镜像检测参数,有助于系统帮助优化您的镜像。更多信息,请参见镜像检测概述。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
ecs:ImportImage | update | *全部资源 * |
| 无 |
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
RegionId | string | 是 | 源自定义镜像的地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。 | cn-hangzhou |
ImageName | string | 否 | 镜像名称。长度为 2~128 个字符。必须以大小写字母或中文开头,不能以 | ImageTestName |
Description | string | 否 | 镜像的描述信息。长度为 2~256 个英文或中文字符,不能以 | TestDescription |
Architecture | string | 否 | 系统架构。取值范围:
默认值:x86_64。 | x86_64 |
OSType | string | 否 | 操作系统类型。取值范围:
默认值:linux。 | linux |
Platform | string | 否 | 操作系统版本。取值范围:
默认值:Others Linux。 | Aliyun |
BootMode | string | 否 | 修改镜像的启动模式。取值范围:
默认值:BIOS。如果 注意
为了避免使用镜像不支持的启动模式导致实例无法正常启动,请您务必在选择该参数之前了解目标镜像支持的启动模式。镜像启动模式详情,请参见镜像启动模式。
| BIOS |
RoleName | string | 否 | 导入镜像时,使用的 RAM 角色名称。 | AliyunECSImageImportDefaultRole |
LicenseType | string | 否 | 导入镜像后,激活操作系统采用的许可证类型。取值范围:
默认值:Auto。 | Auto |
ResourceGroupId | string | 否 | 导入镜像所在的企业资源组 ID。 | rg-bp67acfmxazb4p**** |
DiskDeviceMapping | array<object> | 否 | 创建的自定义镜像信息列表。 | |
object | 否 | 创建的自定义镜像信息列表。 | ||
DiskImSize | integer | 否 | 自定义镜像大小。单位:GiB。 该空间由系统盘和数据盘组成,您必须保证系统盘的空间大小大于等于导入的镜像文件大小。取值范围:
当您将源镜像文件上传至 OSS 后,可以在 OSS Bucket 中查看镜像文件的大小。 说明
该参数即将被弃用,为提高兼容性,请尽量使用 DiskDeviceMapping.N.DiskImageSize 参数。
| 80 |
Device | string | 否 | 指定 DiskDeviceMapping.N.Device 在自定义镜像中的设备名。 说明
该参数即将停止使用,为提高代码兼容性,建议您尽量不要使用该参数。
| null |
OSSBucket | string | 否 | 镜像文件所在的 OSS Bucket。 说明
首次导入镜像到该 OSS Bucket 前,请参见本文档的接口说明添加 RAM 授权策略,否则会报错 NoSetRoletoECSServiceAccount 。
| ecsimageos |
Format | string | 否 | 镜像格式。取值范围:
默认值:无,表示阿里云自动检测镜像格式,以检测格式为准。 | QCOW2 |
OSSObject | string | 否 | 镜像上传至 OSS Bucket 后,保存在 Bucket 中的镜像文件的文件名(key)。 | CentOS_5.4_32.raw |
DiskImageSize | integer | 否 | 导入镜像后,自定义镜像的空间大小。 该空间由系统盘和数据盘组成,您必须保证系统盘的空间大小大于等于导入的镜像文件大小。取值范围:
当您将源镜像文件上传至 OSS 后,可以在 OSS Bucket 中查看镜像文件的大小。 | 80 |
Tag | array<object> | 否 | 镜像的标签列表。 | |
object | 否 | 镜像的标签列表。 | ||
Key | string | 否 | 镜像的标签键。N 的取值范围:1~20。一旦传入该值,则不允许为空字符串。最多支持 128 个字符,不能以 | TestKey |
Value | string | 否 | 镜像的标签值。N 的取值范围:1~20。一旦传入该值,允许为空字符串。最多支持 128 个字符,不能以 | TestValue |
DetectionStrategy | string | 否 | 镜像检测策略,不配置此参数时不触发检测。仅支持标准(Standard)检测模式。 说明
目前已支持大部分的 Linux/Windows 版本,关于镜像检测项与操作系统限制说明,请参见镜像检测概述和镜像检测操作系统限制。
| Standard |
StorageLocationArn | string | 否 | 指定云盒的资源名称(ARN),用于唯一标识云端存储位置。 说明
仅当您需要从 OSS ON 云盒中导入镜像文件时,才需提供此参数的值。如果您使用的存储服务不是 OSS ON 云盒,则无需设置此参数。更多信息,请参见什么是 OSS ON 云盒。
正确的 ARN 格式应遵循: | arn:acs:cloudbox:cn-hangzhou:123456:cloudbox/cb-xx***123 |
DryRun | boolean | 否 | 是否只预检此次请求。取值范围:
默认值:false。 | false |
Features | object | 否 | 镜像特性相关属性。 | |
NvmeSupport | string | 否 | 镜像是否支持 NVMe。可能值:
| supported |
ClientToken | string | 否 | 保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken 只支持 ASCII 字符,且不能超过 64 个字符。更多信息,请参见如何保证幂等性。 | 123e4567-e89b-12d3-a456-426655440000 |
返回参数
示例
正常返回示例
JSON
格式
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"ImageId": "m-bp67acfmxazb4p****",
"TaskId": "t-bp67acfmxazb4p****",
"RegionId": "cn-hangzhou"
}
错误码
HTTP status code | 错误码 | 错误信息 | 描述 |
---|---|---|---|
400 | UnsupportedSuffix.OSSObject | The specified OSS object suffix is not supported. | 不支持指定的OSS对象后缀。 |
400 | MissingParameter | An input parameter "RegionId" that is mandatory for processing the request is not supplied. | - |
400 | MissingParameter | An input parameter "DiskDeviceMapping.1.OSSBucket" that is mandatory for processing the request is not supplied. | - |
400 | MissingParameter | An input parameter "DiskDeviceMapping.1.OSSObject" that is mandatory for processing the request is not supplied. | - |
400 | InvalidImageName.Malformed | The specified Image name is wrongly formed. | 镜像名称格式错误。长度为2~128个字符。必须以大小字母或中文开头,不能以aliyun和acs:开头,不能包含http://或者https://。可以包含数字、半角句号(.)、半角冒号(:)、下划线(_)或者短划线(-)。 |
400 | InvalidOSSObject.Malformed | The specified OSS object is wrongly formed. | 指定的 OSS Object 不合法。 |
400 | InvalidOSSBucket.Malformed | The specified OSS bucket is wrongly formed. | - |
400 | InvalidOSSObject.Size | The specified OSS object size is zero. | - |
400 | InvalidDescription.Malformed | The specified Image description is wrongly formed. | 镜像描述格式错误。 |
400 | InvalidArchitecture.Malformed | The specified Architecture is wrongly formed. | 参数 Architecture 格式错误。 |
400 | InvalidPlatform.Malformed | The specified Platform is wrongly formed. | 指定的镜像操作系统发行版不合法。 |
400 | InvalidOSType.Malformed | The specified OSType is wrongly formed. | 格式不对。 |
400 | InvalidImageName.Duplicated | The destination image is exist. | 指定的镜像名已存在。 |
400 | InvalidImageSize | %s | 镜像大小不符合要求。 |
400 | InvalidDataDiskSize | The specified DiskDeviceMapping.N.DiskImSize should be in the specified range. | 指定的 DiskDeviceMapping.N.DiskImSize 超出取值范围。 |
400 | InvalidImageFormat.Malformed | The specified Image Format is wrongly formed. | 指定的镜像格式错误。 |
400 | InvalidRegionId.NotFound | The specified RegionId does not exist. | 指定的地域 ID 不存在。 |
400 | InvalidRegion.NotSupport | The specified region does not support image import or export. | 指定的地域暂时不支持此操作。 |
400 | InvalidOSSBucket.NotFound | The specified OSS bucket does not exist in this region. | 指定的 bucket 不存在。 |
400 | InvalidOSSObject.NotFound | The specified OSS object does not exist in this region. | 指定的 OSS object 不存在。 |
400 | InvalidOSSObject.NeedRestore | The specified OSS object is a archive object, need restore first. | - |
400 | InvalidOSSBucket.NotMatched | The specified OSS bucket is incorrect, %s. | 指定的 OSS Bucket 有误,具体信息请参见错误信息的实际返回结果。 |
400 | InvalidLicenseType.NotSupported | The specified LicenseType is not supported. | - |
400 | InvalidLicenseType.BYOLOnly | Only BYOL LicenseType is supported for the current platform provided. | - |
400 | InvalidOSSBucket.FlowLimit | %s | - |
400 | InvalidImageFormat.RegionNotSupported | The specified image format is not supported in current region. | - |
400 | InvalidBootMode.Malformed | The specified parameter "BootMode" is malformed. | - |
400 | InvalidParameter.DetectionStrategy | The specified parameter DetectionStrategy is invalid. | - |
400 | InvalidBootMode.NotSupport | The specified parameter BootMode is not supported for current image architecture. | 当前的镜像架构不支持设置该启动模式。 |
400 | DRYRUN.SUCCESS | This request is a dryrun request with successful result. | 您设置了预检此次请求,并且检查通过。 |
400 | InvalidClientToken.Malformed | The specified parameter clientToken is not valid. | 指定的幂等参数不合法。 |
403 | ImageIsImporting | The specified Image is importing. | 指定镜像正在导入,无法执行操作。 |
403 | QuotaExceed.Image | The Image Quota exceeds. | 自定义镜像额度已用完。 |
403 | ImportImageFailed | Importing image is failed, Please contact the administrator. | 导入镜像失败,请联系系统管理员排查。 |
403 | UserNotInTheWhiteList | The user is not in the white list of importing image. | 用户未被授权导入镜像。 |
403 | NoSetRoletoECSServiceAcount | ECS service account Have no right to access your OSS.please attach a role of access your oss to ECS service account. | ECS 官网服务账号没有权限访问您指定的 OSS 的 bucket 和 Object。 |
403 | InvalidParameter.Malformed | The specified parameter "DiskDeviceMapping.n.Device " is not valid. | - |
403 | MissingParameter.DiskDeviceMapping | The specified parameter DiskDeviceMapping is not supplied. | 参数 DiskDeviceMapping 不能为空。 |
403 | InvalidOSS.NotAuthorized | The specified OSS bucket or object is not allowed to access. | - |
403 | InvalidBlockSize.NotSupport | %s | - |
403 | InvalidImageFormat.Malformed | %s | - |
403 | ImageCheckUnsupported.WindowsImage | Image check is unsupported for windows image. | - |
403 | InvalidVHDImage.IncorrectSize | The specified size of the VHD image does not meet the 'header.MaxTableEntries * header.BlockSize' specification. | 指定的VHD镜像大小不符合 'header.MaxTableEntries * header.BlockSize' 的规范。 |
403 | InvalidOSSBucket.EncryptUnsupported | Accessing objects from encrypted OSS bucket is not supported. | 不支持从加密的OSS bucket读取对象。 |
403 | InvalidArchitecture.PlatformUnsupported | The OS platform you selected does not support the specified architecture. | 您选择的操作系统平台不支持指定的架构类型。 |
403 | InvalidAccountStatus.OSSDisabled | OSS is disabled due to invalid account status. | 由于帐户状态无效,OSS被禁用。 |
403 | InvalidStorageLocation.NotFound | The specified cloud box storage location %s could not be found. | 找不到指定的云盒存储位置。 |
403 | InvalidOperation.CloudBoxImageImportRoleRequired | The role for cloud box image import is not set to the ECS service. | 没有设置用于云盒镜像导入的角色给ECS服务。 |
403 | InvalidOperation.CloudBoxImageImportUnsupported | Importing cloud box images is not supported. | 不支持导入云盒镜像。 |
404 | InvalidResourceGroup.NotFound | The ResourceGroup provided does not exist in our records. | 资源组并不在记录中。 |
访问错误中心查看更多错误码。
变更历史
变更时间 | 变更内容概要 | 操作 |
---|---|---|
2024-11-14 | OpenAPI 错误码发生变更 | 查看变更详情 |
2024-10-09 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-06-12 | OpenAPI 错误码发生变更 | 查看变更详情 |
2023-08-23 | OpenAPI 错误码发生变更 | 查看变更详情 |
2023-05-26 | OpenAPI 错误码发生变更 | 查看变更详情 |
2023-04-19 | OpenAPI 错误码发生变更 | 查看变更详情 |
2023-04-12 | OpenAPI 错误码发生变更 | 查看变更详情 |
2022-07-11 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2021-06-17 | OpenAPI 错误码发生变更 | 查看变更详情 |