Amazon-Ec2
Amazon CloudFormation:如何獲取特定子網的 ELB 私有 IP?
TL;DR - CloudFormation 模板是否可以將特定 ELB 的子網特定內部 IP 地址插入該子網內實例的 UserData?
我們在一個 Amazon VPC 中有一組 EC2 Web 伺服器,在 EU-West-1 內的三個 AZ 中的每一個都有六個子網、一個私有子網和一個公共子網。所有伺服器都配置了 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 地址”**。
不幸的是沒有。我已經與我們的 AWS 解決方案工程師在這方面反复討論,目前無法查詢 ELB 的內部 IP。我目前正在抓取日誌文件以找到它們。
我們遇到了同樣的問題,下面的命令我用來獲取 ELB“LAMP-Prod”的內部 IP
aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB LAMP-Prod" |grep -wE 'Description|PrivateIpAddress'
或者使用 JQ 而無需指定 ELB 名稱
aws ec2 describe-network-interfaces --filters Name=requester-id,Values='amazon-elb' | jq -r '.NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress'