EC2无法为实例存储创建AMI

时间:2013-03-09 00:56:23

标签: amazon-web-services amazon-s3 amazon-ec2 ec2-ami

我在尝试创建实例存储服务器捆绑包时遇到问题

Ubuntu 12.10

ec2-bundle-vol \
--user $EC2_USER \
--privatekey $EC2_PRIVATE_KEY \
--cert $EC2_CERT \
--arch x86_64 \
--exclude /mnt,/tmp,/var/tmp \
--destination /mnt/bundles/$BUNDLE_NAME/ \
--prefix $BUNDLE_NAME

Excluding: 
     /
     /proc
     /sys
     /sys/fs/fuse/connections
     /sys/kernel/debug
     /sys/kernel/security
     /dev
     /dev/pts
     /dev
     /media
     /mnt
     /proc
     /sys
     /etc/udev/rules.d/70-persistent-net.rules
     /etc/udev/rules.d/z25_persistent-net.rules
     /mnt
     /tmp
     /var/tmp
     /mnt/bundles/130309
     /mnt/img-mnt
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0024517 s, 428 MB/s
mke2fs 1.42.5 (29-Jul-2012)
loop: can't delete device /dev/loop0: No such device or address
Bundling image file...
ERROR: can't convert Fixnum into String

任何想法可能出错?

谢谢!

3 个答案:

答案 0 :(得分:0)

dev目录是devices目录,因此你不能复制,loop0是环回连接器,通常是对另一个已安装文件系统的引用。

我注意到你的排除行:

--exclude /mnt,/tmp,/var/tmp \

您不直接排除/dev,但确实排除了/mnt,因此我猜您不希望将外部文件系统添加到您的图像中。但是输出中提到了/dev目录两次,您是否尝试在命令行参数中明确排除/dev/dev/loop0/dev/loop*

答案 1 :(得分:0)

从1.9降级到ruby 1.8或者开始安装ruby 1.8。似乎AMI工具不兼容1.9。

apt-get install ruby1.8

答案 2 :(得分:0)

您可以应用此修补程序并继续使用ruby1.9。 请参阅原始文章:ec2_upload_bundle and ruby 1.9: can't convert Fixnum into String (非常感谢 decodeideas !)

从原始文章中复制粘贴

以下适用于以下情景

  • ubuntu karmic,ec2 ami
  • ruby​​ 1.9.2安装为/ usr / bin / ruby​​
  • 最新的ec2工具

当您使用ec2_upload_bundle重新捆绑您修改的AMI时,您将收到错误

ERROR: can't convert Fixnum into String

调试这个的技巧是将--debug传递给ec2命令。修复程序已打开 /usr/lib/ec2-ami-tools/lib/ec2/amitools/util.rb第19行 你需要改变?A到?A.ord得到这一行:

(0..19).inject("") {|ident, n| ident+(?A.ord + Kernel.rand(26)).chr}

在进行更改之前,您可以使用

重现问题
ruby1.9 -r /usr/lib/ec2-ami-tools/lib/ec2/amitools/util -e 'puts gen_ident'

应用补丁后,你应该得到一个短暂的随机序列 字母。