【问题标题】:AWS get active Public IP's of AutoScaling GroupAWS 获取 AutoScaling 组的活动公共 IP
【发布时间】:2015-03-14 12:53:32
【问题描述】:
我正在使用带有自动缩放功能的 node.js 和 AWS。最好使用 javascript SDK 解决方案,但此时我会采取任何措施。
我希望这非常容易做到,而且我只是个白痴,但是如何获取正在进行扩展事件的实例的公共 IP 地址呢?
我正在尝试在特定应用程序层中保留活动公共 IP 的列表,以便我可以绕过 ELB 进行 websocket 连接,但我无法弄清楚如何以编程方式获取刚刚拥有的实例的公共 IP 地址已添加/删除。
【问题讨论】:
标签:
node.js
amazon-web-services
amazon-ec2
autoscaling
【解决方案1】:
对于我和 Sensu 客户端配置,我在基础 AMI 中为我的实例添加了一个基本的 sensu 客户端配置,其中包含“this_hostname”、“this_ip”和“this_role”。然后,我只需在我的 cloudformation user_data 脚本中添加一些简单的 sed,它们会在实例启动时卷曲公共 ip 的 aws 端点。每个 cloudformation 脚本在我的 sed 行之前在同一个 user_data 脚本中设置/导出 APP_TYPE(downcased),因此我将其重用为 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,您可以在其中看到上述两者的示例...
对于 Shutdown,我使用了一个简单的 /etc/rc0.d/S01Instance_Termination 脚本,该脚本从 /etc/init.d/instance_termination 进行符号链接,该脚本运行类似的 curl 以在实例关闭时将自身从主机中删除:
http://pastebin.com/6He1mQTH