在aws云将本地虚拟机镜像上传

这篇具有很好参考价值的文章主要介绍了在aws云将本地虚拟机镜像上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:

VM Import/Export 要求 - VM Import/Export

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

创建镜像 - EC2 Image Builder

1.将vmdk等格式的镜像上传至S3

本地文档上传至S3参考:上传对象 - Amazon Simple Storage Service

我这里采用的使用 S3 控制台。 

 在官网给的案例为ova格式的镜像导入 VM,如下图:

aws导入ova,aws,云计算,azure

但在实践中,执行aws ec2 import-image命令导入镜像会报错:

ClientError: Disk validation failed [OVF file parsing error: Unsupported non-ASCII characters found in OVF file path.]

具体原因并不清楚,只能猜测是镜像格式有问题,于是更换了镜像格式。vmdk、raw、qcow2格式的镜像都可试试,将其上传至S3。

2.创建命名为 vmimport 的 IAM 角色

参考:VM Import/Export 要求 - VM Import/Export (amazon.com)

1.赋予IAM 用户所需的权限

如果你以AWS Identity and Access Management(IAM) 用户,您的 IAM 策略中需要拥有操作S3桶test-image的权限,才能使用 VM Import/导出。在这里,因为我主要是测试步骤,所以给了S3桶的全部权限,将用户添加至策略组:arn:aws-cn:iam::aws:policy/AmazonS3FullAccess,策略json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "s3-object-lambda:*"
            ],
            "Resource": "*"
        }
    ]
}

2.创建所需的 vmimport  IAM 角色服务角色

1.创建角色

有两个方法。一个是使用命令行,一个是在控制台操作。

方法一:使用命令行

aws cli命令安装:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html

命令行操作首先在本机配置访问aws的账号

# 配置aws访问账号
[root@test opt]# aws configure
AWS Access Key ID [None]: AK......
AWS Secret Access Key [None]: 9wm......
Default region name [None]: cn-northwest-1
Default output format [None]:json 

在您的计算机上创建一个名为 trust-policy.json 的文件。将以下策略添加到该文件中:

[root@test aws-images]# vim trust-policy.json
[root@test aws-images]# cat trust-policy.json
{
   "Version": "2012-05-07",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}

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

[root@test aws-images]# aws iam create-role --role-name vmimport --assume-role-policy-document "file:///tmp/aws-images/trust-policy.json"

方法一:在控制台创建

2.配置角色策略

方法一:

 使用下面的 put-role-policy 命令将策略挂载到之前创建的角色。请务必指定 role-policy.json 文件位置的完整路径。但是如果已经存在了vmimport角色,推荐在控制台修改,以免误改了策略。

role-policy.json文件参考

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetBucketAcl"
            ],
            "Resource": [
                "arn:aws-cn:s3:::test-image",
                "arn:aws-cn:s3:::test-image/*"      ##z这里是存放有vmdk镜像的桶
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifySnapshotAttribute",
                "ec2:CopySnapshot",
                "ec2:RegisterImage",
                "ec2:Describe*"
            ],
            "Resource": "*"
        }
    ]
}

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

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file:///tmp/aws-images/role-policy.json"

方法二:

在控制台修改。

3.命令行操作,镜像导入 VM

使用单个磁盘导入映像,参考以下案例:

方式一:直接使用命令行


[root@test opt]# aws ec2 import-image --license-type aws --disk-containers Format=OVA,Url="S3://test-image/centos-7.9.2009-x86.vmdk"
{
    "ImportTaskId": "import-ami-07a9efca767ea18ca",
    "LicenseType": "AWS",
    "Progress": "1",
    "SnapshotDetails": [
        {
            "DiskImageSize": 0.0,
            "Format": "VMDK",
            "Url": "S3://test-image/centos-7.9.2009-x86.vmdk",
            "UserBucket": {
                "S3Bucket": "test-image",
                "S3Key": "centos-7.9.2009-x86.vmdk"
            }
        }
    ],
    "Status": "active",
    "StatusMessage": "pending"
}

方式二:使用json文件指定映像的文件

[root@test aws-images]# vim containers.json
[root@test aws-images]# cat containers.json
[
  {
    "Description": "My Server centos7.7.2009",
    "Format": "vmdk",
    "Url": "s3://test-image/centos-7.9.2009-x86.vmdk"
  }
]

[root@test aws-images]# aws ec2 import-image --description "My server VM centos7.7.2009" --disk-containers "file:///tmp/aws-images/containers.json"                                 {
    "Description": "My server VM centos7.7.2009",
    "ImportTaskId": "import-ami-0466f127a4314d52c",
    "Progress": "1",
    "SnapshotDetails": [
        {
            "Description": "My Server centos7.7.2009",
            "DiskImageSize": 0.0,
            "Format": "VMDK",
            "Url": "s3://test-image/centos-7.9.2009-x86.vmdk",
            "UserBucket": {
                "S3Bucket": "test-image",
                "S3Key": "centos-7.9.2009-x86.vmdk"
            }
        }
    ],
    "Status": "active",
    "StatusMessage": "pending"
}

查看上传进程,如果成功了会显示completed文章来源地址https://www.toymoban.com/news/detail-811728.html

[root@test aws-images]# aws ec2 describe-import-image-tasks --import-task-ids import-ami-0466f127a4314d52c
{
    "ImportImageTasks": [
        {
            "Architecture": "x86_64",
            "Description": "My server VM centos7.7.2009",
            "ImageId": "ami-010b7720b333800b5",
            "ImportTaskId": "import-ami-0466f127a4314d52c",
            "LicenseType": "BYOL",
            "Platform": "Linux",
            "SnapshotDetails": [
                {
                    "Description": "My Server centos7.7.2009",
                    "DeviceName": "/dev/sda1",
                    "DiskImageSize": 2160242688.0,
                    "Format": "VMDK",
                    "SnapshotId": "snap-015f43e47d0191c2d",
                    "Status": "completed",
                    "Url": "s3://test-image/centos-7.9.2009-x86.vmdk",
                    "UserBucket": {
                        "S3Bucket": "test-image",
                        "S3Key": "centos-7.9.2009-x86.vmdk"
                    }
                }
            ],
            "Status": "completed",
            "Tags": [],
            "BootMode": "legacy_bios"
        }
    ]
}

到了这里,关于在aws云将本地虚拟机镜像上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 实用指南:本地镜像的导出和导入

    要在Docker中实现本地镜像的导出和导入,您可以按照以下步骤进行操作: 导出镜像: 使用以下命令列出您本地的镜像,以确定要导出的镜像名称和标签: 运行以下命令导出镜像: 例如: 导入镜像: 将导出的镜像文件(.tar 文件)复制到要导入镜像的目标机器上。 在目标机

    2024年02月16日
    浏览(36)
  • 将docker本地镜像上传远程dockerhub仓库

    将docker本地镜像上传远程dockerhub仓库,实现在其他设备上无需建立dockerfile文件来制作镜像。 首先在本地使用dockerfile制作好镜像,并启动容器。 通过 docker images 可以查看到镜像,docker ps -a 可以查看到容器 dockerhub官网:添加链接描述 通过Create repository创建仓库,输入仓库名和

    2024年02月15日
    浏览(47)
  • 上传自制centos镜像到aws平台后起不来,报错Warning: dracut-initqueue timeout - starting timeout scripts

    云化一个大趋势,但是项目、业务上云过程中也会遇到各种各样的问题,这篇记录一下自制centos镜像在aws平台上起不来的情况,具体现象如下图所示:   网上很多人都说是磁盘名称不对之类的,但是其实是centos系统的一个bug,centos的这个官方镜像CentOS-8-ec2-8.1.1911-20200113.3.x86_

    2024年02月02日
    浏览(29)
  • docker <应用分享> 上传镜像到 私有仓库 / 本地仓库,从私库拉取镜像

    前两篇博客写了docker上传镜像到dockerhub,以及上传镜像到阿里云仓库。感兴趣的可以点下面链接 docker上传镜像到dockerhub docker上传镜像到阿里云 前面两种方式都是放在云上,对于一些私密性比较高的东西,总归是不太安全。 这个时候就用到了docker私有仓库,在本地创建一个私

    2023年04月19日
    浏览(38)
  • 将本地Python项目打包成docker镜像,上传到服务器,在docker中运行

    windows11 Docker下载地址:https://docs.docker.com/desktop/install/windows-install/ 虚拟环境可以搭建独立的Python运行环境,使得单个项目的运行环境与其他项目互不影响。 安装完成之后,便可以直接创建虚拟环境了,使用命令 virtualenv env1 进行创建 其中 activate.bat 文件,表示激活虚拟环境。

    2024年02月11日
    浏览(42)
  • Linux 环境下Docker将镜像打包导出到本地,上传至内网服务器(八)

    docker将镜像导出到本地,上传至内网服务器上 背景:在企业中往往出现了内网不能和外网相通,不能使用docker pull命令来拉取镜像,这个时候我们就可以考虑在有所需镜像的服务器上导出镜像,再将其上传到内网服务器上。 有两种方法,一种是通过容器,一种是通过镜像,其

    2024年02月13日
    浏览(35)
  • 免费开源luckysheet+luckyExcel,本地导入文件,渲染excel,公式计算,导出excel

    项目需求: 本地导入excel,页面渲染excel,一键计算:根据计算逻辑求出得分回写到对应单元格,最后导出excel; 前端技术:Vue2,luckysheet,luckyExcel,exceljs,mathjs,antdv Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 上传下载demo:  luckysheet

    2024年02月06日
    浏览(27)
  • Excel导入数据,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    .NET在导入Excel时,使用了一个Microsoft.Jet.OLEDB.4.0 是数据接口技术,然后客户端未安装对应的插件,导致无法正常导入数据到数据库 显示报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 在对应的 IIS 应用程序池中,设置应用程序池默认属性 /常规 /启用32位应用程序

    2024年02月13日
    浏览(34)
  • sqlsrver数据导入(.xlsx):未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    sqlserver2008 excle导入时使用2007导入产生问题:安装AccessDatabaseEngine_X32.exe解决。 更新:20230504 如果你是64位的office就下载安装64位的插件。 注意:程序必须安装至你office的安装目录下,否则无效。一般情况下若未修改过office的安装位置,默认即可。 32位下载地址 提取码:elw5 若

    2024年02月10日
    浏览(30)
  • 数据库批量导入数据报错:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    一、背景 操作系统:win10系统,OFFICE版本:2010版64位,,SQL版本:2008 64位。 在使用SQL默认的导入导出数据时,导入excel报错:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 二、解决方式 搜了其他博主的解决方式,有说直接使用导入导出(64位)这个功能来导入,但

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包