亚马逊与EC2互动的官方工具是一种笨重和痛苦的处理。 我必须设置一堆环境variables,为EC2存储单独的私钥,将额外的项目添加到我的PATH,等等。 他们都输出制表符分隔的行,数百个字符长,没有标题,所以解释它们有点痛苦。 他们设置SSH密钥对的指令给你一个不受密码保护的指令,而不是让你使用已有的密钥对。 这些程序都只是有点笨重,并不是很好的Unix程序。
那么,有没有更容易使用命令行工具来访问EC2? 我知道有ElasticFox,有他们的基于Web的控制台,这使得过程更容易,但我想知道是否有其他人已经写了更好的命令行工具与EC2交互。
我有点晚,但我有一个解决方案!
我发现与Amazon AMI工具相同的问题。 他们是一个体面的参考实现,但非常难以使用,特别是当你有不止两个实例。 我写了一个替代的命令行工具作为另一个项目的一部分,叫做Rudy,它回答了你最关心的问题
这些命令比亚马逊的AMI工具更直观:
rudy-ec2 instances -C
rudy-ec2 groups -A -p 8080 -a 11.22.33.44 group-name
rudy-ec2 volumes -C -s 100
rudy-ec2 images
所有配置都在一个文件中( ~/.rudy/config
)。
它可以以多种格式输出(yaml,json,csv,tsv,当然也可以是普通文本):
rudy-ec2 -f yaml snapshots --- :awsid: snap-2457b24d :progress: 100% :created: "2009-05-08T15:24:17.000Z" :volid: vol-4ee10427 :status: completed
关于私钥,没有EC2工具允许创建私钥用于引导公共实例的密码,因为API不支持。 但是,如果您创建自己的图像,则可以使用您的私钥。
以下是更多信息:
ElasticFox在大多数任务中都很方便。 尽管如此,一个命令行工具将会更适合。 我个人使用Python的boto库。 编写所有必需的操作非常简单。 您也可以使用它从S3上传/下载文件。 一般来说,我会说像Python或RUby这样的脚本语言,连同一个AWS库,是最好的解决方案。
我个人使用Tim Kay的Perl 命令行工具,并且还没有使用原始的基于Java的API一段时间。 非常适合UNIX环境。
不是命令行,而是看一看免费的RightScale账户会给你什么 – 比命令行或ElasticFox IMO更容易。
关于ec2-api-tools:
我同意他们有点太笨,我特别不喜欢ec2-describe-instances的输出。 我最近切换到python-boto,它提供了一个非常干净,易于使用的接口到ec2。
关于不能为由EC2生成的ssh密钥指定密码短语:
事实并非如此。 您可以随时更改任何ssh私钥的密码,使用:
ssh-keygen -p -f /path/to/keyfile
例如
ssh-keygen -p -f ~/.ssh/id_rsa
关于上传自己的SSH密钥对:
你可以使用ec2-import-keypair,像这样:
for i in $(ec2-describe-regions|cut -f 2);do ec2-import-keypair --region $i mykey --public-key-file ~/.ssh/id_rsa.pub done
上面的例子会把〜/ .ssh / id_rsa.pub中的公钥上传到名为“mykey”的每个区域。 请记住,每个地区都有自己的密钥对。
为了将密钥安装在您的ec2实例中,您必须将“-k mykey”选项传递给ec2-run-instances。
顺便提一下,上传自己的密钥对是唯一的方法,使用相同的密钥登录到所有地区的所有实例。 如果从Web界面创建密钥对,则每个地区都有不同的密钥。
我有一个名为EC2Dream的开源图形系统管理工具,取代了命令行工具。 它安装在Windows,Linux和Mac OS客户端,并用Ruby和FXRuby编写。 请参阅www.ec2dream.com。
尼尔·特纳
如果您使用Windows,请尝试下面链接的工具( O2平台的一部分),该工具为您提供了一个简单的方法来启动和停止Amazon EC2图像(如果您需要扩展该工具,则可以轻松添加新功能(因为它只是一个动态编译和执行的C#脚本)
替代库的问题是它们并不总是保持最新,所以如果AWS的新功能被释放,那么你需要等待。 您发布的主要问题是大量的环境变量,向PATH添加额外的项目等。我们在BitNami中遇到了这个问题,也是我们创建BitNami Cloud Tools的主要原因,它将所有AWS命令行工具预先配置的Java和Ruby语言运行时。 您只需将其下载,并将所需的所有内容都安装到文件夹中,而无需修改系统配置。 我们经常保持最新。
有一个名为云管理的整个行业,试图解决这类问题。 Scalr和RightScale以及这个领域的领导者(免责声明:我在Scalr工作)。
云管理软件建立在Amazon EC2 API之上(通常在Rackspace等其他公共IaaS上),并提供改进的用户界面以及自动化工具,如备份或SSH管理。 他们不提供比较简单的命令行工具。 他们的目标是使与Amazon EC2的交互更容易。
市场上有不同的选择: