是的,阿里云无影云桌面(Wuying Cloud Desktop / EDS)支持通过 OpenAPI 来创建镜像。
您可以使用阿里云提供的 SDK 或直接调用 HTTP API 来实现自动化创建镜像,这通常用于批量部署、版本管理或集成到 CI/CD 流程中。
1. 核心 API 信息
API 名称:
CreateBundle注意:在无影云桌面的术语中,“镜像”通常被称为 “桌面模板” 或 “Bundle”。创建自定义镜像的操作在 API 中对应的是创建自定义模板。
功能描述:基于一个已存在的云桌面实例(Desktop),创建一个包含该实例系统盘和数据盘状态的自定义模板(镜像)。
所属产品:无影云桌面 (eds)
API 版本:
2020-09-10(具体版本号请以最新文档为准,通常 SDK 会自动处理)
2. 调用前提条件
在调用 API 之前,必须满足以下条件,否则接口会报错:
桌面状态:源云桌面实例必须处于
Running(运行中)或Stopped(已停止)状态。不能在创建中、重启中等中间状态。无进行中的任务:该桌面当前不能有正在执行的其他任务(如正在扩容、正在重置密码等)。
权限:调用的 RAM 用户需要拥有
eds:CreateBundle的相关权限。
3. 关键请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| RegionId | String | 是 | 地域 ID,例如 cn-hangzhou。 |
| DesktopId | String | 是 | 源云桌面的 ID,例如 ecd-{xxxxx}。这是镜像的数据来源。 |
| BundleName | String | 是 | 自定义模板(镜像)的名称。 |
| Description | String | 否 | 自定义模板的描述信息。 |
| ClientToken | String | 否 | 客户端幂等 Token,防止重复提交。 |
4. 代码示例 (Python SDK)
以下是使用阿里云 Python SDK (alibabacloud_edas20200910 或通用 alibabacloud_gateway_spi) 的调用示例。
注:无影云桌面的 SDK 包名可能随版本更新变化,建议安装最新的 alibabacloud_edas20200910 或使用通用客户端调用。
from alibabacloud_edas20200910.client import Client as Edas20200910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_edas20200910 import models as edas_20200910_models
def create_custom_image():
# 1. 配置认证信息
config = open_api_models.Config(
access_key_id='YOUR_ACCESS_KEY_ID',
access_key_secret='YOUR_ACCESS_KEY_SECRET'
)
# 2. 设置 Endpoint (以华东1为例)
config.endpoint = 'eds.cn-hangzhou.aliyuncs.com'
client = Edas20200910Client(config)
# 3. 构建请求参数
request = edas_20200910_models.CreateBundleRequest(
region_id='cn-hangzhou',
desktop_id='ecd-your-desktop-id', # 源桌面 ID
bundle_name='My-Custom-Image-V1', # 镜像名称
description='Created via OpenAPI for automation'
)
try:
# 4. 发送请求
response = client.create_bundle(request)
print(f"创建任务提交成功!")
print(f"模板 ID (BundleId): {response.body.bundle_id}")
print(f"状态:{response.body.status}")
# 注意:创建镜像是异步操作,返回的是任务提交成功,需轮询状态查看是否制作完成
except Exception as e:
print(f"调用失败:{e}")
if __name__ == '__main__':
create_custom_image()5. 重要注意事项
异步操作:
CreateBundle是一个异步操作。API 返回成功仅代表任务提交成功,并不代表镜像已经制作完成。您需要调用
DescribeBundles接口,传入返回的BundleId,轮询查询Status字段。状态流转通常为:
Creating->Available(成功) 或CreateFailed(失败)。制作时间取决于桌面数据量大小,通常需要几分钟到几十分钟不等。
费用问题:
创建自定义模板(镜像)本身通常不收费,但存储这些镜像会占用 OSS 存储空间,可能会产生少量的存储费用(具体以阿里云官方计费说明为准)。跨地域使用:
创建的自定义模板通常是地域级资源。如果您需要在其他地域使用该镜像,可能需要先调用CopyBundle(如果支持) 或在目标地域重新基于该模板创建桌面(部分场景不支持直接跨地域复制,需确认最新功能)。API 文档查询:
由于 API 版本可能会迭代,建议在编写正式代码前,访问阿里云官方文档中心搜索 "CreateBundle" 或 "无影云桌面 API 参考" 获取最新的参数定义和错误码说明。文档地址关键词:
无影云桌面 CreateBundle
总结
您可以通过调用 CreateBundle 接口,指定 DesktopId 来自动化创建无影云桌面的自定义镜像(模板)。记得在代码中实现异步轮询逻辑以确认镜像最终制作成功。