把 ISO 格式的 Linux 镜像转换为 EC2 AMI

把 ISO 格式的 Linux 镜像转换为 EC2 AMI

Amazon EC2 默认并不支持 .iso 格式的镜像文件。本文将介绍如何把 iso 格式的 Linux 镜像文件转换为可以用来启动 Amazon EC2 实例的 AMI。
把 ISO 格式的 Linux 镜像转换为 EC2 AMI 2023-03-14 13:50:14
把 ISO 格式的 Linux 镜像转换为 EC2 AMI 0
把 ISO 格式的 Linux 镜像转换为 EC2 AMI
##### 前置条件 本方案基于 vm import 和 VirtualBox 实现。请先下载安装[VirtualBox](https://www.virtualbox.org/?trk=cndc-detail)。 下文中使用的 VirtualBox 版本:Version 6.1.12 r139181 (Qt5.6.2) **重要**:请先阅读[vm import的文档](https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html#prerequisites?trk=cndc-detail),确保您的iso文件是被vm import支持的。 ##### 制作镜像文件 以ubuntu-18.04.4-live-server-amd64为例。 在VirtualBox中点击New以创建新的虚拟机 ![image.png](https://dev-media.amazoncloud.cn/29fbf03c69954d7a95d5a4efd516beac_image.png "image.png") 输入名称,选择保存虚拟机的位置,选择正确的系统,此处为 linux → ubuntu 64bit ![image.png](https://dev-media.amazoncloud.cn/e9e3419fa2f440dcae4b1375da45ec92_image.png "image.png") 后面的配置均使用默认值即可,直到创建完毕。我们会得到: ![image.png](https://dev-media.amazoncloud.cn/326ce188b1c34070a2e01e9604cf2af7_image.png "image.png") 选中此虚拟机后,点击 Settings → Storage → Empty → 光盘图标 → Choose a disk file,选择我们的 ubuntu 镜像文件 ![image.png](https://dev-media.amazoncloud.cn/b42ad4b96ced492cb5ed94b486d2c847_image.png "image.png") 此时我们已经创建好了一个虚拟机。我们可以点击菜单栏的Start来启动虚拟机,并进行定制化 ![image.png](https://dev-media.amazoncloud.cn/919ab25e49ca477fb4fd7b3da2e4bd0f_image.png "image.png") **安装的时候记得选中安装 SSH 服务器**,这样才能远程访问 ![image.png](https://dev-media.amazoncloud.cn/6226a3dc663e4cfb8965ac20a590adc8_image.png "image.png") 接下来要把虚拟机导出为 vm import 支持的 ova 格式文件 ![image.png](https://dev-media.amazoncloud.cn/ad814080071c41978b2ba44644981eed_image.png "image.png") 导出时选中 include ISO image files,其他选项使用默认配置导出即可。 ##### 上传到 Amazon 在控制台中左上角点击【服务】,选择【S3】进入 S3 控制台 ![image.png](https://dev-media.amazoncloud.cn/31b9c46c90c941c69a6e61e126e9262e_image.png "image.png") 点击【创建存储桶】,输入存储桶名称并点击创建 ![image.png](https://dev-media.amazoncloud.cn/d205489a1c0743868f9defef946146de_image.png "image.png") 参考[此文档](https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/install-cliv2.html?trk=cndc-detail)下载并安装 Amazon CLI。 参考[此文档](https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config?trk=cndc-detail)使用 amazon configure 命令配置 Amazon CLI。 参考[此文档](https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html#vmimport-role?trk=cndc-detail),使用 Amazon CLI 创建 vm import 所需要的角色。其中需要您使用存储桶的 ARN,您可以在 S3 控制台,选中存储桶后复制 ARN ![image.png](https://dev-media.amazoncloud.cn/5fee490cc33647ae9da86a32f1163072_image.png "image.png") 接下来把镜像文件上传到 S3 存储桶。此处使用了 Amazon CLI 的[cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html?trk=cndc-detail)命令。您也可以使用[开源的S3断点续传工具](https://github.com/aws-samples/amazon-s3-resumable-upload?trk=cndc-detail) aws s3 cp import-linux-iso.ova s3://linux-import-test-123/import-linux-iso.ova 上传后可以在 S3 存储桶中看到 ![image.png](https://dev-media.amazoncloud.cn/8f45e40b8f924732bae5e8a21ad10f0e_image.png "image.png") 参考[此文档](https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html#import-vm?trk=cndc-detail)把 S3 中的镜像文件转换为 Amazon EC2 能够使用的 AMI 。此处我的 containers.json 文件内容如下: ``` \[ { "Description": "My Server OVA", "Format": "ova", "UserBucket": { "S3Bucket": "linux-import-test-123", "S3Key": "import-linux-iso.ova" } }] ``` 执行 import-image 命令后的输出: ![image.png](https://dev-media.amazoncloud.cn/53598c81eae146d6a7efd86f17688026_image.png "image.png") 考[此文档](https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html#check-import-task-status?trk=cndc-detail)可以查看导入进度 ![image.png](https://dev-media.amazoncloud.cn/7a620b9c772440018a079bed6cf96607_image.png "image.png") 导入完毕时,查询结果中的状态显示为 completed ![image.png](https://dev-media.amazoncloud.cn/f86b2d45c1bb4f179c167bae0081cdc4_image.png "image.png") 登录 EC2 控制台以查看 ![image.png](https://dev-media.amazoncloud.cn/b73588debca64cf7abf61d1fffb56436_image.png "image.png") 可以看到已经被导入的 AMI: ![image.png](https://dev-media.amazoncloud.cn/c5c1d24dade6455aa6814337316f1281_image.png "image.png") 启动新实例时就可以选择此 AMI: ![image.png](https://dev-media.amazoncloud.cn/b1d1c19cd24b4b4ab02d4d35c435e663_image.png "image.png") #### 参考文档 [<https://docs.oracle.com/cd/E26217_01/E26796/html/qs-create-vm.html>](https://docs.oracle.com/cd/E26217_01/E26796/html/qs-create-vm.html?trk=cndc-detail) [<https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html>](https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html?trk=cndc-detail)