云计算学习笔记
  • 前言
  • AWS入门
    • 如何创建一个AWS账号
    • 创建管理员用户
    • 如何在AWS上创建一个服务器
  • 账户
    • IAM
      • CLI(AWS 命令行接口)
      • 策略
        • 通过资源策略授权跨账户访问S3
        • 使⽤标签限制⽤⼾只能操作⾃⼰的AWS资源
        • 策略示例
  • 计算
    • EKS
      • 使用控制台创建EKS
      • 使用eksctl创建EKS
      • 为其他用户授权使用已经创建的EKS
    • EC2
      • 创建EC2
      • AMI
  • 存储
    • EBS(卷)
  • 粤ICP备20030352号
由 GitBook 提供支持
在本页
  • 为什么要上传自己创建的AMI
  • 如何上传自己的AMI

这有帮助吗?

  1. 计算
  2. EC2

AMI

什么是AMI

为什么要上传自己创建的AMI

两个原因可能需要使用自己创建的AMI,

1:前期大量工作,运行环境放在虚拟机上,后面需要将虚拟机迁移到AWS 上,如果重新搭建一搭运行环境,时间成本具大,因此可以将现有的虚拟机导出成可被EC2运行的AMI。

2:某些软件,需要运行在特定的linux环境,如redhat6.5,而这些特定的环境,在AMI市场上没有找到对应的AIM,因此需要自己先建一个AMI,导出成可被EC2运行的AMI

如何上传自己的AMI

AWS VM Import/Export 可以帮助我们将虚拟机镜像从虚拟机导入到EC2实例中,还可以将导入的实例导出回本地虚拟机,减轻在部署上的工作。

一:创建S3存储桶,将OVA文件上传到该S3存储桶

$ aws s3 mb s3://arificial.vm
$ aws s3 cp redhat6.5.ova s3://arificial.vm/

二:通过策略配置文件创建vmimport角色

trust-policy.json
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}
$ aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"

三:为vmimport配置权限

role-policy.json
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource": [
            "arn:aws-cn:s3:::"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetObject"
         ],
         "Resource": [
            "arn:aws-cn:s3:::/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action":[
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource": "*"
      }
   ]
}

使用下面的命令将策略挂载到vmimport

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

四:导入OVA

containers.json
[
  {
    "Description": "redhat 6.5 OVA",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "arificial.vm",
        "S3Key": "redhat6.5.ova"
    }
}]

上面创建了一个配置文件,用于定义从哪个bucket拿ova文件,接下来,使用命令,导入vm

$ aws ec2 import-image --description "My server VM" --disk-containers "file://containers.json"
$ aws ec2 describe-import-image-tasks --import-task-ids import-ami-{上面说的ID}

包括的状态值如下:

  • active - 正在运行导入任务。

  • deleting - 正在取消导入任务。

  • deleted - 导入任务已取消。

  • validating — 正在验证导入的映像。

  • converting — 正在将导入的映像转换成 AMI。

  • completed - 导入任务已完成,并且 AMI 已准备就绪,随时可以使用。

``

上一页创建EC2下一页存储

最后更新于4年前

这有帮助吗?

导入后,需要一些时间,通过提示可以看到ami ID,我们通过 命令,结合那个ID ,可以查看导入任务的状态

describe-import-p_w_picpath-tasks