AWS获得AutoScaling Group的活动公共IP

时间:2015-01-15 23:51:05

标签: node.js amazon-web-services amazon-ec2 autoscaling

我正在使用node.js和AWS进行自动扩展。最好使用javascript SDK解决方案,但此时我会采取任何措施。

我希望这很容易做到并且我只是一个白痴,但是如何获取正在进行扩展事件的实例的公共IP地址呢?

我试图在特定的应用程序层中保留一个活动的公共IP列表,这样我就可以规避ELB for websocket连接,但我无法弄清楚如何以编程方式获取公众刚刚添加/删除的实例的IP地址。

1 个答案:

答案 0 :(得分:1)

对于我和Sensu Client配置,我在基础AMI中为我的实例添加了一个基本的sensu客户端配置,其中包含“this_hostname”“this_ip”和“this_role”。然后我只在我的cloudformation user_data脚本中添加一些简单的sed,它在实例启动时卷曲公共ip的aws端点。每个cloudformation脚本在我的sed行之前的同一个user_data脚本中设置/导出APP_TYPE(向下),因此我将其重用为sensu的角色:

      "sed -i \"s/this_hostname/$(curl http://169.254.169.254/latest/meta-data/public-ipv4)/\" /etc/sensu/conf.d/client.json\n",
      "sed -i \"s/this_ip/$(hostname -i)/\" /etc/sensu/conf.d/client.json\n",
      "sed -i \"s/this_role/${APP_TYPE,,}/\" /etc/sensu/conf.d/client.json\n",

您也可以将内部IP用于主机名/ IP的外部IP,也可以使用外部IP,您可以看到上述两个示例...

对于Shutdown,我使用一个简单的/etc/rc0.d/S01Instance_Termination脚本,该脚本从/etc/init.d/instance_termination进行符号链接,运行类似的curl,以便在实例关闭时将其自身从主机中删除:

http://pastebin.com/6He1mQTH