Amazon CloudFormation:如何获取特定子网的 ELB 私有 IP?

Cra*_*son 4 amazon-ec2 amazon-web-services amazon-elb amazon-cloudformation

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


我们在 Amazon VPC 中拥有一组 EC2 Web 服务器,其中有六个子网,一个私有的和一个公共的,跨越 EU-West-1 的三个可用区中的每一个。所有服务器都配置了 CloudFormation。

我们想配置 Apache 的 mod_rpaf 来记录X-Forwarded-For标题(我们可以更改 LogFormat,但这并不容易转换为 PHP 或 Apache 错误日志;RPAF 对我们来说是最好的解决方案)。

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

Ubuntu 12.04 存储库中的 mod_rpaf 版本似乎尚未更新以允许该ProxyIPS指令使用 CIDR 表示法,并且理论上 ELB 的 IP 地址可以是我们三个公共子网中的任何地址。

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

小智 36

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

aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB LAMP-Prod" |grep -wE 'Description|PrivateIpAddress'
Run Code Online (Sandbox Code Playgroud)

或者使用 JQ 而无需指定 ELB 名称

 aws ec2 describe-network-interfaces --filters Name=requester-id,Values='amazon-elb' | jq -r '.NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress'
Run Code Online (Sandbox Code Playgroud)

  • 除了它帮助我,谁在谷歌搜索“ELB 私有 IP”。 (22认同)
  • 原作者低估了这个解决方案与他的“要求”不 100% 兼容......然后选择了一个提到报废日志文件的解决方案......去图...... (2认同)

小智 9

如果您想获取 elb 的私有 IP 地址,请在您的 ec2 仪表板中检查网络和安全性下的网络接口。


小智 7

JQ 解析版本,仅供参考。

aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB your-elb-name" --output json | jq ".NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress"
Run Code Online (Sandbox Code Playgroud)


Jas*_*oyd 5

不幸的是没有。我已经在这方面与我们的 AWS 解决方案工程师来回交流,目前无法查询 ELB 的内部 IP。我目前正在抓取日志文件以找到它们。