Назад | Перейти на главную страницу

Amazon CloudFormation: как получить частный IP-адрес ELB для определенной подсети?

TL; DR - Возможно ли, чтобы шаблон CloudFormation вставлял внутренний IP-адрес подсети определенного ELB в UserData экземпляра в этой подсети?


У нас есть парк веб-серверов EC2 в Amazon VPC с шестью подсетями, одной частной и одной общедоступной в каждой из трех зон доступности в пределах EU-West-1. Все серверы настроены с помощью CloudFormation.

Мы хотели бы настроить Apache mod_rpaf для регистрации X-Forwarded-For заголовок (мы можем изменить LogFormat, но это нелегко перевести в журналы ошибок PHP или Apache; RPAF - лучшее решение для нас).

Насколько мне известно, архитектура ELB означает, что у нее есть «опора» в каждой из настроенных зон доступности, и это может измениться, если ELB будет снесен или воссоздан заново.

Похоже, что версия mod_rpaf в репозиториях Ubuntu 12.04 не была обновлена, чтобы разрешить нотацию CIDR для ProxyIPS Директива, и теоретически IP-адрес ELB может быть любым в наших трех общедоступных подсетях.

Остается одно решение - настроить модуль через Puppet, используя hieradata, сгенерированные UserData экземпляра. Я знаю, что до некоторой степени вы можете интерполировать ссылки и переменные в шаблонах CloudFormation, но я не уверен, можно ли эффективно сказать «Дайте мне частный IP-адрес для этого ELB в этой подсети».

У нас была такая же проблема, команда ниже, которую я использую для получения внутреннего IP-адреса ELB "LAMP-Prod"

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'

Если вы хотите получить частный IP-адрес elb, проверьте сетевые интерфейсы в разделе сеть и безопасность на панели инструментов ec2.

Версия парсинга JQ, просто к сведению.

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

К сожалению нет. Я обсуждал это с нашим инженером по решениям AWS, и в настоящее время нет возможности запросить внутренние IP-адреса для ELB. В настоящее время я просматриваю файлы журналов, чтобы найти их.