如何通过Amazon EC2获取服务器列表和公共DNS?

我在一个安全组中有一组EC2实例。 我正在寻找一种方法来从命令行获取其公有DNS地址的列表。 我有一个使用RSYNC的脚本来确保跨这些服务器更新一组文件。 他们是在一个弹性的负载平衡器和组中的服务器数量变化足够,我不想手动维护列表。 我想避免使用AWK或SED从ec2-describe-instances中提取信息,我宁愿直接使用API​​。 任何人有什么伟大的build议? 🙂

命令行输出格式非常静态,您可以控制何时可能更改,因为该工具箱是您的手。 我在一个版本化的版本库中保存了一个api工具的副本,以及我用它编写的任何软件,这样他们就可以在给定的版本上一起工作。

如果你决定这样做,这里是一个简单的获取所有运行的公有DNS地址。 显然你也可以要求这个特定的组。

ec2-describe-instances | grep 'INSTANCE' | cut -f 4 

Incase有人正在寻找解决scheme,我结束了使用亚马逊的PHP SDK。 它允许你通过许多不同的标准过滤结果。 我只是做了一个描述性的实例请求,通过一个特定的安全组进行过滤(其中security-group-name是您想要search的那个)

  // Get the response from a call to the DescribeInstances operation. $response = $ec2->describe_instances(array('Filter' => array(array('Name' => 'group-name ', 'Value' => 'security-group-name')))); 
 ec2din -F instance-state-name=running | grep -e TAG -e INSTANCE | sed -e 's/TAG//' | awk '{print $4}' 

您也可以为您所需的安全组添加filter,添加-F group-name = your-group