AWS 使用 VM Import/Export 将 VM 作为映像导入

该文章介绍了如何通过AWS CLI使用Import/Export工具将自定义的OVA文件导入到Amazon EC2。首先,需要下载并安装AWS CLI,然后创建名为'vmimport'的IAM角色,并赋予相应的权限。接着,使用AWS CLI上传OVA文件到S3,最后执行导入命令以将VM映像转换为AMI。通过监控导入任务状态,确认完成后即可在EC2中使用导入的映像创建实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:
AWS中创建EC2 Linux时,大多是使用已经默认提供的镜像,当你需要是用自己的镜像文件创建对应的系统时,就需要导入自己的系统包,这时候你就用得到本篇文章了,实际操作过程请参考AWS官方文档为主,本文为辅。

使用AWS的 Import/Export 工具:
https://aws.amazon.com/cn/ec2/vm-import/

VM Import/Export 提供多种可将你的虚拟机导入 Amazon EC2 的方法

第一种方法是使用 AWS CLI 工具导入 VM 映像。启动时,只需:

  • 下载并安装 AWS 命令行接口。
  • 确认你的 VM 满足 VM Import 前提条件,准备好导入并从当前环境作为 OVA 文件(或 VMDK、VHD 或 RAW)导出。
  • 使用 AWS CLI 上传 VM 映像到 S3。多部分上传将提升性能。作为替代方法,您还可以使用 AWS Import 服务发送 VM 映像到 AWS。
  • 一旦上传 VM 映像,使用 ec2 import-image 命令导入您的 VM。作为本命令的一部分,您可以为导入的映像指定许可模式和其他参数。
  • 使用 ec2 describe-import-image-tasks 命令监控导入进度。
  • 一旦导入任务完成,您可以使用 ec2 run-instances 命令从导入流程期间生成的 AMI 创建 Amazon EC2 实例。

所需操作步骤:

AWS官方文档:使用 VM Import/Export 将 VM 作为映像导入:
https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html

1、OVA上传到S3 (此处省略,手动上传,很简单)。
2、创建命名为 vmimport 的 IAM 角色(见下文)。
【具体参照AWS官网:https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html#vmimport-role 】
3、执行AWS CLI导入命令(见下文)。

详细过程:
1、上传OVA到S3 (省略)
2、创建IAM角色 vmimport

若要创建服务角色,步骤如下:
2.1、创建一个名为 trust-policy.json 的文件

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}

使用create-role命令以创建一个名为的角色vmimport并授予 VM 导入/导出访问权限。确保您已指定在上一步中创建的 trust-policy.json 文件的位置的完整路径,并包含 file:// 前缀,如下例所示:

aws iam create-role --role-name vmimport --assume-role-policy-document "file://C:\import\trust-policy.json"

2.2、创建一个名为的文件role-policy.json使用以下策略,其中 disk-image-file-bucket 是磁盘映像的存储桶,export-bucket 是导出映像的存储桶:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket" 
         ],
         "Resource": [
            "arn:aws:s3:::vw你的桶的名字",
            "arn:aws:s3:::vw你的桶的名字/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:GetBucketAcl"
         ],
         "Resource": [
            "arn:aws:s3:::vw你的桶的名字",
            "arn:aws:s3:::vw你的桶的名字/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource": "*"
      }
   ]
}

返回内容如下,且在AWS的角色里面可以看到已经创建vmimport
在这里插入图片描述
在这里插入图片描述

2.3、使用下面的 put-role-policy 命令将策略挂载到之前创建的角色。
请务必指定 role-policy.json 文件位置的完整路径。

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:\import\role-policy.json"

然后可看到vmimport已经被添加了权限,这点很重要,添加不成功,执行命令会提示无权访问S3:
在这里插入图片描述
在这里插入图片描述

3、CLI导入VM:
在你本地创建文件containers.json,如下:
(https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmimport-image-import.html)

[
  {
    "Description": "My Server OVA",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "v你的桶的名字",
        "S3Key": "v你的ova包的名字.ova"
    }
}]

执行命令,导入:

aws ec2 import-image --description "My server VM" --disk-containers "file://C:\import\containers.json"

在这里插入图片描述

查看状态:

aws ec2 describe-import-image-tasks --import-task-ids import-ami-1234567890abcdef0

在这里插入图片描述

状态信息值如下:active— 正在运行导入任务。

  • deleting— 正在取消导入任务。
  • deleted— 导入任务已取消。
  • updating— 导入状态正在更新。
  • validating— 正在验证导入的映像。
  • validated— 已验证导入的映像。
  • converting— 正在将导入的映像转换成 AMI。
  • completed— 导入任务已完成,并且 AMI 已准备就绪,随时可以使用。

完成之后会在AWS主页,AMI下可看到我们刚刚上传的映像:
在这里插入图片描述

再然后,就可以使用刚刚导入的映像创建实例了。
在这里插入图片描述

细节就是给角色vmimport授权时注意检查其指定的资源路径附上以上过程中使用的Json文件。

附:
监视导入映像任务 命令

aws ec2 describe-import-image-tasks --import-task-ids import-ami-05aff01e3f70a3ede

取消导入映像任务 命令

aws ec2 cancel-import-task --import-task-id import-ami-05aff01e3f70a3ede

创建vimport角色

aws iam create-role --role-name vmimport --assume-role-policy-document "file://D:\Users\User\Desktop\AWS\trust-policy.json"

策略挂载到角色vimport

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://D:\Users\User\Desktop\AWS\role-policy.json"

【全篇完】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软测小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值