亚马逊CloudFormation:如何获得一个特定子网的ELB的私有IP?

TL; DR – CloudFormation模板是否可以将特定ELB的子网特定内部IP地址插入该子网内实例的UserData中?


我们在亚马逊VPC拥有一个EC2networking服务器,其中有六个子网,其中一个是私有的,另一个是位于EU-West-1的三个AZ中的一个。 所有的服务器都configuration了CloudFormation。

我们希望configurationApache的mod_rpaf来loggingX-Forwarded-For头(我们可以改变LogFormat,但是这并不容易转换成PHP或Apache错误日志; RPAF是我们最好的解决scheme)。

据我所知,ELB的构build方式意味着它在每个configuration的AZ中都有一个“脚”,如果ELB被拆除或重新创build,这可能会改变。

看起来Ubuntu 12.04版本库中的mod_rpaf版本并没有被更新,以允许ProxyIPS指令的CIDR表示,理论上ELB的IP地址可以是我们三个公有子网中的任何东西。

剩下的一个解决scheme是使用由实例的UserData生成的hieradata通过Puppetconfiguration模块。 我知道在某种程度上你可以在CloudFormation模板中插入引用和variables,但是我不确定是否有可能有效地说“给我这个子网中的这个ELB的私有IP地址”

不幸的是, 我已经和我们的AWS解决scheme工程师来回了,目前没有办法查询ELB的内部IP。 我目前正在抓取日志文件来find它们。

我们有同样的问题,下面的命令我用来获取ELB的内部IP“LAMP-Prod”

 aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB LAMP-Prod" |grep -wE 'Description|PrivateIpAddress' 

JQparsing版本,只是FYI。

aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB your-elb-name" | jq ".NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress"

如果您想要获取elb的私有ip地址,请在ec2仪表板中查看networking和安全下的networking接口。 在那里你可以find我想到的一切