AWS Import / Export任务的磁盘验证失败

时间:2017-07-18 09:23:27

标签: amazon-web-services docker virtual-machine ami aws-vm-import

我一直在尝试将Docker镜像转换为VMDK文件,以便使用AWS's Import/Export创建AWS AMI。为此:

  1. 我已使用this guide从我的DockerFile创建.img文件。

  2. 现在,我正在使用此命令:VBoxManage convertfromraw --format VMDK disk.img disk.vmdk将我的.img文件转换为.vmdk文件,因为IMG格式不受AWS服务支持。

  3. 但是,当我运行导入/导出服务时,它会给我这个错误:

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

    我的转换过程中是否有任何错误?

3 个答案:

答案 0 :(得分:1)

这可能会有所帮助,不确定为什么你会遇到这个问题,但有问题的其他人已经被引导到了这里。

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

Error importing vmdk files using ec2 developer tools

答案 1 :(得分:0)

我已就此问题与AWS支持人员联系。他们的回应如下:

  

不幸的是,VMIE不支持导入Docker镜像。   由于Docker镜像不是完全虚拟化的操作系统,因此您不会   即使导入成功,也可以启动此图像。

  

运行用户数据有一个更简单的解决方案。至于   在容器内运行的代码,没有区别   在容器或VM之间。该代码认为它是在常规运行   OS。因此,不是使用Dockerfile创建docker容器,   您可以使用用户数据脚本在实例上执行相同的操作。   例如,在Dockerfile中使用ADD,它会接收文件并写入它们   到容器。我们可以从S3中提取此文件并复制它   无论在哪个实例上都需要去。它会在同一个地方   它住在容器里。 Docker文件中的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.   
  3. 拉文件"你好"从S3存储桶中,将其写入' /'

  4.   
  5. 确定文件"你好"是可执行的

  6.   
  7. 执行hello这实质上是Dockerfile在容器中的作用,但不是从S3中拉出来,而是从   Dockerfile的位置。将文件添加到S3后,即可   轻松将其拉入用户数据脚本。运行这个,你甚至不会   需要创建自定义AMI,因为引导是在实例上完成的   启动后。要选择适当的操作系统,您可以启动   快速启动Ubuntu AMI并添加此用户数据脚本。另外,你   可以继续使用Docker进行测试而不会出现问题,您只需要制作即可   确定文件"你好"在您的Docker位置和。之间保持同步   S3桶。您可以使用S3 Sync命令完成此操作。

  8.   

答案 2 :(得分:0)

我遇到类似以下错误:磁盘验证失败[我们无权访问指定的资源。 403 Forbidden]

我知道这个角色很好,因为过去我上传了大量图像。有时我会使用ova格式,有时是vmdk,它一直有效,直到停止工作。

如上所述,错误“磁盘验证失败”很有帮助。消息“无法访问资源”和“ 403禁止访问”使我需要2天的许可时间。最终,我听从了警告,并查看了磁盘验证,而不是许可。果然,尽管我的ova文件名中没有空格,但其中的vmdk文件名中却有空格,找不到资源。确保您提取了ova(或使用tar tvfz进行验证),并验证磁盘文件名中的文件名中没有空格。