Простая инструкция по миграции виртуальной машины из Amazon Web Services в наш Cloud
Если вам нужно перенести виртуальную машину из Amazon Web Services в нашу облачную инфраструктуру, но вы не хотите разбираться в сложных технических терминах, эта инструкция для вас. Мы разберем весь процесс пошагово:
1️⃣ Создать в IAM пользователя или используем существующего пользователя
2️⃣ Предоставим все разрешения для ранее созданного пользователя или на существующего, чтобы была возможность экспортировать ВМ
3️⃣ Создадим образ виртуальной машины в Amazon Web Services
4️⃣ Скачаем его к себе
5️⃣ Загружаем образ в наш Cloud
Следуйте этим простым шагам, и ваша виртуальная машина будет успешно перенесена! 🚀
- Остановите виртуальную машину в AWS.
 - Убедитесь, что ваш IAM-пользователь имеет права на экспорт образов.
 - Создайте S3-бакет для временного хранения экспортируемого образа.
 
1. Откройте консоль AWS IAM:
• Перейдите в AWS Management Console IAM.
2. Создайте новую роль:
• Нажмите Create role.
• Выберите EC2 как доверенный сервис, который будет использовать эту роль.
• Нажмите Next.
2️⃣ Предоставим все разрешения для ранее созданного пользователя или на существующего, что бы была возможность экспортировать ВМ
• Добавьте встроенную политику AmazonS3FullAccess (для доступа к S3) для юзера.
• Создайте пользовательскую политику для управления экспортом образов:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::mycompany-bucket-20241223/*"
}
]
}
• Сохраните и добавьте эту политику к роли.
4. Завершите создание роли:
• Присвойте роли имя (например, vmimport).
• Нажмите Create role.
2. Настройка политики S3 для бакета
1. Перейдите в консоль S3 и выберите бакет, куда будут экспортироваться образы.
2. В разделе Permissions добавьте политику бакета, чтобы разрешить доступ роли vmimport:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/vmimport"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/vmimport"
      },
      "Action": "s3:GetBucketLocation",
      "Resource": "arn:aws:s3:::<BUCKET_NAME>"
    }
  ]
}
Замените <YOUR_ACCOUNT_ID> на ваш идентификатор AWS-аккаунта, а <BUCKET_NAME> — на имя вашего бакета.
3. Проверка настроек
• Убедитесь, что роль vmimport назначена экземпляру EC2, из которого будет экспортироваться образ.
• Проверьте доступ к S3, попробовав загрузить тестовый файл в указанный бакет от имени роли.
Так же перед началом работы с AWS CLI  ознакомьтесь с документацией.
Полная информация о наборе команд и дополнительных настройках AWS CLI доступна на сайте разработчика. Для установки AWS CLI ознакомьтесь с официальной инструкцией.
docs.aws.amazon.com
Installing or updating to the latest version of the AWS CLI - AWS Command Line Interface
Instructions to install or update the AWS CLI on your system.
После настройки вы можете проверить роль и привязанные политики через AWS CLI:
1. Список доступных ролей:
aws iam list-roles
2. Проверка политики роли:
aws iam get-role-policy --role-name vmimport --policy-name <POLICY_NAME>
Если настройки выполнены правильно, экспорт образов в S3 будет работать без ошибок.
3️⃣ Создадим образ виртуальной машины в Amazon Web Services
1. Подготовьте S3-бакет:
• Убедитесь, что S3-бакет создан и настроен.
• Предоставьте необходимые IAM-разрешения для экспорта.
2. Создайте образ виртуальной машины в AWS:
aws ec2 create-image --instance-id <INSTANCE_ID> --name "<IMAGE_NAME>"
4️⃣ Скачаем его к себе
1. Экспорт образа в S3:
      aws ec2 export-image \
          --image-id <AMI_ID> \
          --disk-image-format RAW \
          --s3-export-location S3Bucket=<BUCKET_NAME>,S3Prefix=<EXPORT_PATH> \
          --role-name vmimport
2. Проверьте статус задачи экспорта:
aws ec2 describe-export-tasks --export-task-ids <TASK_ID>
            
После загрузки можем проверить путь через команду: 
3. Скачайте образ:
• Когда статус задачи станет completed, загрузите файл из S3:
aws s3 cp s3://<BUCKET_NAME>/<EXPORT_PATH>/<FILE_NAME> ./
4. Загрузить полученный файл образа .raw в существующий проект нашего Cloud можно двумя способами:
Через User Interface(UI)
Через Openstack Command line interface(CLI)
5️⃣ Загрузим образ в наш Cloud
1. Чтобы загрузить образ через UI:
Войдите в панель управления.
Выберите подходящий проект из раскрывающегося меню в левом верхнем углу.
- 
На вкладке «Вычислительные ресурсы» откройте вкладку «Образы» и выберите категорию «Создать образ» ниже выберите «Загрузить».
 - 
Выберите название: AlmaLinux(На ваше усмотрение)
Формат образа: RAW
Выберите формат контейнера: BARE
Нажмите «Создать» - Дожидаемся загрузки после нажимаем «Отменить» убедитесь что образ создан далее можно создать виртуальную машину как показано тут.
 
2.1 Установка клиента OpenStack CLI:
Если у вас его нет, установите OpenStack CLI:
Для Linux (Ubuntu/Debian)
sudo apt update sudo apt install python3-openstackclient -y
Для RHEL/AlmaLinux
sudo dnf install python3-openstackclient -y
Для macOS
2.2. Получение файла аутентификации (brew install openstackclient
openrc.sh)- Войдите в веб-интерфейс OpenStack (Horizon) https://ui.aitu.cloud/.
 - Перейдите в "Проект" → "Доступ и безопасность" → "API-доступ".
 - Нажмите "Загрузить файл OpenStack RC" (обычно 
project-openrc.sh). - Переместите этот файл на свою машину и загрузите его в сессию:
 
source project-openrc.sh
Проверьте подключение, выполнив команду:
openstack token issue
Если команда успешно выполнена, значит, вы авторизованы.
2.3.После этого можно применить следующую команду: 
openstack image create --private --container-format bare --disk-format raw --file <путь_к_файлу.raw> <название образа>
 |