自定义镜像迁移方案
1. 概述
近日,有同学问到如果控制台不支持自定义镜像导出的情况下,该怎么进行自定义镜像的迁移。所以就开始着手写了这个文档,希望能够帮到有类似需求的同学。
自定义镜像是不能跨地域使用的,如果需要跨云平台、跨地域、跨账号使用自定义镜像,则需要进行自定义镜像的一次迁移。整个迁移过程主要动作包括:
- 使用API将源地域的自定义镜像导出镜像到oss中。
- 从目标地域下载源地域镜像文件并导入到目标地域的oss中。
- 在目标地域创建自定义镜像,将OSS中的镜像文件导入。
从而实现跨地域跨账号使用自定义镜像,第二、第三环节主要通过控制台操作,步骤简单,下文主要对自定义镜像导出环节进行详细阐述。
2. 导出自定义镜像
导出自定义镜像是将用户ECS 环境中生成的自定义镜像导出到OSS的bucket中,生成一个object。
2.1 环境要求
导出自定义镜像所需的前置条件如下:
- 先在管控台生成一个自定义镜像。
- 导出镜像的地域必须跟存放镜像文件的OSS在同一个账号下的同一个地域。
- 操作账号需要在后台加入API的白名单中(联系后台产品同学操作)
- 需要通过 RAM 给阿里云 ECS 官方服务账号授权写入 OSS 的权限。
i.创建角色:AliyunECSImageImportDefaultRole。必须是这个名称,否则导入镜像会失败。角色的策略:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ecs.aliyuncs.com" ] } } ], "Version": "1" }
ii.在该角色下直接加入默认的系统权限策略:AliyunECSImageImportRolePolicy。这个策略是 ECS 提供导入镜像的默认策略,您也可以创建自定义策略,权限需要包含:
{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject", "oss:PutBucketLocation" ], "Resource": "*", "Effect": "Allow" } ] }
2.2 请求参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
RegionId | String | 是 | 镜像所在的 Region ID。RegionId 的列表详见地域列表 |
ImageId | String | 是 | 源自定义镜像的 ID |
OSSBucket | String | 是 | 镜像文件存放用户的 OSS Bucket |
OSSPrefix | String | 否 | 设置OSS Object的前缀 |
ImageFormat | String | 否 | 镜像格式,暂时只支持:RAW 和 VHD。默认值:RAW |
2.3 返回参数
名称 | 类型 | 描述 |
---|---|---|
RegionId | String | 地域ID |
ImageId | String | 镜像的 ID |
exportTaskId | String | 导出镜像任务ID |
2.4 导出示例
下面以使用ECS Java SDK 导出进项的方法ExportImage为例,介绍使用SDK导出自定义镜像的完整流程。
2.4.1 环境准备
1.阿里云Java SDK适用JDK 6及以上版本。
2.要使用阿里云Java SDK,您需要一个云账号以及一对Access Key ID和Access Key Secret。请在阿里云控制台中的AccessKey管理页面上创建和查看您的Access Key,或者联系您的系统管理员。
2.4.2 获取和安装SDK
阿里云Java SDK发布在 https://develop.aliyun.com/tools/sdk#/java 这个地址,请前往这些产品的详情页获取相应的SDK。
要成功地调用一个产品的SDK,您至少需要首先安装SDK核心库。 即您需要获取和安装2个SDK,分别是SDK核心库和ECS的SDK。
您可以通过在集成开发环境(Eclipse/IDE)中导入Jar包来安装SDK,具体步骤如下:
1.将下载的 aliyun-java-sdk-XXX.jar 文件复制到您的项目文件夹中。
2.在Eclipse中,依次选择菜单:工程,Properties,Java Build Path, Add JARs。
3.选中您下载的这些JAR文件。
2.4.3 配置参数
1.生成DefaultProfile的对象profile,该对象存放 Access Key ID 和 Access Key Secret 和默认的地域信息:
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>","<accessSecret>");
2.生成 IAcsClient 的对象client:
IAcsClient client = new DefaultAcsClient(profile);
3.创建一个对应方法的 Request,类的命名规则一般为API 的方法名加上 “Request”,如获得镜像列表的 API 方法名为ExportImage,对应的请求类名为ExportImageRequest,直接使用构造函数生成一个默认的类exportImage:
ExportImageRequest exportImage = new ExportImageRequest();
4.请求类生成好之后需要通过Request 类的 setXxx 方法设置必要的信息,即 API 参数中必须要提供的信息,同样的也可以通过setXxx方法设置其他可选的参数:
在此步骤中您需要配置的参数有:
- ImageId - OSSBucket - OSSPrefix(可选) - ImageFormat(可选)
exportImage.setImageId("m-bp1an6so65agtbgihguf");
5.参数设置完毕后就可以通过 IAcsClient 对象来获得对应 Request 的响应了:
ExportImageResponse response = client.getAcsResponse(exportImage);
6.接着可以调用 response 中对应的 getXxx 方法获得返回的参数值了
System.out.println(response.getTaskId());
完整代码如下:
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ecs.model.v20140526.*; import com.aliyuncs.exceptions.ClientException; class exportTest { public static void main(String[] args) { try { DefaultProfile.addEndpoint("cn-beijing-xx", "cn-beijing-xx", "Ecs", "ecs.aliyuncs.com"); } catch (ClientException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 初始化 DefaultProfile profile = DefaultProfile.getProfile("cn-beijing-xx", " <accessKeyId>"," <accessSecret>"); IAcsClient client = new DefaultAcsClient(profile); //设置参数 ExportImageRequest exportImage = new ExportImageRequest(); exportImage.setRegionId("cn-beijing-xx"); exportImage.setImageId("m-bpxxxxxxx"); exportImage.setOSSBucket("bucketname"); // 发起请求 try { ExportImageResponse response = client.getAcsResponse(exportImage); System.out.println(response.getRegionId()); System.out.println(response.getRequestId()); System.out.println(response.getTaskId()); }catch (Exception e) { e.printStackTrace(); } } }
3. 导入自定义镜像
导入自定义镜像是将用户线下的一个镜像文件导入到 ECS 环境中生成一个自定义镜像。可以使用这个镜像来创建 ECS 实例和更换系统盘,具体操作可参考官方文档导入自定义镜像部分https://help.aliyun.com/document_detail/25464.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
华为开源全场景 AI 计算框架 MindSpore,整体开发效率提升 50%+
今年华为开发者大会 2020(Cloud)上,继发布开源的 openEuler 20.03 LTS 版本之后,3 月 28 日,华为对外开源 MindSpore,这是一个全场景 AI 计算框架,它的特性是可以显著减少训练时间和成本(开发态)、以较少的资源和最高能效比运行(运行态),同时适应包括端、边缘与云的全场景(部署态)。 MindSpore 源码托管于 Gitee,地址: https://gitee.com/mindspore 全场景支持是在隐私保护日渐重要的背景下,实现 AI 无所不在越来越基础的需求。针对不同的运行环境,MindSpore 框架架构上支持可大可小,适应全场景独立部署。 根据介绍,MindSpore 框架通过协同经过处理后的、不带有隐私信息的梯度、模型信息,而不是数据本身,以此实现在保证用户隐私数据保护的前提下跨场景协同。 除了隐私保护,MindSpore 还将模型保护内建于框架中,实现模型的安全可信。 MindSpore 通过实现 AI 算法即代码,使开发态变得更加友好,可以显著减少模型开发时间。以一个 NLP(自然语言处理)典型网络为例,相比其它框架,用 Mi...
- 下一篇
如何在 CentOS 8 上安装 Elasticsearch
本文最先发表在: https://www.itcoder.tech/posts/how-to-install-elasticsearch-on-centos-8/ Elasticsearch 是一个开源全文搜索和分析引擎。它支持 RESTful 操作,并且允许你存储,搜索,并且实时分析大量的数据。Elasticsearch是最流行的搜索引擎之一,可为具有复杂搜索要求的应用程序提供动力,例如大型电子商务商店和分析应用程序。 本文主要涉及在 CentOS 8 上安装 Elasticsearch。 一、 安装 Java Elasticsearch 是一个 Java 应用,因此,第一步就是安装 Java。 以 root 或者其他 sudo 用户身份运行下面的命令,去安装 OpenJDK 软件包: sudo dnf install java-11-openjdk-devel 通过打印Java 版本验证 Java 安装: java -version 输出将会像下面这样: openjdk version "11.0.5" 2019-10-15 LTS OpenJDK Runtime Environm...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- 2048小游戏-低调大师作品
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案