在跨区域迁移时,EBS支持的AMI将成为实例存储AMI

我在这里有点困惑。 我一直在尝试这个好几天,但不能得到它的工作。 希望有人能在这里阐明一些东西。

我有一个运行在us-east-1地区的实例(Amazon AMI x86_64 AMI,EBS支持),我想迁移到ap-southeast-1地区(使用S3存储桶)。

以下是我采取的步骤:

1. ec2-bundle-vol \ -k pk-xxx.pem \ -u xxx \ -c cert-xxx.pem 2. ec2-migrate-manifest \ -m /tmp/image.manifest.xml \ -c cert-xxx.pem \ -k pk-xxx.pem \ -a xxx \ -s xxx \ --region ap-southeast-1 3. ec2-upload-bundle \ -b my-sg-bucket \ -m /tmp/image.manifest.xml \ -a xxx \ -s xxx \ --location ap-southeast-1 4. ec2-register \ -K pk-xxx.pem \ -C cert-xxx.pem \ --region ap-southeast-1 \ my-sg-bucket/image.manifest.xml \ --name my-ami 

一切工作正常。 我能够看到在AP地区新创build的AMI。 但是当我试图用AMI创build实例时,我不能select“t1.micro”作为实例types。 我很快就发现,AMI是一个实例店AMI(奇怪的是EBS支持在第一位)。

这引导我思考我在这里做了什么错误,将EBS支持的实例迁移到不同的地区,而无需将其更改为实例存储AMI?

谢谢。

您看到的问题是因为命令“ec2-bundle-vol”用于创buildS3支持的AMI。 因此,您已经将您的EBS支持的AMI创build,上传并注册为S3支持的AMI,然后启动S3在新的地区支持AMI。

不幸的是,在区域之间没有内build的方式来迁移具有EBS根的AMI。 你需要走很长的路。

  • 首先,创build要迁移的根卷的快照
  • 然后,在源和目标区域中启动一个实例。
    • 如果你不想为实例使用不同的密钥(因为它们在不同的地区),你应该首先导入你自己的密钥对。
  • 从快照创build一个EBS卷,并将其附加到源区域中的实例。
  • 在目的地区域创build一个新的(空的)EBS卷,并附加到您在那里开始的实例。
  • 使用所需的文件系统格式化目标区域中的EBS卷
  • 在EBS卷之间复制数据
    • 通过SSH的rsync可能是要走的路
  • 创build新(目标)EBS卷的快照
  • 根据该快照注册一个AMI
  • 终止你开始的实例,当你完成它们

您将为实例,数据传输和EBS I / O承担费用。


实际上还有另一种select可能更适合您的需求。

S3支持的AMI可以被下载和解包,产生原始磁盘的映像 – 然后你可以把这个映像写到你的EBS卷上,并且应该是好的。

本质上,您将执行与您已有的相同的第一步:

  • ec2-bundle-vol …
  • ec2-migrate-manifest …
  • ec2-upload-bundle …

那么,在目的地地区:

  • 开始一个新的实例,并附上一个足够大的EBS卷
    • 您还需要在实例上有足够的可用空间来临时存储图像(小实例上的临时存储应该是足够的)。

  • 将您的捆绑卷下载到实例中:
      ec2-download-bundle -b BUCKET_NAME -m MANIFEST.xml -d TARGET_DIRECTORY 
    • 您还需要传递您的ACCESS_KEY,SECRET_ACCESS_KEY和PRIVATE_KEY,或者将其设置为环境variables。
  • 分解音量:
      ec2-unbundle -m /local/path/to/manifest.xml -s SOURCE_DIRECTORY -d DESTINATION_DIRECTORY 
  • 复制到EBS卷:
      dd if = / path / to / image = / dev / NAME 

跨地区移植实例并不像人们想的那样直截了当,尽pipe解决了一个问题:

  • Eric Hammonds精心撰写的文章“ 复制EC2区域之间的EBS启动AMI”解释了常用的方法。
  • Rob Linton在AWS区域之间迁移EBS AMI的更多视觉介绍中也展示了同样的方法。
  • 最后,艾哈迈德·阿卜杜拉(Ahmed Abdalla)于2011年2月开始实施一项EC2工具,以 boto为基础,在基于boto的 区域内迁移EBS支持的AMI ,这看起来相当有前景,但不幸已经没有完成各个蓝图中概述的所有常规步骤,参见EC2迁移EBS AMI工具,请求志愿者详细了解事态:
    • 项目现在可以在两个指定区域中启动两个实用程序实例,并将源卷挂载到源实例中
    • 剩下的就是附加一个目的地卷,并同步内容。