我正在尝试启动一组自定义 AMI 映像。AMI 映像只是来自安装了 Java 的亚马逊免费套餐选择的 Ubunutu 12.04 服务器映像(我实际上想用 numpy 和 scipy 创建 AMI)。事实上,我是通过启动 Ubuntu 12.04 实例来创建该映像的,该实例使用 whirr 和 noop 作为角色。然后我安装了 Java,并在 AWS 在线控制台中选择了 Create Image (EBS AMI)。我正在使用与启动原始 ubuntu 服务器相同的 whirr 配方脚本,仅更改了图像 ID。
Whirr 启动图像,它显示在控制台中。然后它尝试为 noop 运行 InitScript,但没有任何反应。10分钟后,由于脚本运行时间过长而引发异常。whirr.log 包含记录
error acquiring SFTPClient() (out of retries - max 7): Invalid packet: indicated length 1349281121 too large
我在其中一个教程中看到了这个错误,建议的解决方案是添加行
whirr.bootstrap-user=ec2-user
让 JCloud 知道用户名。我知道这是正确的用户名,并且默认使用。添加该行后,whirr.log 显示身份验证错误,公钥有问题。最后,当我使用 'ubuntu' 作为用户时,错误是 Dying 因为 - java.net.SocketTimeoutException: Read timed out
这是我用来启动集群的文件
whirr.cluster-name=pineapple
whirr.instance-templates=1 noop
whirr.provider=aws-ec2
whirr.identity=${env:AWS_ACCESS_KEY_ID}
whirr.credential=${env:AWS_SECRET_ACCESS_KEY}
whirr.private-key-file=${sys:user.home}/.ssh/id_rsa
whirr.public-key-file=${sys:user.home}/.ssh/id_rsa.pub
whirr.env.repo=cdh4
whirr.hardware-id=t1.micro
whirr.image-id=us-east-1/ami-224cda4b
whirr.image-location=us-east-1b