Ошибка проверки диска для задачи импорта / экспорта AWS

Я пытался преобразовать образ Docker в файл VMDK для создания AMI AWS с помощью AWS Import / Экспорт. Для этого:

  1. Я использовал это руководство для создания .img файла из моего DockerFile.

  2. Теперь я использую эту команду: VBoxManage convertfromraw --format VMDK disk.img disk.vmdk для преобразования моего .img файла в .vmdk файл, поскольку формат IMG не поддерживается службой AWS.

Однако когда я запускаю службу импорта / экспорта, она выдает такую ​​ошибку:

"StatusMessage": "ClientError: Disk validation failed [Unsupported VMDK File Format]"

Что я сделал неправильно в процессе конвертации?


person Dawny33    schedule 18.07.2017    source источник


Ответы (3)


Это может быть полезно, если вы не знаете, почему именно у вас возникла проблема, но другие люди, у которых возникла проблема, были направлены сюда.

http://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html

Ошибка при импорте файлов vmdk с помощью инструментов разработчика ec2

person Kyle    schedule 18.07.2017

Я связался с сотрудниками службы поддержки AWS по поводу той же проблемы. Их ответ следующий:

К сожалению, импорт образа Docker не поддерживается VMIE. Поскольку образ Docker не является полностью виртуализированной ОС, вы не сможете загрузиться в этот образ, даже если импорт был успешным.


Есть гораздо более простое решение - запустить user-data. Что касается кода, выполняемого внутри контейнера, нет разницы между контейнерами и виртуальными машинами. Код думает, что он работает в обычной ОС. Поэтому вместо создания контейнера докеров с помощью Dockerfile вы можете использовать сценарий пользовательских данных, чтобы делать то же самое с экземпляром. Например, с ADD в Dockerfile он берет файлы и записывает их в контейнер. Мы можем вытащить этот файл, скажем, из S3, и скопировать его в любое место на экземпляре. Он уйдет в то же место, где живет в контейнере. Директивы RUN в файле докеров будут отображать 1 к 1 со сценарием пользовательских данных, поскольку это просто команды. Для директивы CMD мы можем просто запустить этот процесс через пользовательские данные. Тома Docker не имеют значения, так как у нас есть доступ ко всему хранилищу экземпляра, поэтому вы можете игнорировать создание томов и просто писать везде, где нужны файлы. Таким образом, ваш сценарий пользовательских данных заменит Dockerfile для начальной загрузки вашего экземпляра и запуска вашего приложения. Вместо синтаксиса Dockerfile вы будете использовать синтаксис Bash. Ниже приведен пример сценария, имитирующего ваш файл Dockerfile.

#! /bin/bash 
pip install --upgrade --user awscli 
sudo aws s3 cp s3://example-bucket/hello / 
sudo chmod +x /hello /hello 

Вот подробное описание того, что делает скрипт:

  1. Убедитесь, что aws cli установлен

  2. Извлекает файл "hello" из корзины S3 и записывает его в '/'

  3. Убедитесь, что файл "hello" исполняемый

  4. Выполняет hello. По сути, это то, что Dockerfile делает в контейнере, однако вместо того, чтобы извлекать из S3, он извлекает его из местоположения Dockerfile. После добавления вашего файла в S3 вы можете легко вытащить его в скрипте пользовательских данных. Запустив это, вам даже не нужно будет создавать пользовательский AMI, поскольку начальная загрузка выполняется на экземпляре после загрузки. Чтобы выбрать подходящую ОС, вы можете запустить QuickStart Ubuntu AMI и добавить этот скрипт пользовательских данных. Кроме того, вы можете продолжить тестирование с Docker без проблем, вам просто нужно убедиться, что файл «hello» синхронизирован между вашим местоположением Docker и корзиной S3. Для этого вы можете использовать команду S3 Sync.

person Dawny33    schedule 19.07.2017

Я получал сообщение об ошибке: Ошибка проверки диска [У нас нет доступа к указанному ресурсу. 403 Запрещено]

Я знал, что с этой ролью все в порядке, потому что в прошлом я загружал много изображений. Иногда я использовал формат ova, иногда vmdk, он всегда работал, пока не переставал работать.

Как упоминалось выше, полезна ошибка «Ошибка проверки диска». Сообщение «Невозможно получить доступ к ресурсу» И «403 запрещено» заставило меня искать разрешение в течение 2 дней. В конце концов, я прислушался к предупреждению и посмотрел на проверку диска, а не на разрешение. Конечно, хотя у моего ova не было пробелов в имени файла, у vmdk внутри него был пробел в имени файла, и ресурс не мог быть найден. Убедитесь, что вы извлекли свой ova (или подтвердите с помощью tar tvfz) и убедитесь, что имя файла на диске не содержит пробелов в имени файла.

person Andrew    schedule 21.06.2020