Назад | Перейти на главную страницу

AMI с поддержкой EBS становится AMI с хранилищем экземпляров при переносе через регион

Я здесь немного запутался. Я пробовал это несколько дней, но не мог заставить его работать. Надеюсь, кто-то сможет пролить здесь свет.

У меня есть 1 экземпляр (Amazon AMI x86_64 AMI, с поддержкой EBS), работающий в регионе us-east-1, и я хотел перейти в регион 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

Все работало нормально. Я могу видеть только что созданный AMI в AP-регионе. Но когда я попытался создать экземпляр с помощью AMI, я не смог выбрать «t1.micro» в качестве типа экземпляра. Вскоре я обнаружил, что AMI - это AMI хранилища экземпляров (странно, что EBS изначально поддерживает).

Это заставило меня задуматься, что я сделал здесь не так, чтобы перенести поддерживаемый EBS экземпляр в другой регион, не меняя его на AMI хранилища экземпляров?

Спасибо.

Миграция экземпляров между регионами действительно не так проста, как хотелось бы думать, хотя и решенная проблема:

Проблема, которую вы видите, заключается в том, что команда ec2-bundle-vol предназначена для создания AMI с поддержкой S3. Таким образом, вы взяли свой AMI с поддержкой EBS - создали, загрузили и зарегистрировали его содержимое как AMI с поддержкой S3, а затем запустили этот AMI с поддержкой S3 в новом регионе.

К сожалению, встроенного способа миграции AMI с корнем EBS между регионами нет. Вам нужно пройти долгий путь.

  • Во-первых, создайте снимок корневого тома, который вы хотите перенести.
  • Затем запустите экземпляр в исходном и целевом регионах.
    • если вы не хотите иметь разные ключи для экземпляров (поскольку они находятся в разных регионах), вам следует сначала импортировать свою собственную пару ключей.
  • Создайте том EBS из вашего снимка и прикрепите его к экземпляру в исходном регионе.
  • Создайте новый (пустой) том EBS в целевом регионе и подключите его к экземпляру, который вы там запустили.
  • Отформатируйте том EBS в целевом регионе в желаемой файловой системе.
  • Скопируйте данные между томами EBS
    • rsync через SSH, вероятно, лучший вариант
  • Создайте снимок нового (целевого) тома EBS
  • Зарегистрируйте AMI на основе этого снимка
  • Завершите запущенные экземпляры, когда закончите с ними

Вы понесете расходы на инстансы, передачу данных и ввод-вывод EBS.


На самом деле есть другой вариант, который может лучше соответствовать вашим потребностям.

Поддерживаемые S3 AMI можно загрузить и разделить, получив образ исходного диска - затем вы можете записать этот образ на свой том EBS, и все будет в порядке.

По сути, вы должны выполнить те же первые шаги, что уже сделали:

  • ec2-связка-том ...
  • 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, либо установить их в качестве переменных среды.

  • Разделите объем:
    ec2-unbundle  -m /local/path/to/manifest.xml -s SOURCE_DIRECTORY -d DESTINATION_DIRECTORY
  • Копировать в том EBS:
    dd if=/path/to/image of=/dev/NAME